1;; ======================================================================== ;;
2;;  Graphics for 'Tank'.                                                    ;;
3;; ======================================================================== ;;
4
5
6; Here's what the ugly tank looks like, roughly.  It is composed of 3 MOBs
7; to get 3 different colors.  The mobs will be displayed half-height.
8; Two of the MOBs will be 8x16, and one will be 8x8.  This will allow the
9; turret MOB to also provide some color to the tank treads.
10;
11;     0   1   2   3   4   5   6   7
12;   :   :   :   :   :   :   :   :   :
13; 0 :   :   :   :   :   :   :   :   :
14; 1 :   :   :   :   :   :   :   :   :
15; 2 :   :   :   :   :   :   :   :   :
16; 3 :   :   :   :   :   :   :   :   :
17; 4 :   :   :   :   :   :   :   :   :
18; 5 :   :   :   :   :   :   :   :   :
19; 6 :   :   ########:   :   :   :   :
20; 7 :   :   ########************:   :
21; 8 :   :   ########:   :   :   :   :
22; 9 :   ####################:   :   :
23;10 ################################:
24;11 ################################:
25;12 ############################:   :
26;13 :   ****++++++++****++++:   :   :
27;14 :   ++++############++++:   :   :
28;15 :   ++++****++++++++****:   :   :
29;   :   :   :   :   :   :   :   :   :
30;
31
32
33;; ======================================================================== ;;
34;;  GFX_DATA:  The actual graphics data.                                    ;;
35;; ======================================================================== ;;
36GFX_DATA    PROC
37            ;; ------------------------------------------------------------ ;;
38            ;;  Tank graphics.                                              ;;
39            ;; ------------------------------------------------------------ ;;
40
41@@tbody:    ;; Tank body.
42            gfx_start  ;01234567;
43            gfx_row    "........"   ; 0
44            gfx_row    "........"   ; 1
45            gfx_row    "........"   ; 2
46            gfx_row    "........"   ; 3
47            gfx_row    "........"   ; 4
48            gfx_row    "........"   ; 5
49            gfx_row    "..##...."   ; 6
50            gfx_row    "..##...."   ; 7
51            gfx_row    "..##...."   ; 8
52            gfx_row    ".#####.."   ; 9
53            gfx_row    "########"   ; 10
54            gfx_row    "########"   ; 11
55            gfx_row    "#######."   ; 12
56            gfx_row    ".#####.."   ; 13
57            gfx_row    ".#####.."   ; 14
58            gfx_row    ".#####.."   ; 15
59            gfx_flush  ;01234567;
60
61@@tread0:   ;; Tank tread, position 0
62            gfx_start  ;01234567;
63            gfx_row    "........"   ; 8
64            gfx_row    "........"   ; 9
65            gfx_row    "........"   ; 10
66            gfx_row    "........"   ; 11
67            gfx_row    "........"   ; 12
68            gfx_row    "..++.+.."   ; 13
69            gfx_row    ".+...+.."   ; 14
70            gfx_row    ".+.++..."   ; 15
71            gfx_flush  ;01234567;
72
73@@tread1:   ;; Tank tread, position 1
74            gfx_start  ;01234567;
75            gfx_row    "........"   ; 8
76            gfx_row    "........"   ; 9
77            gfx_row    "........"   ; 10
78            gfx_row    "........"   ; 11
79            gfx_row    "........"   ; 12
80            gfx_row    ".+.++..."   ; 13
81            gfx_row    ".+...+.."   ; 14
82            gfx_row    "..++.+.."   ; 15
83            gfx_flush  ;01234567;
84
85@@tread2:   ;; Tank tread, position 2
86            gfx_start  ;01234567;
87            gfx_row    "........"   ; 8
88            gfx_row    "........"   ; 9
89            gfx_row    "........"   ; 10
90            gfx_row    "........"   ; 11
91            gfx_row    "........"   ; 12
92            gfx_row    ".++.++.."   ; 13
93            gfx_row    "........"   ; 14
94            gfx_row    ".++.++.."   ; 15
95            gfx_flush  ;01234567;
96
97            ;; ------------------------------------------------------------ ;;
98            ;;  The turret graphic pictures are cut into two sets.  Rows    ;;
99            ;;  0..7 form the upper half, and change based on the current   ;;
100            ;;  aiming of the tank.  Rows 8..15 form the bottom half, and   ;;
101            ;;  remain fixed.  The lower rows add color to the tank treads. ;;
102            ;; ------------------------------------------------------------ ;;
103
104@@turbot:   ;; Turret graphic, bottom half
105            gfx_start  ;01234567;
106            gfx_row    "........"   ; 8
107            gfx_row    "........"   ; 9
108            gfx_row    "........"   ; 10
109            gfx_row    "........"   ; 11
110            gfx_row    "........"   ; 12
111            gfx_row    ".*****.."   ; 13
112            gfx_row    ".*...*.."   ; 14
113            gfx_row    ".*****.."   ; 15
114            gfx_flush  ;01234567;
115
116
117            ; 0 degrees
118            ;
119            ;     0   1   2   3   4   5   6   7
120            ;   :   :   :   :   :   :   :   :   :
121            ; 0 :   :   :   :   :   :   :   :   :
122            ; 1 :   :   :   :   :   :   :   :   :
123            ; 2 :   :   :   :   :   :   :   :   :
124            ; 3 :   :   :   :   :   :   :   :   :
125            ; 4 :   :   :   :   :   :   :   :   :
126            ; 5 :   :   :   :   :   :   :   :   :
127            ; 6 :   :   ########:   :   :   :   :
128            ; 7 :   :   ########************:   :
129            ; 8 :   :   ########:   :   :   :   :
130            ; 9 :   ####################:   :   :
131            ;10 ################################:
132            ;11 ################################:
133            ;12 ############################:   :
134            ;13 :   ****++++++++****++++:   :   :
135            ;14 :   ++++############++++:   :   :
136            ;15 :   ++++****++++++++****:   :   :
137            ;   :   :   :   :   :   :   :   :   :
138
139@@tur0:     ;; Turret graphic, upper half, 0 degrees (horizontal)
140            gfx_start  ;01234567;
141            gfx_row    "........"   ; 0
142            gfx_row    "........"   ; 1
143            gfx_row    "........"   ; 2
144            gfx_row    "........"   ; 3
145            gfx_row    "........"   ; 4
146            gfx_row    "........"   ; 5
147            gfx_row    "........"   ; 6
148            gfx_row    "....***."   ; 7
149            gfx_flush  ;01234567;
150
151
152            ; 8.1 degrees
153            ;
154            ;     0   1   2   3   4   5   6   7
155            ;   :   :   :   :   :   :   :   :   :
156            ; 0 :   :   :   :   :   :   :   :   :
157            ; 1 :   :   :   :   :   :   :   :   :
158            ; 2 :   :   :   :   :   :   :   :   :
159            ; 3 :   :   :   :   :   :   :   :   :
160            ; 4 :   :   :   :   :   :   :   :   :
161            ; 5 :   :   :   :   :   :   :   :   :
162            ; 6 :   :   ########:   ********:   :
163            ; 7 :   :   ########****:   :   :   :
164            ; 8 :   :   ########:   :   :   :   :
165            ; 9 :   ####################:   :   :
166            ;10 ################################:
167            ;11 ################################:
168            ;12 ############################:   :
169            ;13 :   ****++++++++****++++:   :   :
170            ;14 :   ++++############++++:   :   :
171            ;15 :   ++++****++++++++****:   :   :
172            ;   :   :   :   :   :   :   :   :   :
173
174@@tur1:     ;; Turret graphic, upper half, 7 degrees
175            gfx_start   ;01234567;
176            gfx_row     "........"  ; 0
177            gfx_row     "........"  ; 1
178            gfx_row     "........"  ; 2
179            gfx_row     "........"  ; 3
180            gfx_row     "........"  ; 4
181            gfx_row     "........"  ; 5
182            gfx_row     ".....**."  ; 6
183            gfx_row     "....*..."  ; 7
184            gfx_flush   ;01234567;
185
186            ; 23 degrees
187            ;
188            ;     0   1   2   3   4   5   6   7
189            ;   :   :   :   :   :   :   :   :   :
190            ; 0 :   :   :   :   :   :   :   :   :
191            ; 1 :   :   :   :   :   :   :   :   :
192            ; 2 :   :   :   :   :   :   :   :   :
193            ; 3 :   :   :   :   :   :   :   :   :
194            ; 4 :   :   :   :   :   :   ****:   :
195            ; 5 :   :   :   :   :   ****:   :   :
196            ; 6 :   :   ########****:   :   :   :
197            ; 7 :   :   ########:   :   :   :   :
198            ; 8 :   :   ########:   :   :   :   :
199            ; 9 :   ####################:   :   :
200            ;10 ################################:
201            ;11 ################################:
202            ;12 ############################:   :
203            ;13 :   ****++++++++****++++:   :   :
204            ;14 :   ++++############++++:   :   :
205            ;15 :   ++++****++++++++****:   :   :
206            ;   :   :   :   :   :   :   :   :   :
207
208@@tur2:     ;; Turret graphic, upper half, 20 degrees
209            gfx_start   ;01234567;
210            gfx_row     "........"  ; 0
211            gfx_row     "........"  ; 1
212            gfx_row     "........"  ; 2
213            gfx_row     "........"  ; 3
214            gfx_row     "......*."  ; 4
215            gfx_row     ".....*.."  ; 5
216            gfx_row     "....*..."  ; 6
217            gfx_row     "........"  ; 7
218            gfx_flush   ;01234567;
219
220
221            ; 39 degrees
222            ;
223            ;     0   1   2   3   4   5   6   7
224            ;   :   :   :   :   :   :   :   :   :
225            ; 0 :   :   :   :   :   :   :   :   :
226            ; 1 :   :   :   :   :   :   :   :   :
227            ; 2 :   :   :   :   :   ****:   :   :
228            ; 3 :   :   :   :   :   ****:   :   :
229            ; 4 :   :   :   :   ****:   :   :   :
230            ; 5 :   :   :   :   ****:   :   :   :
231            ; 6 :   :   ########:   :   :   :   :
232            ; 7 :   :   ########:   :   :   :   :
233            ; 8 :   :   ########:   :   :   :   :
234            ; 9 :   ####################:   :   :
235            ;10 ################################:
236            ;11 ################################:
237            ;12 ############################:   :
238            ;13 :   ****++++++++****++++:   :   :
239            ;14 :   ++++############++++:   :   :
240            ;15 :   ++++****++++++++****:   :   :
241            ;   :   :   :   :   :   :   :   :   :
242
243@@tur3:     ;; Turret graphic, upper half, 39 degrees
244            gfx_start   ;01234567;
245            gfx_row     "........"  ; 0
246            gfx_row     "........"  ; 1
247            gfx_row     ".....*.."  ; 2
248            gfx_row     ".....*.."  ; 3
249            gfx_row     "....*..."  ; 4
250            gfx_row     "....*..."  ; 5
251            gfx_row     "........"  ; 6
252            gfx_row     "........"  ; 7
253            gfx_flush   ;01234567;
254
255
256            ;
257            ; 60 degrees
258            ;
259            ;     0   1   2   3   4   5   6   7
260            ;   :   :   :   :   :   :   :   :   :
261            ; 0 :   :   :   :   :   :   :   :   :
262            ; 1 :   :   :   :   ****:   :   :   :
263            ; 2 :   :   :   :   ****:   :   :   :
264            ; 3 :   :   :   ********:   :   :   :
265            ; 4 :   :   :   ****:   :   :   :   :
266            ; 5 :   :   :   ****:   :   :   :   :
267            ; 6 :   :   ########:   :   :   :   :
268            ; 7 :   :   ########:   :   :   :   :
269            ; 8 :   :   ########:   :   :   :   :
270            ; 9 :   ####################:   :   :
271            ;10 ################################:
272            ;11 ################################:
273            ;12 ############################:   :
274            ;13 :   ****++++++++****++++:   :   :
275            ;14 :   ++++############++++:   :   :
276            ;15 :   ++++****++++++++****:   :   :
277            ;   :   :   :   :   :   :   :   :   :
278            ;
279
280@@tur4:     ;; Turret graphic, upper half, 60 degrees
281            gfx_start   ;01234567;
282            gfx_row     "........"  ; 0
283            gfx_row     "....*..."  ; 1
284            gfx_row     "....*..."  ; 2
285            gfx_row     "...**..."  ; 3
286            gfx_row     "...*...."  ; 4
287            gfx_row     "...*...."  ; 5
288            gfx_row     "........"  ; 6
289            gfx_row     "........"  ; 7
290            gfx_flush   ;01234567;
291
292            ;
293            ; 75 degrees
294            ;
295            ;     0   1   2   3   4   5   6   7
296            ;   :   :   :   :   :   :   :   :   :
297            ; 0 :   :   :   :   ****:   :   :   :
298            ; 1 :   :   :   :   ****:   :   :   :
299            ; 2 :   :   :   ********:   :   :   :
300            ; 3 :   :   :   ****;   :   :   :   :
301            ; 4 :   :   :   ****:   :   :   :   :
302            ; 5 :   :   :   ****:   :   :   :   :
303            ; 6 :   :   ########:   :   :   :   :
304            ; 7 :   :   ########:   :   :   :   :
305            ; 8 :   :   ########:   :   :   :   :
306            ; 9 :   ####################:   :   :
307            ;10 ################################:
308            ;11 ################################:
309            ;12 ############################:   :
310            ;13 :   ****++++++++****++++:   :   :
311            ;14 :   ++++############++++:   :   :
312            ;15 :   ++++****++++++++****:   :   :
313            ;   :   :   :   :   :   :   :   :   :
314            ;
315
316@@tur5:     ;; Turret graphic, upper half, 75 degrees
317            gfx_start   ;01234567;
318            gfx_row     "....*..."  ; 0
319            gfx_row     "....*..."  ; 1
320            gfx_row     "...**..."  ; 2
321            gfx_row     "...*...."  ; 3
322            gfx_row     "...*...."  ; 4
323            gfx_row     "...*...."  ; 5
324            gfx_row     "........"  ; 6
325            gfx_row     "........"  ; 7
326            gfx_flush   ;01234567;
327
328
329            ;
330            ;
331            ; 90 degrees
332            ;
333            ;     0   1   2   3   4   5   6   7
334            ;   :   :   :   :   :   :   :   :   :
335            ; 0 :   :   :   ****:   :   :   :   :
336            ; 1 :   :   :   ****:   :   :   :   :
337            ; 2 :   :   :   ****:   :   :   :   :
338            ; 3 :   :   :   ****:   :   :   :   :
339            ; 4 :   :   :   ****:   :   :   :   :
340            ; 5 :   :   :   ****:   :   :   :   :
341            ; 6 :   :   ########:   :   :   :   :
342            ; 7 :   :   ########:   :   :   :   :
343            ; 8 :   :   ########:   :   :   :   :
344            ; 9 :   ####################:   :   :
345            ;10 ################################:
346            ;11 ################################:
347            ;12 ############################:   :
348            ;13 :   ****++++++++****++++:   :   :
349            ;14 :   ++++############++++:   :   :
350            ;15 :   ++++****++++++++****:   :   :
351            ;   :   :   :   :   :   :   :   :   :
352
353@@tur6:     ;; Turret graphic, upper half, 90 degrees
354            gfx_start   ;01234567;
355            gfx_row     "...*...."  ; 0
356            gfx_row     "...*...."  ; 1
357            gfx_row     "...*...."  ; 2
358            gfx_row     "...*...."  ; 3
359            gfx_row     "...*...."  ; 4
360            gfx_row     "...*...."  ; 5
361            gfx_row     "........"  ; 6
362            gfx_row     "........"  ; 7
363            gfx_flush   ;01234567;
364
365
366            ;; ------------------------------------------------------------ ;;
367            ;;  Miscellaneous other graphics.                               ;;
368            ;; ------------------------------------------------------------ ;;
369
370@@exp0:     ;; Frame 0 of an explosion.  Explosions are normal res 8x8 MOBs.
371
372            gfx_start   ;01234567;
373            gfx_row     "........"  ; 0
374            gfx_row     "........"  ; 1
375            gfx_row     "........"  ; 2
376            gfx_row     "........"  ; 3
377            gfx_row     "........"  ; 4
378            gfx_row     "........"  ; 5
379            gfx_row     "........"  ; 6
380            gfx_row     "...##..."  ; 7
381            gfx_flush   ;01234567;
382
383@@exp1:     ;; Frame 1 of an explosion.
384
385            gfx_start   ;01234567;
386            gfx_row     "........"  ; 0
387            gfx_row     "........"  ; 1
388            gfx_row     "........"  ; 2
389            gfx_row     "........"  ; 3
390            gfx_row     "........"  ; 4
391            gfx_row     "........"  ; 5
392            gfx_row     "...##..."  ; 6
393            gfx_row     "..####.."  ; 7
394            gfx_flush   ;01234567;
395
396@@exp2:     ;; Frame 2 of an explosion.
397
398            gfx_start   ;01234567;
399            gfx_row     "........"  ; 0
400            gfx_row     "........"  ; 1
401            gfx_row     "........"  ; 2
402            gfx_row     "........"  ; 3
403            gfx_row     "........"  ; 4
404            gfx_row     "..####.."  ; 5
405            gfx_row     ".######."  ; 6
406            gfx_row     "..#..#.."  ; 7
407            gfx_flush   ;01234567;
408
409@@exp3:     ;; Frame 3 of an explosion.
410
411            gfx_start   ;01234567;
412            gfx_row     "........"  ; 0
413            gfx_row     "........"  ; 1
414            gfx_row     "........"  ; 2
415            gfx_row     "........"  ; 3
416            gfx_row     "..####.."  ; 4
417            gfx_row     ".######."  ; 5
418            gfx_row     ".##..##."  ; 6
419            gfx_row     "..####.."  ; 7
420            gfx_flush   ;01234567;
421
422@@exp4:     ;; Frame 4 of an explosion.
423
424            gfx_start   ;01234567;
425            gfx_row     "........"  ; 0
426            gfx_row     "........"  ; 1
427            gfx_row     "........"  ; 2
428            gfx_row     ".#.##.#."  ; 3
429            gfx_row     "#.####.#"  ; 4
430            gfx_row     ".##..##."  ; 5
431            gfx_row     ".######."  ; 6
432            gfx_row     "..#..#.."  ; 7
433            gfx_flush   ;01234567;
434
435@@exp5:     ;; Frame 5 of an explosion.
436
437            gfx_start   ;01234567;
438            gfx_row     "........"  ; 0
439            gfx_row     "........"  ; 1
440            gfx_row     "..#..#.."  ; 2
441            gfx_row     "#......#"  ; 3
442            gfx_row     "..####.."  ; 4
443            gfx_row     ".##..##."  ; 5
444            gfx_row     ".#....#."  ; 6
445            gfx_row     "........"  ; 7
446            gfx_flush   ;01234567;
447
448@@exp6:     ;; Frame 6 of an explosion.
449
450            gfx_start   ;01234567;
451            gfx_row     "........"  ; 0
452            gfx_row     "........"  ; 1
453            gfx_row     "...##..."  ; 2
454            gfx_row     ".#....#."  ; 3
455            gfx_row     "........"  ; 4
456            gfx_row     "#......#"  ; 5
457            gfx_row     "........"  ; 6
458            gfx_row     "........"  ; 7
459            gfx_flush   ;01234567;
460
461@@exp7:     ;; Frame 7 of an explosion.
462
463            gfx_start   ;01234567;
464            gfx_row     "........"  ; 0
465            gfx_row     "........"  ; 1
466            gfx_row     "..#..#.."  ; 2
467            gfx_row     "#......#"  ; 3
468            gfx_row     "........"  ; 4
469            gfx_row     "........"  ; 5
470            gfx_row     "........"  ; 6
471            gfx_row     "........"  ; 7
472            gfx_flush   ;01234567;
473
474
475@@bullet:   ;; This is the projectile we'll be firing.  For now it is an
476            ;; uninspiring dot.
477            gfx_start   ;01234567;
478            gfx_row     "........"  ; 0
479            gfx_row     "........"  ; 1
480            gfx_row     "........"  ; 2
481            gfx_row     "........"  ; 3
482            gfx_row     "........"  ; 4
483            gfx_row     "........"  ; 5
484            gfx_row     "........"  ; 6
485            gfx_row     ".......#"  ; 7
486            gfx_flush   ;01234567;
487
488
489@@gram_img: ;; These cards are loaded in the beginning of GRAM at the
490            ;; start of the game
491
492
493            ; degrees symbol.  Loaded in GRAM #0
494@@degsym:
495            gfx_start   ;01234567;
496            gfx_row     ".###...."
497            gfx_row     ".#.#...."
498            gfx_row     ".###...."
499            gfx_row     "........"
500            gfx_row     "........"
501            gfx_row     "........"
502            gfx_row     "........"
503            gfx_flush
504
505            ; horizontal bar.  This forms the top edge of status row.
506@@st_bar:
507            gfx_start   ;01234567;
508            gfx_row     "........"
509            gfx_row     "........"
510            gfx_row     "........"
511            gfx_row     "........"
512            gfx_row     "........"
513            gfx_row     "........"
514            gfx_row     "........"
515            gfx_row     "########"
516            gfx_flush
517
518@@gram_end
519            ENDP
520
521
522;; ======================================================================== ;;
523;;  GFX:  Short-hand names for referring to individual pictures in above.   ;;
524;;        These labels are integer picture numbers that fit in 8-bit mem.   ;;
525;; ======================================================================== ;;
526GFX         PROC
527@@tbody     EQU     (GFX_DATA.tbody  - GFX_DATA) / 4
528@@tread0    EQU     (GFX_DATA.tread0 - GFX_DATA) / 4
529@@tread1    EQU     (GFX_DATA.tread1 - GFX_DATA) / 4
530@@tread2    EQU     (GFX_DATA.tread2 - GFX_DATA) / 4
531@@turbot    EQU     (GFX_DATA.turbot - GFX_DATA) / 4
532@@tur0      EQU     (GFX_DATA.tur0   - GFX_DATA) / 4
533@@tur1      EQU     (GFX_DATA.tur1   - GFX_DATA) / 4
534@@tur2      EQU     (GFX_DATA.tur2   - GFX_DATA) / 4
535@@tur3      EQU     (GFX_DATA.tur3   - GFX_DATA) / 4
536@@tur4      EQU     (GFX_DATA.tur4   - GFX_DATA) / 4
537@@tur5      EQU     (GFX_DATA.tur5   - GFX_DATA) / 4
538@@tur6      EQU     (GFX_DATA.tur6   - GFX_DATA) / 4
539@@exp0      EQU     (GFX_DATA.exp0   - GFX_DATA) / 4
540@@exp1      EQU     (GFX_DATA.exp1   - GFX_DATA) / 4
541@@exp2      EQU     (GFX_DATA.exp2   - GFX_DATA) / 4
542@@exp3      EQU     (GFX_DATA.exp3   - GFX_DATA) / 4
543@@exp4      EQU     (GFX_DATA.exp4   - GFX_DATA) / 4
544@@exp5      EQU     (GFX_DATA.exp5   - GFX_DATA) / 4
545@@exp6      EQU     (GFX_DATA.exp6   - GFX_DATA) / 4
546@@exp7      EQU     (GFX_DATA.exp7   - GFX_DATA) / 4
547@@bullet    EQU     (GFX_DATA.bullet - GFX_DATA) / 4
548
549@@none      EQU     $80
550
551@@gram_size EQU     GFX_DATA.gram_end - GFX_DATA.gram_img
552
553@@degsym    EQU     (GFX_DATA.degsym - GFX_DATA.gram_img) / 4
554@@st_bar    EQU     (GFX_DATA.st_bar - GFX_DATA.gram_img) / 4
555
556            ENDP
557