-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
t.lst
21069 lines (21069 loc) · 725 KB
/
t.lst
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
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
mads 2.0.7
Source: t.asm
1 //test duszkow
2 opt h-
3 org $80
4
5 = 0001 NTSC=1
6 = 0028 SZER=40
7
8 //modyfikacje kodu
9 = 0001 BORDER=1
10
11 //stałe
12
13
14 //system
15 = D014 NTSCGTIA equ $D014
16
17 //strona zerowa
18 kanal_audf1 org *+2
19 kanal_audf2 org *+2
20 kanal_audf3 org *+2
21 kanal_audf4 org *+2
22 kanal_audc1 org *+2
23 kanal_audc2 org *+2
24 kanal_audc3 org *+2
25 kanal_audc4 org *+2
26
27
28
29
30 bit012 org *+1
31 bit0 org *+1
32 bit1 org *+1
33 bit2 org *+1
34 bit3 org *+1
35 bit4 org *+1
36 bit5 org *+1
37 bit6 org *+1
38 bit7 org *+1
39 linia org *+2
40 kolor0 org *+1
41 kolor1 org *+1
42 kolor2 org *+1
43 kolor3 org *+1
44
45 fire_delay org *+1
46 strzal_typ org *+1
47 trig0s org *+1
48
49 //przerwania
50 = 0014 frame_counter equ $14 ;systemowy zegar
51 dli_A org *+1
52 dli_X org *+1
53
54 //obsługa obrony computera
55 obrona org *+2
56 bgcol org *+2
57
58 //plansza
59 poziom_bg org *+2
60 obr_adr org *+2
61 obr_adr1 org *+2
62 przesuniecie org *+1
63 pozycja_bg org *+1
64 pozycja_bg1 org *+1
65
66 //siła strzału
67 shot_power org *+1
68
69 //punkty
70 score_add org *+1
71 score org *+3
72 hscore org *+3
73
74 //tymczasowe
75 pom org *+2
76 pom1 org *+2
77 pom0 org *+1
78 pom0a org *+1
79 pom0b org *+1
80 pom0c org *+1
81 pom0d org *+1
82 pom0e org *+1
83
84 przes1 org *+1
85 zestaw org *+1 ;obecny zestaw znakow
86
87 ntscAntic org *+1
88 music org *+1
89 pot0s org *+1
90
91 kolor_samolotu org *+1
92 shield org *+1
93
94 level org *+1
95 level1s org *+2
96 extra_lives org *+1
97
98
99
100 = F800 obraz equ $f800
101 = E800 znaki equ $e800 ;2 zestawy znakow
102 = E000 sprites equ $e000
103 = F800 sprites1 equ obraz ;wykorzystuje 3 ostatnie strony, tylko górę
104
105 = D800 kafel equ $d800 ;1024b
106
107 = DC00 klocki equ $dc00 ;512b
108
109 = DE04 level_color_tab equ $de00+4 ;512b-4 max
110
111
112 = F000 level_enemy_tab equ $f000 ;2048b max
113
114 = CFD0 panel equ $cfd0 ;48 bajtów
115 = CFA0 komunikat equ $cfa0
116 = CF00 config_ad equ $cf00
117 = CF00 max_level equ config_ad
118
119
120 = B000 MODUL1 equ $B000 ;title,endLevel
121 = B800 MODUL equ $B800 ;level_music
122 = A100 MODUL2 equ $A100 ;congratulation A$5D
123 = A45E MODUL3 equ $A45E ;game over A6D2
124
125
126 org $ff27 ;pamięć nie wykorzystywana przez belkę (duszki)
127 def_kolor0 org *+4
128 bonus_nr org *+1
129 bonus_ile org *+1
130 bonus_sprite org *+1
131 energy_max org *+1
132 shot_speed org *+1
133 samolot_speed org *+1
134 licznik_cannon_w org *+1
135 check_row org *+2
136 check_obrona org *+2
137 check_linia org *+2
138 licznik_bufor org *+1
139 licznik_nuta org *+1
140 licznik_nuta1 org *+1
141 prio org *+1
142 big_shoot_start org *+2
143 shot_power0 org *+1
144 special_power org *+1
145 licznik_zmian org *+1
146 licznik_czas org *+1
147 consol_2 org *+1
148 licznik_level org *+1
149 cheat1 org *+1
150
151
152
153 opt h+
154
155
156 org $980
157 load_name
158 FFFF> 0980-0C12> 4C 6F + dta c'Loading game...',b(155)
159 0990 antic_pal_name
160 0990 41 4E 54 49 43 3D + dta c'ANTIC=PAL',b(155)
161 099A antic_ntsc_name
162 099A 41 4E 54 49 43 3D + dta c'ANTIC=NTSC',b(155)
163 09A5 gtia_pal_name
164 09A5 47 54 49 41 3D 50 + dta c'GTIA=PAL',b(155)
165 09AE gtia_ntsc_name
166 09AE 47 54 49 41 3D 4E + dta c'GTIA=NTSC',b(155)
167
168
169 09B8 36 63 63 63 63 63 + tab1 .he 36,63,63,63,63,63,63,36 ;0
170 09C0 0C 1C 3C 0C 0C 0C + .he 0c,1c,3c,0c,0c,0c,0c,3f ;1
171 09C8 3E 63 03 06 18 70 + .he 3e,63,03,06,18,70,73,7f ;2
172 09D0 3E 63 03 0E 03 03 + .he 3e,63,03,0e,03,03,63,3e ;3
173 09D8 06 0E 16 26 7F 06 + .he 06,0e,16,26,7f,06,06,0f ;4
174 09E0 7F 03 60 7E 03 03 + .he 7f,03,60,7e,03,03,63,3e ;5
175 09E8 3E 73 60 7E 63 63 + .he 3e,73,60,7e,63,63,63,3e ;6
176 09F0 7F 63 06 06 0C 0C + .he 7f,63,06,06,0c,0c,0c,0c ;7
177 09F8 3E 63 63 3E 63 63 + .he 3e,63,63,3e,63,63,63,3e ;8
178 0A00 3E 63 63 3F 03 03 + .he 3e,63,63,3f,03,03,63,3e ;9
179
180 0A08 63 63 63 7F 63 63 + .he 63,63,63,7f,63,63,63,63 ;H
181 0A10 3E 63 60 3E 03 03 + .he 3e,63,60,3e,03,03,63,3e ;S
182 0A18 1E 33 60 60 60 61 + .he 1e,33,60,60,60,61,33,1e ;C
183 0A20 3E 73 63 63 63 63 + .he 3e,73,63,63,63,63,67,3e ;O
184 0A28 7E 63 63 7E 6C 66 + .he 7e,63,63,7e,6c,66,63,63 ;R
185 0A30 7F 63 60 7C 60 60 + .he 7f,63,60,7c,60,60,63,7f ;E
186
187 0A38 00 3C 66 6E 76 66 + dta 0,60,102,110,118,102,60,0 ;0 małe
188 0A40 00 18 38 18 18 18 + dta 0,24,56,24,24,24,126,0
189 0A48 00 3C 66 0C 18 30 + dta 0,60,102,12,24,48,126,0
190 0A50 00 7E 0C 18 0C 66 + dta 0,126,12,24,12,102,60,0
191 0A58 00 0C 1C 3C 6C 7E + dta 0,12,28,60,108,126,12,0
192 0A60 00 7E 60 7C 06 66 + dta 0,126,96,124,6,102,60,0
193 0A68 00 3C 60 7C 66 66 + dta 0,60,96,124,102,102,60,0
194 0A70 00 7E 06 0C 18 30 + dta 0,126,6,12,24,48,48,0
195 0A78 00 3C 66 3C 66 66 + dta 0,60,102,60,102,102,60,0
196 0A80 00 3C 66 3E 06 0C + dta 0,60,102,62,6,12,56,0 ;9
197
198 0A88 00 00 00 00 00 00 + .he 00,00,00,00,00,00,00,00 ;spacja
199 0A90 00 18 FF 7E 18 18 + .he 00,18,ff,7e,18,18,3c,00 ;samolocik
200 0A98 00 00 00 14 08 14 + .he 00,00,00,14,08,14,00,00 ;x
201
202 0AA0 00 F0 FC 7F 7F FC + .he 00,f0,fc,7f,7f,fc,f0,00 ;energia
203
204
205 0AA8 60 F0 F0 F0 60 60 + tab3 .he 60,f0,f0,f0,60,60,60
206
207
208
209
210 0AAF 0B 0C 0D 0E 0F 1A + tab2 .he 0b,0c,0d,0e,0f,1a,00,00,00,00,00,00,00,1a,1a,1b,1c,13
211 .if SZER=40
212 0AC1 1A 1A 1D 1D 1D 1A + .he 1a,1a,1d,1d,1d,1a,1a,1a
213 .endif
214 0AC9 0A 0B 0C 0D 0E 0F + .he 0a,0b,0c,0d,0e,0f,1a,00,00,05,00,00,00,00
215
216 0AD7 print_load
217 0AD7 A9 80 85 B9 A9 09 + mwa #load_name pom
218 0ADF 4C E2 0A jmp print
219
220
221 0AE2 print
222 0AE2 A2 00 ldx #0
223 0AE4 A9 09 lda #9 ;print
224 0AE6 9D 42 03 sta $340+2,x
225 0AE9 A5 B9 lda pom ;adres docelowy w (pom)
226 0AEB 9D 44 03 sta $340+4,x
227 0AEE A5 BA lda pom+1
228 0AF0 9D 45 03 sta $340+5,x
229 0AF3 9D 49 03 sta $340+9,x
230 0AF6 20 56 E4 jsr ciov
231
232 0AF9 60 rts
233
234 0AFA ini
235 0AFA A5 14 lda 20
236 0AFC C5 14 @ cmp 20
237 0AFE F0 FC beq @-
238
239 0B00 78 sei
240 0B01 A9 00 lda #0
241 0B03 8D 0E D4 sta nmien ; disable interrupts
242
243 0B06 A2 00 ldx #0
244 0B08 A0 FF 8C 01 D3 @ mvy #$ff portb ;kopiowanie systemowych znaków pod ROM
245 0B0D BD 00 E0 lda $e000,x
246 0B10 48 pha
247 0B11 BD 00 E1 lda $e100,x
248 0B14 48 pha
249 0B15 BD 00 E2 lda $e200,x
250 0B18 48 pha
251 0B19 A0 FE 8C 01 D3 mvy #$fe portb
252 0B1E 68 pla
253 ;eor #$ff
254 0B1F 9D 00 E2 sta sprites+$200,x
255 0B22 68 pla
256 ;eor #$ff
257 0B23 9D 00 E1 sta sprites+$100,x
258 0B26 68 pla
259 ;eor #$ff
260 0B27 9D 00 E0 sta sprites,x
261 0B2A CA dex
262 0B2B D0 DB bne @-
263
264 0B2D A2 F0 ldx #30*8 ;znaki na panelu
265 0B2F BD B7 09 @ lda tab1-1,x
266 0B32 49 FF eor #255
267 0B34 9D FF DF sta sprites-1,x
268 0B37 CA dex
269 0B38 D0 F5 bne @-
270
271 0B3A A9 00 lda #0
272 0B3C A2 26 ldx #$26
273 0B3E 9D 00 FD @ sta sprites1+$500,x ;czyszczenie góry duszka
274 0B41 9D 00 FE sta sprites1+$600,x
275 0B44 9D 00 FF sta sprites1+$700,x
276 0B47 CA dex
277 0B48 10 F4 bpl @-
278
279
280 0B4A A2 06 ldx #6
281 0B4C BD A8 0A @ lda tab3,x ;podkolorowanie belki
282 0B4F 9D 1E FD sta sprites1+$51e,x
283 0B52 CA dex
284 0B53 10 F7 bpl @-
285
286 0B55 A2 27 ldx #SZER-1 ;przygotuj panel
287 0B57 BD AF 0A @ lda tab2,x
288 0B5A 9D D0 CF sta panel,x
289 0B5D CA dex
290 0B5E 10 F7 bpl @-
291
292 0B60 20 BC 0B jsr logo
293
294
295 0B63 A9 FF 8D 01 D3 mva #$ff portb ;wlacz OS
296 0B68 A9 40 8D 0E D4 mva #64 nmien
297 0B6D 58 cli
298
299 0B6E A2 00 ldx #0
300 0B70 AD 0B D4 lda vcount
301 0B73 F0 FB beq *-3
302 0B75 A8 @ tay
303 0B76 AD 0B D4 lda vcount
304 0B79 D0 FA bne @-
305 0B7B C0 84 cpy #$84
306 0B7D B0 02 bcs *+4
307 0B7F A2 04 ldx #4
308 0B81 86 C5 stx ntscAntic ;=0 ->PAL,=4 -> NTSC
309
310 0B83 A9 90 85 B9 A9 09 + mwa #antic_pal_name pom
311 0B8B 8A txa
312 0B8C F0 08 beq @+
313 0B8E A9 9A 85 B9 A9 09 + mwa #antic_ntsc_name pom
314 0B96 20 E2 0A @ jsr print
315
316 0B99 A9 A5 85 B9 A9 09 + mwa #gtia_pal_name pom
317 0BA1 4E 14 D0 lsr NTSCGTIA
318 0BA4 F0 08 beq @+
319 0BA6 A9 AE 85 B9 A9 09 + mwa #gtia_ntsc_name pom
320 0BAE 20 E2 0A @ jsr print
321
322 0BB1 A9 80 85 B9 A9 09 + mwa #load_name pom
323 0BB9 4C E2 0A jmp print
324
325 0BBC logo
326 0BBC A2 D0 ldx #$d0
327 0BBE A9 00 lda #0
328 ;@ sta $600,x
329 0BC0 9D 2F FE @ sta $fe30-1,x
330 0BC3 CA dex
331 0BC4 D0 FA bne @-
332
333 0BC6 A0 0D ldy #13
334 0BC8 B9 05 0C @ lda nap_title0,y
335 0BCB F0 34 beq @+
336 0BCD 0A asl
337 0BCE 0A asl
338 0BCF 0A asl
339 0BD0 AA tax
340 .rept 8
341 LDA $E100+#,X
343 STA $FE34+20*#,Y
344 .ENDR
344 .endr
Source: REPT
341 0BD1 BD 00 E1 LDA $E100+#,X
341 0BD4 99 34 FE STA $FE34+20*#,Y
341 0BD7 BD 01 E1 LDA $E100+#,X
341 0BDA 99 48 FE STA $FE34+20*#,Y
341 0BDD BD 02 E1 LDA $E100+#,X
341 0BE0 99 5C FE STA $FE34+20*#,Y
341 0BE3 BD 03 E1 LDA $E100+#,X
341 0BE6 99 70 FE STA $FE34+20*#,Y
341 0BE9 BD 04 E1 LDA $E100+#,X
341 0BEC 99 84 FE STA $FE34+20*#,Y
341 0BEF BD 05 E1 LDA $E100+#,X
341 0BF2 99 98 FE STA $FE34+20*#,Y
341 0BF5 BD 06 E1 LDA $E100+#,X
341 0BF8 99 AC FE STA $FE34+20*#,Y
341 0BFB BD 07 E1 LDA $E100+#,X
341 0BFE 99 C0 FE STA $FE34+20*#,Y
Source: t.asm
345 0C01 88 @ dey
346 0C02 10 C4 bpl @-1
347 0C04 60 rts
348
349 0C05 nap_title0
350 0C05 0C 01 13 14 00 00 .he 0c,01,13,14,00,00
351 0C0B 13 11 15 01 04 12 + .he 13,11,15,01,04,12,0f,0e
352
353 02E2-02E3> FA 0A ini ini
354
355 0C13 org $980
356
357 0980-0B79> 70 70 50 C2 + dlist dta $70,$70,$50,$42+$80,a(panel),$00,$00
358 = 0988 dlist1 equ *
359 0988 E4 00 F8 dta b($44+$80+$20),a(obraz)
360 098B A4 A4 A4 A4 A4 A4 + :22 dta b($24+$80)
361 09A1 84 dta b(4+$80)
362 09A2 00 00 dta $00,$00 ;2x po jednej pustej linii
363 09A4 41 80 09 dta b($41),a(dlist)
364
365
366 09A7 title_dlist
367 09A7 70 70 70 .he 70,70,70
368 09AA 42 1D 0A dta b($42),a(tit0a)
369 09AD 70 dta b($70)
370 09AE 5B 30 FE 10 5B 44 + :8 dta b($4b+$10),a($fe30+#*20),b($10)
371 09CE 70 70 70 .he 70,70,70
372 09D1 42 81 0A dta b($42),a(tit0)
373 09D4 40 dta b($40)
374 09D5 46 A9 0A dta b($46),a(tit1)
375 09D8 70 70 dta b($70),b($70)
376 09DA 42 BD 0A dta b($42),a(tit2)
377 09DD 40 dta b($40)
378 09DE 46 E5 0A dta b($46),a(tit3)
379 09E1 70 70 70 70 70 70 .he 70,70,70,70,70,70
380 09E7 42 F9 0A dta b($42),a(tit4)
381 09EA 41 A7 09 dta b($41),a(title_dlist)
382
383 09ED info_dlist
384 09ED 70 70 70 70 70 70 + :13 .he 70
385 09FA 42 A0 CF dta b($42),a(komunikat)
386 09FD 70 70 .he 70,70
387 09FF 42 3B 0A dta b($42),a(tit0c-10) ;pusta linia
388 0A02 41 ED 09 dta b($41),a(info_dlist)
389
390 0A05 info_dlist1
391 0A05 70 70 70 70 70 70 + :13 .he 70
392 0A12 42 A0 CF dta b($42),a(komunikat)
393 0A15 70 70 .he 70,70
394 0A17 42 59 0A dta b($42),a(tit0b)
395 0A1A 41 05 0A dta b($41),a(info_dlist1)
396
397 0A1D tit0a
398 0A1D 1A 1A 1A 1A 1A 1A + :10 dta b(26)
399 0A27 A8 A9 A7 A8 1A B3 + dta d'HIGH'*,b(26),d'SCORE'*,b(26),b(26),b(26),0,0,0,0,0,0,0
400 0A3B 1A 1A 1A 1A 1A 1A + :10 dta b(26)
401
402 0A45 1A 1A 1A 1A 1A 1A + tit0c :20 dta b(26)
403
404 0A59 1A 1A 1A 1A 1A 1A + tit0b :10 dta b(26)
405 0A63 B9 AF B5 B2 1A B3 + dta d'YOUR'*,b(26),d'SCORE'*,b(26),b(26),b(26),0,0,0,0,0,0,0
406 0A77 1A 1A 1A 1A 1A 1A + :10 dta b(26)
407 0A81 tit0
408 0A81 1A 1A 1A 1A 1A 1A + :15 dta b(26)
409 0A90 A3 AF A4 A5 1A 1B + dta d'CODE'*,b(26),b(27),b(26),d'GFX'*
410 0A9A 1A 1A 1A 1A 1A 1A + :15 dta b(26)
411
412 0AA9 tit1
413 0AA9 1A 1A dta b(26),b(26)
414 0AAB EA E1 EE F5 F3 FA + dta c'janusz'*,b(26),c'chabowski'*
415 0ABB 1A 1A dta b(26),b(26)
416
417 0ABD tit2
418 0ABD 1A 1A 1A 1A 1A 1A + :14 dta b(26)
419 0ACB AD B5 B3 A9 A3 1A + dta d'MUSIC'*,b(26),b(27),b(26),d'SFX'*
420 0AD6 1A 1A 1A 1A 1A 1A + :15 dta b(26)
421
422 0AE5 tit3
423 0AE5 1A dta b(26)
424 0AE6 ED E9 E3 E8 E1 EC + dta c'michal'*,b(26),b(26),c'szpilowski'*
425 0AF8 1A dta b(26)
426
427 0AF9 tit4
428 0AF9 1A 1A 1A 1A 1A :5 dta b(26)
429 0AFE A1 A2 A2 B5 A3 1A + dta d'ABBUC'*,b(26),b(26),d'SOFTWARE'*,b(26),b(26),d'CONTEST'*,b(26),b(26),d'2020'
430 0B1C 1A 1A 1A 1A 1A :5 dta b(26)
431
432
433
434 0B21 napis
435 0B21 1A 1A 1A :3 dta b(26)
436 0B24 EC E1 F3 F4 1A 1A + dta c'last'*,b(26),b(26),'squadron'*
437 0B32 1A 1A 1A :3 dta b(26)
438
439
440 0B35 nap_end_level
441 0B35 1B 1A AC A5 B6 A5 + dta d';',b(26),d'LEVEL'*,b(26),d'COMPLETE'*,b(26),d';' ;17
442 0B47 nap_nr_level
443 0B47 AC A5 B6 A5 AC 1A + dta d'LEVEL'*,b(26),b(26),d'1' ;7
444 0B4F nap_game_over
445 0B4F A7 A1 AD A5 1A 1A + dta d'GAME'*,b(26),b(26),d'OVER'* ;9
446 0B59 nap_congrat
447 0B59 BE BE BE 1A 1A A3 + dta c'>>>'*,b(26),b(26),d'CONGRATULATIONS'*,b(26),b(26),b(26),c'>>>'* ;25
448
449 0B73 AA AA FF FF FF FF + tab4 .he aa,aa,ff,ff,ff,ff,aa
450
451 //zmienne
452 0B7A zestaw1 org *+1
453 0B7B lives org *+1
454 0B7C energy org *+1
455 0B7D energy1 org *+1
456 0B7E energy_licznik org *+2
457 0B80 energy_licznik_start org *+2
458 0B82 special org *+1
459 0B83 licznik_dead org *+1
460 0B84 licznik_trig org *+1
461 0B85 big_shoot org *+2
462 0B87 cheat org *+1
463 0B88 frame_counter1 org *+1
464
465
466
467 0B89 icl 'atari.hea'
Source: atari.hea
1
2 0B89 .enum @dmactl
3 = 0000 blank = %00
4 = 0001 narrow = %01
5 = 0002 standard= %10
6 = 0003 wide = %11
7 = 0004 missiles= %100
8 = 0008 players = %1000
9 = 0010 lineX1 = %10000
10 = 0000 lineX2 = %00000
11 = 0020 dma = %100000
12 .ende
13
14 = 003F scr48 = @dmactl(wide|dma|players|missiles|lineX1) ;screen 48b
15 = 003E scr40 = @dmactl(standard|dma|players|missiles|lineX1) ;screen 40b
16 = 003D scr32 = @dmactl(narrow|dma|players|missiles|lineX1) ;screen 32b
17
18 0B89 .enum @pmcntl
19 = 0001 missiles= %1
20 = 0002 players = %10
21 = 0004 trigs = %100
22 .ende
23
24 0B89 .enum @gtictl
25 = 0000 prior0 = %0
26 = 0001 prior1 = %1
27 = 0002 prior2 = %10
28 = 0004 prior4 = %100
29 = 0008 prior8 = %1000
30 = 0010 ply5 = %10000 ; Fifth Player Enable
31 = 0020 mlc = %100000 ; Multiple Color Player Enable
32 = 0040 mode9 = %01000000
33 = 0080 mode10 = %10000000
34 = 00C0 mode11 = %11000000
35 .ende
36
37
38 * ---------------------------------------------------------------------------------------------
39 * --- OS
40 * ---------------------------------------------------------------------------------------------
41
42 = 0052 lmargin = $52
43 = 0053 rmargin = $53
44 = 0054 rowcrs = $54
45 = 0055 colcrs = $55
46
47 * ---------------------------------------------------------------------------------------------
48 * --- KEY ($d209)
49 * ---------------------------------------------------------------------------------------------
50 = 001C key_esc = 28
51 = 0021 key_space = 33
52 = 0010 key_v = 16
53 = 0015 key_b = 21
54 = 0023 key_n = 35
55 = 0025 key_m = 37
56
57 * ---------------------------------------------------------------------------------------------
58 * --- GTIA
59 * ---------------------------------------------------------------------------------------------
60 = D000 hposp0 = $D000 ; pozioma pozycja gracza 0 (Z)
61 = D001 hposp1 = $D001 ; pozioma pozycja gracza 1 (Z)
62 = D002 hposp2 = $D002 ; pozioma pozycja gracza 2 (Z)
63 = D003 hposp3 = $D003 ; pozioma pozycja gracza 3 (Z)
64 = D004 hposm0 = $D004 ; pozioma pozycja pocisku 0 (Z)
65 = D005 hposm1 = $D005 ; pozioma pozycja pocisku 1 (Z)
66 = D006 hposm2 = $D006 ; pozioma pozycja pocisku 2 (Z)
67 = D007 hposm3 = $D007 ; pozioma pozycja pocisku 3 (Z)
68 = D008 sizep0 = $D008 ; poziomy rozmiar gracza 0 (Z)
69 = D009 sizep1 = $D009 ; poziomy rozmiar gracza 1 (Z)
70 = D00A sizep2 = $D00A ; poziomy rozmiar gracza 2 (Z)
71 = D00B sizep3 = $D00B ; poziomy rozmiar gracza 3 (Z)
72 = D00C sizem = $D00C ; poziomy rozmiar pocisków (Z)
73 = D00D grafp0 = $D00D ; rejestr grafiki gracza 0 (Z)
74 = D00E grafp1 = $D00E ; rejestr grafiki gracza 1 (Z)
75 = D00F grafp2 = $D00F ; rejestr grafiki gracza 2 (Z)
76 = D010 grafp3 = $D010 ; rejestr grafiki gracza 3 (Z)
77 = D011 grafm = $D011 ; rejestr grafiki pocisków (Z)
78 = D012 colpm0 = $D012 ; rejestr koloru gracza i pocisku 0 (Z)
79 = D013 colpm1 = $D013 ; rejestr koloru gracza i pocisku 1 (Z)
80 = D014 colpm2 = $D014 ; rejestr koloru gracza i pocisku 2 (Z)
81 = D015 colpm3 = $D015 ; rejestr koloru gracza i pocisku 3 (Z)
82 = D016 colpf0 = $D016 ; rejestr koloru pola gry 0 (Z)
83 = D017 colpf1 = $D017 ; rejestr koloru pola gry 1 (Z)
84 = D018 colpf2 = $D018 ; rejestr koloru pola gry 2 (Z)
85 = D019 colpf3 = $D019 ; rejestr koloru pola gry 3 (Z)
86 = D01A colbak = $D01A ; rejestr koloru t³a (Z)
87
88 = D016 color0 = colpf0
89 = D017 color1 = colpf1
90 = D018 color2 = colpf2
91 = D019 color3 = colpf3
92
93 = D000 kolm0pf = $D000 ; kolizja pocisku 0 z polem gry (O)
94 = D001 kolm1pf = $D001 ; kolizja pocisku 1 z polem gry (O)
95 = D002 kolm2pf = $D002 ; kolizja pocisku 2 z polem gry (O)
96 = D003 kolm3pf = $D003 ; kolizja pocisku 3 z polem gry (O)
97 = D004 kolp0pf = $D004 ; kolizja gracza 0 z polem gry (O)
98 = D005 kolp1pf = $D005 ; kolizja gracza 1 z polem gry (O)
99 = D006 kolp2pf = $D006 ; kolizja gracza 2 z polem gry (O)
100 = D007 kolp3pf = $D007 ; kolizja gracza 3 z polem gry (O)
101 = D008 kolm0p = $D008 ; kolizja pocisku 0 z graczem (O)
102 = D009 kolm1p = $D009 ; kolizja pocisku 1 z graczem (O)
103 = D00A kolm2p = $D00A ; kolizja pocisku 2 z graczem (O)
104 = D00B kolm3p = $D00B ; kolizja pocisku 3 z graczem (O)
105 = D00C kolp0p = $D00C ; kolizja gracza 0 z innym graczem (O)
106 = D00D kolp1p = $D00D ; kolizja gracza 1 z innym graczem (O)
107 = D00E kolp2p = $D00E ; kolizja gracza 2 z innym graczem (O)
108 = D00F kolp3p = $D00F ; kolizja gracza 3 z innym graczem (O)
109 = D010 trig0 = $D010 ; stan przycisku joysticka 0 (O)
110 = D011 trig1 = $D011 ; stan przycisku joysticka 1 (O)
111 = D013 trig3 = $D013 ; znacznik do³¹czenia cartridge-a (O)
112 = D014 pal = $D014 ; znacznik systemu TV (O)
113
114 = D01B gtictl = $D01B ; rejestr kontroli uk³adu GTIA
115 = D01B gtiactl = gtictl
116
117 = D01C vdelay = $D01C ; licznik opóŸnienia pionowego P/MG
118 = D01D pmcntl = $D01D ; rejestr kontroli graczy i pocisków
119 = D01E hitclr = $D01E ; rejestr kasowania rejestrów kolizji
120 = D01F consol = $D01F ; rejestr stanu klawiszy konsoli
121
122 * ---------------------------------------------------------------------------------------------
123 * --- POKEY
124 * ---------------------------------------------------------------------------------------------
125
126 = 0010 irqens = $0010 ; rejestr-cieñ IRQEN
127 = 0011 irqstat = $0011 ; rejestr-cieñ IRQST
128
129 = D200 audf1 = $d200 ; czêstotliwoœæ pracy generatora 1 (Z)
130 = D201 audc1 = $d201 ; rejestr kontroli dŸwiêku generatora 1 (Z)
131 = D202 audf2 = $d202 ; czêstotliwoœæ pracy generatora 2 (Z)
132 = D203 audc2 = $d203 ; rejestr kontroli dŸwiêku generatora 2 (Z)
133 = D204 audf3 = $d204 ; czêstotliwoœæ pracy generatora 3 (Z)
134 = D205 audc3 = $d205 ; rejestr kontroli dŸwiêku generatora 3 (Z)
135 = D206 audf4 = $d206 ; czêstotliwoœæ pracy generatora 4 (Z)
136 = D207 audc4 = $d207 ; rejestr kontroli dŸwiêku generatora 4 (Z)
137
138 = D208 audctl = $D208 ; rejestr kontroli generatorów dŸwiêku (Z)
139 = D209 stimer = $D209 ; rejestr zerowania liczników (Z)
140 = D209 kbcode = $D209 ; kod ostatnio naciœniêtego klawisza (O)
141 = D20A skstres = $D20A ; rejestr statusu z³¹cza szeregowego (Z)
142 = D20A random = $D20A ; rejestr liczby losowej (O)
143 = D20D serout = $D20D ; szeregowy rejestr wyjœciowy (Z)
144 = D20D serin = $D20D ; szeregowy rejestr wejœciowy (O)
145 = D20E irqen = $D20E ; zezwolenie przerwañ IRQ (Z)
146 = D20E irqst = $D20E ; status przerwañ IRQ (O)
147 = D20F skctl = $D20F ; rejestr kontroli z³¹cza szeregowego (Z)
148 = D20F skstat = $D20F ; rejestr statusu z³¹cza szeregowego (O)
149
150 = D200 pot0 = $D200 ;wiose³ko 0
151 = D20B potg0 = $D20B ;zerowanie wiose³ek
152
153 * ---------------------------------------------------------------------------------------------
154 * --- PIA
155 * ---------------------------------------------------------------------------------------------
156 = D300 porta = $D300 ; port A uk³adu PIA
157 = D301 portb = $D301 ; port B uk³adu PIA
158 = D302 pactl = $D302 ; rejestr kontroli portu A
159 = D303 pbctl = $D303 ; rejestr kontroli portu B
160
161 * ---------------------------------------------------------------------------------------------
162 * --- ANTIC
163 * ---------------------------------------------------------------------------------------------
164 = D400 dmactl = $D400 ; rejestr kontroli dostêpu do pamiêci
165 = D401 chrctl = $D401 ; rejestr kontroli wyœwietlania znaków
166 = D402 dlptr = $D402 ; adres programu ANTIC-a
167 = D404 hscrol = $D404 ; znacznik poziomego przesuwu obrazu
168 = D405 vscrol = $D405 ; znacznik pionowego przesuwu obrazu
169 = D407 pmbase = $D407 ; adres pamiêci graczy i pocisków
170 = D409 chbase = $D409 ; adres zestawu znaków
171 = D40A wsync = $D40A ; znacznik oczekiwania na synchronizacjê poziom¹
172 = D40B vcount = $D40B ; licznik linii obrazu
173 = D40C lpenh = $D40C ; poziome po³o¿enie pióra œwietlengo
174 = D40D lpenv = $D40D ; pionowe po³o¿enie pióra œwietlnego
175 = D40E nmien = $D40E ; rejestr zezwoleñ na przerwania NMI
176 = D40F nmist = $D40F ; rejestr statusu przerwañ NMI
177
178 * ---------------------------------------------------------------------------------------------
179 * --- OS
180 * ---------------------------------------------------------------------------------------------
181
182 = 02C4 colpf0s = $02C4 ; rejestr-cieñ COLPF0
183 = 02C5 colpf1s = $02C5 ; rejestr-cieñ COLPF1
184 = 02C6 colpf2s = $02C6 ; rejestr-cieñ COLPF2
185 = 02C7 colpf3s = $02C7 ; rejestr-cieñ COLPF3
186 = 02C8 colbaks = $02C8 ; rejestr-cieñ COLBAK
187
188 * ---------------------------------------------------------------------------------------------
189 * --- HARDWARE
190 * ---------------------------------------------------------------------------------------------
191
192 = FFFA nmivec = $FFFA ; wektor przerwania NMI
193 = FFFC resetvec= $FFFC ; wektor przerwania RESET
194 = FFFE irqvec = $FFFE ; wektor przerwania IRQ
468
469 0B89 icl 'dos.asm'
Source: dos.asm
1 //operacje dyskowe
2 = E456 ciov equ $e456
3
4 0B89 level_color_tab_name
5 0B89-0F8F> 44 3A 4C 45 + dta c'D:LEVEL0.BGC',b(155)
6 0B96 kafel_klocki_name
7 0B96 44 3A 4C 45 56 45 + dta c'D:LEVEL0.TB',b(155)
8 0BA2 level_map_name
9 0BA2 44 3A 4C 45 56 45 + dta c'D:LEVEL0.MAP',b(155)
10 0BAF font_name
11 0BAF 44 3A 4C 45 56 45 + dta c'D:LEVEL0.FNT',b(155)
12 0BBC enemy_tab_name
13 0BBC 44 3A 4C 45 56 45 + dta c'D:LEVEL0.CM',b(155)
14 0BC8 title_mus_name
15 0BC8 44 3A 54 49 54 4C + dta c'D:TITLE.MUS',b(155)
16 0BD4 congrat_mus_name
17 0BD4 44 3A 43 4F 4E 47 + dta c'D:CONGRAT.MUS',b(155)
18 0BE2 over_mus_name
19 0BE2 44 3A 4F 56 45 52 + dta c'D:OVER.MUS',b(155)
20 0BED level_mus_name
21 0BED 44 3A 4C 45 56 45 + dta c'D:LEVEL0.MUS',b(155)
22 0BFA config_name
23 0BFA 44 3A 43 4F 4E 46 + dta c'D:CONFIG.DAT',b(155)
24
25
26 //load
27 0C07 .local dos
28
29 = 1500 tab0 equ sprite_x
30
31 0C07 load_level
32 0C07 20 EE 0C jsr oblicz_level
33 0C0A 20 67 0C jsr load_enemy_tab
34 0C0D 20 B1 0C jsr load_bgc
35 0C10 20 A2 0C jsr load_tb
36 0C13 20 85 0C jsr load_map
37 0C16 20 58 0C jsr load_mus
38 0C19 4C 76 0C jmp dos.load_font
39
40 0C1C load_config
41 0C1C A2 FA ldx #<config_name
42 0C1E A0 0B ldy #>config_name
43 0C20 A9 00 85 BB A9 CF + mwa #config_ad pom1
44 0C28 4C 06 0D jmp load
45
46 0C2B load_title_mus
47 0C2B A2 C8 ldx #<title_mus_name
48 0C2D A0 0B ldy #>title_mus_name
49 0C2F A9 00 85 BB A9 B0 + mwa #MODUL1 pom1
50 0C37 20 06 0D jsr load
51 0C3A A2 D4 ldx #<congrat_mus_name
52 0C3C A0 0B ldy #>congrat_mus_name
53 0C3E A9 00 85 BB A9 A1 + mwa #MODUL2 pom1
54 0C46 20 06 0D jsr load
55 0C49 A2 E2 ldx #<over_mus_name
56 0C4B A0 0B ldy #>over_mus_name
57 0C4D A9 5E 85 BB A9 A4 + mwa #MODUL3 pom1
58 0C55 4C 06 0D jmp load
59
60 0C58 load_mus
61 0C58 A2 ED ldx #<level_mus_name
62 0C5A A0 0B ldy #>level_mus_name
63 0C5C A9 00 85 BB A9 B8 + mwa #MODUL pom1
64 0C64 4C 06 0D jmp load
65
66 0C67 load_enemy_tab
67 0C67 A2 BC ldx #<enemy_tab_name ;wczytaj enemyTab
68 0C69 A0 0B ldy #>enemy_tab_name
69 0C6B A9 00 85 BB A9 F0 + mwa #level_enemy_tab pom1
70 0C73 4C 06 0D jmp load
71
72 0C76 load_font
73 0C76 A2 AF ldx #<font_name
74 0C78 A0 0B ldy #>font_name
75 0C7A A9 00 85 BB A9 E8 + mwa #znaki pom1
76 0C82 4C 06 0D jmp load
77
78 0C85 load_map
79 0C85 A2 A2 ldx #<level_map_name
80 0C87 A0 0B ldy #>level_map_name
81 0C89 A9 00 85 BB A9 C4 + mwa #bg.level_map pom1
82 0C91 20 06 0D jsr load
83
84 0C94 A5 BB lda pom1
85 0C96 38 sec
86 0C97 E9 0A sbc #10
87 0C99 85 CB sta level1s
88 0C9B A5 BC lda pom1+1
89 0C9D E9 00 sbc #0
90 0C9F 85 CC sta level1s+1
91 0CA1 60 rts
92
93 0CA2 load_tb
94 0CA2 A2 96 ldx #<kafel_klocki_name
95 0CA4 A0 0B ldy #>Kafel_klocki_name
96 0CA6 A9 00 85 BB A9 D8 + mwa #kafel pom1
97 0CAE 4C 06 0D jmp load
98
99 0CB1 load_bgc
100
101 0CB1 A2 89 ldx #<level_color_tab_name
102 0CB3 A0 0B ldy #>level_color_tab_name
103
104 0CB5 A9 00 85 BB A9 DE + mwa #level_color_tab-4 pom1
105 0CBD 20 06 0D jsr load
106
107 0CC0 A0 03 ldy #3 ;ustaw startowe kolory mapy
108 0CC2 B9 00 DE @ lda level_color_tab-4,y
109 0CC5 99 27 FF sta def_kolor0,y
110 0CC8 88 dey
111 0CC9 10 F7 bpl @-
112
113 0CCB 4E 14 D0 lsr NTSCGTIA ;popraw startowe kolory jeśli NTSC
114 0CCE F0 02 beq @+
115 0CD0 A0 03 ldy #3
116 0CD2 B9 27 FF @ lda def_kolor0,y
117 0CD5 29 0F and #$0f
118 0CD7 8D E6 0C sta _lg+1
119 0CDA B9 27 FF lda def_kolor0,y
120 0CDD 4A 4A 4A 4A :4 lsr
121 0CE1 AA tax
122 0CE2 BD 3C 94 lda NTSC_colors.tab_color,x
123 0CE5 09 FF _lg ora #$ff
124 0CE7 99 27 FF sta def_kolor0,y
125 0CEA 88 dey
126 0CEB 10 E5 bpl @-
127
128 0CED 60 @ rts
129
130
131
132 ;poprawia nawzwe pliku
133 0CEE oblicz_level
134 0CEE 18 clc
135 0CEF A9 30 lda #'0'
136 0CF1 65 CA adc level
137 0CF3 8D 90 0B sta level_color_tab_name+7
138 0CF6 8D 9D 0B sta kafel_klocki_name+7
139 0CF9 8D A9 0B sta level_map_name+7
140 0CFC 8D B6 0B sta font_name+7
141 0CFF 8D C3 0B sta enemy_tab_name+7
142 0D02 8D F4 0B sta level_mus_name+7
143 0D05 60 rts
144
145 0D06 load
146 0D06 20 57 0D jsr open
147 0D09 A9 00 85 B9 A9 15 + mwa #tab0 pom
148 0D11 A9 80 8D 58 03 A9 + mwa #128 $358 ;czytaj po 128 bajtów
149 0D1B 20 84 0D @ jsr get
150 0D1E 30 06 bmi @+
151 0D20 20 2C 0D jsr copy1
152 0D23 4C 1B 0D jmp @-
153 0D26 20 2C 0D @ jsr copy1
154 0D29 4C 98 0D jmp close
155
156 0D2C copy1 ;kopiuje dane z bufora w miejsce docelowe , również pod OS
157 0D2C A0 FE 8C 01 D3 mvy #$fe portb
158 0D31 AC 58 03 ldy $358
159 0D34 F0 0F beq @+1
160 0D36 88 dey
161 0D37 B9 00 15 @ lda tab0,y
162 0D3A 91 BB sta (pom1),y
163 0D3C 88 dey
164 0D3D 10 F8 bpl @-
165 0D3F AD 58 03 lda $358
166 0D42 20 4B 0D jsr add_pom1
167 0D45 A0 FF 8C 01 D3 @ mvy #$ff portb
168 0D4A 60 rts
169
170 0D4B add_pom1
171 0D4B 18 clc
172 0D4C 65 BB adc pom1
173 0D4E 85 BB sta pom1
174 0D50 A5 BC lda pom1+1
175 0D52 69 00 adc #0
176 0D54 85 BC sta pom1+1
177 0D56 60 rts
178
179
180 ;open
181 0D57 open
182 0D57 8E 54 03 stx $354 ;nazwa pliku w x,y
183 0D5A 8C 55 03 sty $355
184 0D5D A9 80 8D 59 03 A9 + mwa #$80 $359 ;maksymalna dlugosc pliku
185
186 0D67 20 31 18 jsr wait_vbl
187 0D6A A9 00 8D 0E D4 mva #0 nmien
188
189 0D6F A9 FF 8D 01 D3 mva #$ff portb
190 0D74 58 cli
191
192 0D75 A2 10 ldx #$10 ;kanał
193 0D77 A9 03 lda #3 ;open
194 0D79 9D 42 03 sta $340+2,x
195
196 0D7C A9 04 lda #4 ;odczyt
197 0D7E 9D 4A 03 sta $340+10,x
198 0D81 4C 56 E4 jmp ciov
199
200 ;wczytaj
201 0D84 get
202 0D84 A2 10 ldx #$10
203 0D86 A9 07 lda #7 ;load binary
204 0D88 9D 42 03 sta $340+2,x
205 0D8B A5 B9 lda pom ;adres docelowy w (pom)
206 0D8D 9D 44 03 sta $340+4,x
207 0D90 A5 BA lda pom+1
208 0D92 9D 45 03 sta $340+5,x
209 0D95 4C 56 E4 jmp ciov
210
211 ;close
212 0D98 close
213 0D98 A2 10 ldx #$10
214 0D9A A9 0C lda #12
215 0D9C 9D 42 03 sta $340+2,x
216 0D9F 20 56 E4 jsr ciov
217 ;off OS
218 0DA2 AD 0B D4 @ lda vcount
219 0DA5 D0 FB bne @-
220 0DA7 78 sei
221
222 0DA8 A9 FE 8D 01 D3 mva #$fe portb
223 0DAD A9 C0 8D 0E D4 mva #192 nmien
224
225 0DB2 A9 00 8D 08 D2 mva #0 audctl ;inicjalizacja dźwięku
226 0DB7 A9 03 8D 0F D2 mva #3 skctl
227 0DBC 60 rts
228 .endl
470 0DBD icl 'joystick.asm'
Source: joystick.asm
1 //sterowanie joystickiem
2
3
4 = 00E6 SSPEED0 equ 250-20
5 = 0114 SSPEED1 equ SSPEED0*120/100
6 = 011F SSPEED2 equ SSPEED0*125/100
7 = 00CF SSPEED0x equ SSPEED0*90/100
8 = 00FB SSPEED1x equ SSPEED1*91/100
9 = 010D SSPEED2x equ SSPEED2*94/100
10 0DBD CF 00 CF 00 CF 00 + tab_joyx dta a(SSPEED0x),a(SSPEED0x),a(SSPEED0x),a(0),a(-SSPEED0x),a(-SSPEED0x),a(-SSPEED0x),a(0),a(0),a(0)
11 0DD1 FB 00 FB 00 FB 00 + dta a(SSPEED1x),a(SSPEED1x),a(SSPEED1x),a(0),a(-SSPEED1x),a(-SSPEED1x),a(-SSPEED1x),a(0),a(0),a(0)
12 0DE5 0D 01 0D 01 0D 01 + dta a(SSPEED2x),a(SSPEED2x),a(SSPEED2x),a(0),a(-SSPEED2x),a(-SSPEED2x),a(-SSPEED2x),a(0),a(0),a(0)
13
14 0DF9 CC 01 34 FE 00 00 + tab_joyy dta a(2*SSPEED0),a(-2*SSPEED0),a(0),a(0),a(2*SSPEED0),a(-2*SSPEED0),a(0),a(0),a(2*SSPEED0),a(-2*SSPEED0)
15 0E0D 28 02 D8 FD 00 00 + dta a(2*SSPEED1),a(-2*SSPEED1),a(0),a(0),a(2*SSPEED1),a(-2*SSPEED1),a(0),a(0),a(2*SSPEED1),a(-2*SSPEED1)
16 0E21 3E 02 C2 FD 00 00 + dta a(2*SSPEED2),a(-2*SSPEED2),a(0),a(0),a(2*SSPEED2),a(-2*SSPEED2),a(0),a(0),a(2*SSPEED2),a(-2*SSPEED2)
17
18 = 0E34 speed_tab equ *-1
19 0E35 09 13 dta 10-1,20-1 ;,30-1
20
21 0E37 AD 00 D3 joy1 lda porta
22 0E3A 29 0F and #$0f
23 0E3C C9 0F cmp #15
24 0E3E D0 06 bne @+
25 0E40 A9 08 8D 90 15 mva #8 sprite_shape
26 0E45 60 rts
27
28 0E46 @
29 0E46 E9 04 sbc #5-1
30 0E48 90 6C bcc @+3 ;zabezpieczenie (zepsuty joystick)
31 0E4A AE 30 FF ldx samolot_speed
32 0E4D F0 03 beq *+5
33 0E4F 7D 34 0E adc speed_tab,x
34 0E52 0A asl
35 0E53 AA tax
36 0E54 BD BD 0D lda tab_joyx,x
37 0E57 F0 37 beq @+1
38 0E59 6D 18 15 adc sprite_dx
39 0E5C 8D 18 15 sta sprite_dx
40 0E5F BD BE 0D lda tab_joyx+1,x
41 0E62 A8 tay
42 0E63 6D 00 15 adc sprite_x
43 0E66 C9 32 cmp #50 ;czy za daleko?
44 0E68 B0 02 bcs *+4
45 0E6A A9 32 lda #50
46 0E6C C9 C8 cmp #200
47 0E6E 90 02 bcc *+4
48 0E70 A9 C7 lda #199
49 0E72 8D 00 15 sta sprite_x
50
51 0E75 98 tya
52 0E76 10 0C bpl @+
53 0E78 AC 90 15 ldy sprite_shape
54 0E7B B9 B1 0E lda tab_left-6,y
55 0E7E 8D 90 15 sta sprite_shape
56 0E81 4C 95 0E jmp @+2
57 0E84 AC 90 15 @ ldy sprite_shape
58 0E87 B9 B4 0E lda tab_right-6,y
59 0E8A 8D 90 15 sta sprite_shape
60 0E8D 4C 95 0E jmp @+1
61
62 0E90 A9 08 8D 90 15 @ mva #8 sprite_shape
63 0E95 18 @ clc
64 0E96 BD F9 0D lda tab_joyy,x
65 0E99 F0 1B beq @+
66 0E9B 6D 48 15 adc sprite_dy
67 0E9E 8D 48 15 sta sprite_dy
68 0EA1 AD 30 15 lda sprite_y
69 0EA4 7D FA 0D adc tab_joyy+1,x
70 0EA7 C9 30 cmp #48
71 0EA9 B0 02 bcs *+4
72 0EAB A9 30 lda #48
73 0EAD C9 D0 cmp #208
74 0EAF 90 02 bcc *+4
75 0EB1 A9 CF lda #207
76 0EB3 8D 30 15 sta sprite_y
77 0EB6 60 @ rts
78
79
80
81 0EB7 06 08 06 tab_left dta 6,8,6
82 0EBA 08 07 07 tab_right dta 8,7,7
83
84 = 0006 ILE_ZMIAN=6
85 = 0028 MAX_CZAS=40