aboutsummaryrefslogtreecommitdiff
path: root/lib/cpcrslib/TileMap.h
blob: 6240badde101e29dada3070558b30ca538694eba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
.globl _tiles
.globl _pantalla_juego
.globl _tiles_tocados
.globl _posiciones_pantalla
.globl _posiciones_super_buffer
.globl _tabla_y_ancho_pantalla


;.globl _posicion_inicial_area_visible
;.globl _posicion_inicial_superbuffer
;.globl _ancho_pantalla_bytes
;.globl _alto_pantalla_bytes
;.globl _ancho_pantalla_bytes_visible


; ***************************************************
; Transparent colour for cpc_PutTrSpTileMap2b routine
;.globl _mascara1
;.globl _mascara2
; ***************************************************

;.globl _tiles_ocultos_ancho0
;.globl _tiles_ocultos_alto0
;.globl _tiles_ocultos_ancho1
;.globl _tiles_ocultos_alto1


;.globl _posicion_inicio_pantalla_visible
;.globl _posicion_inicio_pantalla_visible_sb



;.globl _tile
; ***************************************************
; Scroll Left Addresses column
; not requiered if scroll not used
.globl _ColumnScr
; ***************************************************


; ***************************************************
; Transparent colour for cpc_PutTrSpTileMap2b routine
; For printing sprites using transparent color (mode 0) transparent color selection is requiered.
; Seleccin color transparente. Escribir las 2 mscaras que correspondan al color elegido.
;Example colour number 7:
mascara1 	= 	#0
mascara2 	= 	#0


;0: #0x00, #0x00
;1: #0x80, #0x40
;2: #0x04, #0x08
;3: #0x44, #0x88
;4: #0x10, #0x20
;5: #0x50, #0xA0
;6: #0x14, #0x28
;7: #0x54, #0xA8
;8: #0x01, #0x02
;9: #0x41, #0x82
;10: #0x05, #0x0A
;11: #0x45, #0x8A
;12: #0x11, #0x22
;13: #0x51, #0xA2
;14: #0x15, #0x2A
;15: #0x55, #0xAA
; ***************************************************




;------------------------------------------------------------------------------------
; SCREEN AND BUFFER ADDRESSES
; VALORES QUE DEFINEN EL BUFFER Y LA PANTALLA
;------------------------------------------------------------------------------------

posicion_inicial_area_visible = #0xc0A4
posicion_inicial_superbuffer = #0x100


;------------------------------------------------------------------------------------

;------------------------------------------------------------------------------------
; TILE MAP DIMENSIONS
;------------------------------------------------------------------------------------

T_WIDTH = 32 			;max=40		;dimensiones de la pantalla en tiles
T_HEIGHT = 16			;max=20


;Invisible tile margins:
T_WH = 2
T_HH = 0
;------------------------------------------------------------------------------------


tiles_ocultos_ancho0 = T_WH
tiles_ocultos_alto0 = T_HH
tiles_ocultos_ancho1 = T_WIDTH - T_WH - 1
tiles_ocultos_alto1 = T_HEIGHT - T_HH - 1

;------------------------------------------------------------------------------------
; Other parameters (internal use)
;------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------

ancho_pantalla_bytes = 2*T_WIDTH ; 2*T_WIDTH;		; El ancho de pantalla influye determinantemente en numerosas rutinas que hay que actualizar si se cambia
											; OJO con el modo
alto_pantalla_bytes = 8*T_HEIGHT;
ancho_pantalla_bytes_visible = 2*T_WIDTH ;32  ; 64;		;dentro del area definida, cuanto se debe mostrar. 2*T_WIDTH

;El tamao del buffer es ancho_pantalla_bytes*alto_pantalla_bytes

_TileMapConf:
;------------------------------------------------------------------------------------
;Con la definicin del mapeado hay que tener en cuenta que las coordenadas son:
;ANCHO=64 bytes (128 pixels en modo 0)
;ALTO=128 pixels
;el mximo que entra en el CPC es 20 lneas
;SI NO SE VAN A USAR TODAS LAS LINEAS, PARA AHORRA MEMORIA ES INTERESANTE COMENTARLAS
_posiciones_pantalla:		;Posiciones en las que se dibujan los tiles
.DW #posicion_inicial_area_visible+#0x50*0
.DW #posicion_inicial_area_visible+#0x50*1
.DW #posicion_inicial_area_visible+#0x50*2
.DW #posicion_inicial_area_visible+#0x50*3
.DW #posicion_inicial_area_visible+#0x50*4
.DW #posicion_inicial_area_visible+#0x50*5
.DW #posicion_inicial_area_visible+#0x50*6
.DW #posicion_inicial_area_visible+#0x50*7
.DW #posicion_inicial_area_visible+#0x50*8
.DW #posicion_inicial_area_visible+#0x50*9
.DW #posicion_inicial_area_visible+#0x50*10
.DW #posicion_inicial_area_visible+#0x50*11
.DW #posicion_inicial_area_visible+#0x50*12
.DW #posicion_inicial_area_visible+#0x50*13
.DW #posicion_inicial_area_visible+#0x50*14
.DW #posicion_inicial_area_visible+#0x50*15
.DW #posicion_inicial_area_visible+#0x50*16
.DW #posicion_inicial_area_visible+#0x50*17
.DW #posicion_inicial_area_visible+#0x50*18
.DW #posicion_inicial_area_visible+#0x50*19

_posiciones_super_buffer:			;muestra el inicio de cada lnea (son 10 tiles de 8x16 de alto)
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*0
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*1
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*2
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*3
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*4
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*5
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*6
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*7
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*8
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*9
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*10
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*11
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*12
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*13
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*14
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*15
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*16
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*17
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*18
.DW #posicion_inicial_superbuffer+8*ancho_pantalla_bytes*19




; ***************************************************
; Scroll Left Addresses column. DECRAPTED
; not requiered if scroll not used comment it ;)
_ColumnScr:
; ***************************************************


_pantalla_actual: .DW #0
_pantalla_juego:  ;en tiles
;defs T_WIDTH*T_HEIGHT
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0,#0
.DB #0xFF	;Este byte es importante, marca el fin de la pantalla.


_fondo_pantalla_juego:  ;en tiles
;defs T_WIDTH*T_HEIGHT
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#13,#14,#17,#13,#14,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#15,#16,#17,#15,#16,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17
.DB #17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17,#17


_tiles_tocados:
.DB #0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF
.DB #0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF
.DB #0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF
.DB #0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF
.DB #0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF
.DB #0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF
.DB #0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF
.DB #0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF
.DB #0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF
.DB #0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF,#0xFF
 ;defs 150 ;150	;cuando un tile es tocado, se marca en esta tabla para luego restaurarlo. Es una tabla sin duplicados.


_tabla_y_ancho_pantalla:
.dw #_pantalla_juego + #0
.dw #_pantalla_juego + #1*T_WIDTH
.dw #_pantalla_juego + #2*T_WIDTH
.dw #_pantalla_juego + #3*T_WIDTH
.dw #_pantalla_juego + #4*T_WIDTH
.dw #_pantalla_juego + #5*T_WIDTH
.dw #_pantalla_juego + #6*T_WIDTH
.dw #_pantalla_juego + #7*T_WIDTH
.dw #_pantalla_juego + #8*T_WIDTH
.dw #_pantalla_juego + #9*T_WIDTH
.dw #_pantalla_juego + #10*T_WIDTH
.dw #_pantalla_juego + #11*T_WIDTH
.dw #_pantalla_juego + #12*T_WIDTH
.dw #_pantalla_juego + #13*T_WIDTH
.dw #_pantalla_juego + #14*T_WIDTH
.dw #_pantalla_juego + #15*T_WIDTH
.dw #_pantalla_juego + #16*T_WIDTH
.dw #_pantalla_juego + #17*T_WIDTH
.dw #_pantalla_juego + #18*T_WIDTH
.dw #_pantalla_juego + #19*T_WIDTH

;_tabla_y_x_ancho2:
;.dw #ancho_pantalla_bytes * 0 /2
;.dw #ancho_pantalla_bytes * 1 /2
;.dw #ancho_pantalla_bytes * 2 /2
;.dw #ancho_pantalla_bytes * 3 /2
;.dw #ancho_pantalla_bytes * 4 /2
;.dw #ancho_pantalla_bytes * 5 /2
;.dw #ancho_pantalla_bytes * 6 /2
;.dw #ancho_pantalla_bytes * 7 /2
;.dw #ancho_pantalla_bytes * 8 /2
;.dw #ancho_pantalla_bytes * 9 /2
;.dw #ancho_pantalla_bytes * 10 /2
;.dw #ancho_pantalla_bytes * 11 /2
;.dw #ancho_pantalla_bytes * 12 /2
;.dw #ancho_pantalla_bytes * 13 /2
;.dw #ancho_pantalla_bytes * 14 /2
;.dw #ancho_pantalla_bytes * 15 /2
;.dw #ancho_pantalla_bytes * 16 /2
;.dw #ancho_pantalla_bytes * 17 /2
;.dw #ancho_pantalla_bytes * 18 /2
;.dw #ancho_pantalla_bytes * 19 /2


;------------------------------------------------------------------------------------
; TILE DATA. TILES MUST BE DEFINED HERE
;------------------------------------------------------------------------------------


_tiles: ;Son de 2x8 bytes
;tile 0
.db #0x00,#0x00
.db #0x40,#0x00
.db #0x40,#0x00
.db #0x40,#0x00
.db #0x40,#0x00
.db #0x40,#0x00
.db #0x40,#0xC0
.db #0x00,#0x00
;tile 1
.db #0x3C,#0x00
.db #0x3C,#0x00
.db #0x00,#0x3C
.db #0x00,#0x3C
.db #0x3C,#0x00
.db #0x3C,#0x00
.db #0x00,#0x3C
.db #0x00,#0x3C
;tile 2
.db #0x00,#0x00
.db #0x15,#0x00
.db #0x00,#0x2A
.db #0x15,#0x00
.db #0x00,#0x2A
.db #0x15,#0x00
.db #0x00,#0x00
.db #0x00,#0x00