-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathBank $87.asm
2068 lines (1842 loc) · 142 KB
/
Bank $87.asm
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
;;; $8000: Enable animated tiles objects ;;;
{
$87:8000 08 PHP
$87:8001 C2 20 REP #$20
$87:8003 A9 00 80 LDA #$8000
$87:8006 0C F1 1E TSB $1EF1 [$7E:1EF1]
$87:8009 28 PLP
$87:800A 6B RTL
}
;;; $800B: Disable animated tiles objects ;;;
{
$87:800B 08 PHP
$87:800C C2 20 REP #$20
$87:800E A9 00 80 LDA #$8000
$87:8011 1C F1 1E TRB $1EF1 [$7E:1EF1]
$87:8014 28 PLP
$87:8015 6B RTL
}
;;; $8016: Clear animated tiles objects ;;;
{
$87:8016 08 PHP
$87:8017 C2 30 REP #$30
$87:8019 DA PHX
$87:801A A2 0A 00 LDX #$000A
$87:801D 9E F5 1E STZ $1EF5,x[$7E:1EFF]
$87:8020 CA DEX
$87:8021 CA DEX
$87:8022 10 F9 BPL $F9 [$801D]
$87:8024 FA PLX
$87:8025 28 PLP
$87:8026 6B RTL
}
;;; $8027: Spawn animated tiles object ;;;
{
;; Parameter:
;; Y: Animated tiles object ID
$87:8027 08 PHP
$87:8028 8B PHB
$87:8029 DA PHX
$87:802A 4B PHK
$87:802B AB PLB
$87:802C A2 0A 00 LDX #$000A ; X = Ah (animated tiles object index)
; LOOP
$87:802F BD F5 1E LDA $1EF5,x[$7E:1EFF] ;\
$87:8032 F0 09 BEQ $09 [$803D] ;} If [animated tiles object ID] = 0: go to BRANCH_FOUND
$87:8034 CA DEX ;\
$87:8035 CA DEX ;} X -= 2 (next index)
$87:8036 10 F7 BPL $F7 [$802F] ; If [X] >= 0: go to LOOP
$87:8038 FA PLX
$87:8039 AB PLB
$87:803A 28 PLP
$87:803B 38 SEC
$87:803C 6B RTL ; Return
; BRANCH_FOUND
$87:803D 98 TYA
$87:803E 9D F5 1E STA $1EF5,x[$7E:1EFF] ; Animated tiles object ID = [Y]
$87:8041 9E 01 1F STZ $1F01,x[$7E:1F0B] ; Animated tiles object counter = 0
$87:8044 B9 00 00 LDA $0000,y[$87:82E7] ;\
$87:8047 9D 0D 1F STA $1F0D,x[$7E:1F17] ;} Animated tiles object instruction list pointer = [[Y]]
$87:804A 9E 25 1F STZ $1F25,x[$7E:1F2F] ; Animated tiles object source address = 0
$87:804D B9 02 00 LDA $0002,y[$87:82E9] ;\
$87:8050 9D 31 1F STA $1F31,x[$7E:1F3B] ;} Animated tiles object size = [[Y] + 2]
$87:8053 B9 04 00 LDA $0004,y[$87:82EB] ;\
$87:8056 9D 3D 1F STA $1F3D,x[$7E:1F47] ;} Animated tiles object VRAM address = [[Y] + 4]
$87:8059 A9 01 00 LDA #$0001 ;\
$87:805C 9D 19 1F STA $1F19,x[$7E:1F23] ;} Animated tiles object instruction timer = 1
$87:805F FA PLX
$87:8060 AB PLB
$87:8061 28 PLP
$87:8062 18 CLC
$87:8063 6B RTL
}
;;; $8064: Animated tiles objects handler ;;;
{
$87:8064 08 PHP
$87:8065 8B PHB
$87:8066 4B PHK
$87:8067 AB PLB
$87:8068 2C F1 1E BIT $1EF1 [$7E:1EF1] ;\
$87:806B 10 15 BPL $15 [$8082] ;} If animated tiles objects are disabled: return
$87:806D A2 0A 00 LDX #$000A ; X = Ah (animated tiles object index)
; LOOP
$87:8070 8E F3 1E STX $1EF3 [$7E:1EF3] ; Animated tiles object index = [X]
$87:8073 BD F5 1E LDA $1EF5,x[$7E:1EFF] ;} If [animated tiles object ID] != 0:
$87:8076 F0 06 BEQ $06 [$807E] ;/
$87:8078 20 85 80 JSR $8085 [$87:8085] ; Process animated tiles object
$87:807B AE F3 1E LDX $1EF3 [$7E:1EF3]
$87:807E CA DEX ;\
$87:807F CA DEX ;} X -= 2
$87:8080 10 EE BPL $EE [$8070] ; If [X] >= 0: go to LOOP
$87:8082 AB PLB
$87:8083 28 PLP
$87:8084 6B RTL
}
;;; $8085: Process animated tiles object ;;;
{
$87:8085 AE F3 1E LDX $1EF3 [$7E:1EF3] ; X = [animated tiles object index]
$87:8088 DE 19 1F DEC $1F19,x[$7E:1F23] ; Decrement animated tiles object instruction timer
$87:808B D0 24 BNE $24 [$80B1] ; If [animated tiles object instruction timer] != 0: return
$87:808D BC 0D 1F LDY $1F0D,x[$7E:1F17] ; Y = [animated tiles object instruction list pointer]
; LOOP
$87:8090 B9 00 00 LDA $0000,y[$87:82CF] ;\
$87:8093 10 0B BPL $0B [$80A0] ;} If [[Y]] & 8000h (ASM instruction):
$87:8095 8D 49 1F STA $1F49 [$7E:1F49] ; Animated tiles object instruction = [[Y]]
$87:8098 C8 INY ;\
$87:8099 C8 INY ;} Y += 2
$87:809A F4 8F 80 PEA $808F
$87:809D 6C 49 1F JMP ($1F49)[$87:80B7] ; Execute [animated tiles object instruction] and go to LOOP
$87:80A0 9D 19 1F STA $1F19,x[$7E:1F23] ; Animated tiles object instruction timer = [[Y]]
$87:80A3 B9 02 00 LDA $0002,y[$87:82D1] ;\
$87:80A6 9D 25 1F STA $1F25,x[$7E:1F2F] ;} Animated tiles object source address = [[Y] + 2]
$87:80A9 98 TYA ;\
$87:80AA 18 CLC ;|
$87:80AB 69 04 00 ADC #$0004 ;} Animated tiles object instruction pointer = [Y] + 4
$87:80AE 9D 0D 1F STA $1F0D,x[$7E:1F17] ;/
$87:80B1 60 RTS
}
;;; $80B2..8169: Instructions ;;;
{
;;; $80B2: Instruction - delete ;;;
{
$87:80B2 9E F5 1E STZ $1EF5,x[$7E:1EFF]
$87:80B5 68 PLA
$87:80B6 60 RTS
}
;;; $80B7: Instruction - go to [[Y]] ;;;
{
$87:80B7 B9 00 00 LDA $0000,y[$87:82E5]
$87:80BA A8 TAY
$87:80BB 60 RTS
}
;;; $80BC: Unused. Instruction - go to [Y] + ±[[Y]] ;;;
{
$87:80BC 8C 49 1F STY $1F49 [$7E:1F49]
$87:80BF 88 DEY
$87:80C0 B9 00 00 LDA $0000,y
$87:80C3 EB XBA
$87:80C4 30 05 BMI $05 [$80CB]
$87:80C6 29 FF 00 AND #$00FF
$87:80C9 80 03 BRA $03 [$80CE]
$87:80CB 09 00 FF ORA #$FF00
$87:80CE 18 CLC
$87:80CF 6D 49 1F ADC $1F49 [$7E:1F49]
$87:80D2 A8 TAY
$87:80D3 60 RTS
}
;;; $80D4: Unused. Instruction - decrement timer and go to [[Y]] if non-zero ;;;
{
$87:80D4 DE 01 1F DEC $1F01,x
$87:80D7 D0 DE BNE $DE [$80B7]
$87:80D9 C8 INY
$87:80DA C8 INY
$87:80DB 60 RTS
}
;;; $80DC: Unused. Instruction - decrement timer and go to [Y] + ±[[Y]] if non-zero ;;;
{
$87:80DC DE 01 1F DEC $1F01,x
$87:80DF D0 DB BNE $DB [$80BC]
$87:80E1 C8 INY
$87:80E2 60 RTS
}
;;; $80E3: Unused. Instruction - timer = [[Y]] ;;;
{
$87:80E3 E2 20 SEP #$20
$87:80E5 B9 00 00 LDA $0000,y
$87:80E8 9D 01 1F STA $1F01,x
$87:80EB C2 20 REP #$20
$87:80ED C8 INY
$87:80EE 60 RTS
}
;;; $80EF: Unused. RTS ;;;
{
$87:80EF 60 RTS
}
;;; $80F0: Unused. Instruction - queue music track [[Y]] ;;;
{
$87:80F0 B9 00 00 LDA $0000,y
$87:80F3 29 FF 00 AND #$00FF
$87:80F6 22 C1 8F 80 JSL $808FC1[$80:8FC1]
$87:80FA C8 INY
$87:80FB 60 RTS
}
;;; $80FC: Unused. Instruction - queue sound [[Y]], sound library 1, max queued sounds allowed = 6 ;;;
{
$87:80FC B9 00 00 LDA $0000,y
$87:80FF 29 FF 00 AND #$00FF
$87:8102 22 49 90 80 JSL $809049[$80:9049]
$87:8106 C8 INY
$87:8107 60 RTS
}
;;; $8108: Unused. Instruction - queue sound [[Y]], sound library 2, max queued sounds allowed = 6 ;;;
{
$87:8108 B9 00 00 LDA $0000,y
$87:810B 29 FF 00 AND #$00FF
$87:810E 22 CB 90 80 JSL $8090CB[$80:90CB]
$87:8112 C8 INY
$87:8113 60 RTS
}
;;; $8114: Unused. Instruction - queue sound [[Y]], sound library 3, max queued sounds allowed = 6 ;;;
{
$87:8114 B9 00 00 LDA $0000,y
$87:8117 29 FF 00 AND #$00FF
$87:811A 22 4D 91 80 JSL $80914D[$80:914D]
$87:811E C8 INY
$87:811F 60 RTS
}
;;; $8120: Unused. Instruction - go to [[Y] + 1] if any of the boss bits [[Y]] are set ;;;
{
$87:8120 B9 00 00 LDA $0000,y
$87:8123 C8 INY
$87:8124 29 FF 00 AND #$00FF
$87:8127 22 DC 81 80 JSL $8081DC[$80:81DC]
$87:812B 90 03 BCC $03 [$8130]
$87:812D 4C B7 80 JMP $80B7 [$87:80B7]
$87:8130 C8 INY
$87:8131 C8 INY
$87:8132 60 RTS
}
;;; $8133: Unused. Instruction - set the boss bits [[Y]] ;;;
{
$87:8133 B9 00 00 LDA $0000,y
$87:8136 29 FF 00 AND #$00FF
$87:8139 22 A6 81 80 JSL $8081A6[$80:81A6]
$87:813D C8 INY
$87:813E 60 RTS
}
;;; $813F: Instruction - go to [[Y] + 2] if the event [[Y]] is set ;;;
{
$87:813F B9 00 00 LDA $0000,y[$87:8482]
$87:8142 C8 INY
$87:8143 C8 INY
$87:8144 22 33 82 80 JSL $808233[$80:8233]
$87:8148 90 03 BCC $03 [$814D]
$87:814A 4C B7 80 JMP $80B7 [$87:80B7]
$87:814D C8 INY
$87:814E C8 INY
$87:814F 60 RTS
}
;;; $8150: Instruction - set event [[Y]] ;;;
{
$87:8150 B9 00 00 LDA $0000,y[$87:84D2]
$87:8153 22 FA 81 80 JSL $8081FA[$80:81FA]
$87:8157 C8 INY
$87:8158 C8 INY
$87:8159 60 RTS
}
;;; $815A: Unused. Instruction - lock Samus ;;;
{
$87:815A A9 00 00 LDA #$0000 ;\
$87:815D 22 84 F0 90 JSL $90F084[$90:F084] ;} Run Samus command - lock Samus
$87:8161 60 RTS
}
;;; $8162: Unused. Instruction - unlock Samus ;;;
{
$87:8162 A9 01 00 LDA #$0001 ;\
$87:8165 22 84 F0 90 JSL $90F084[$90:F084] ;} Run Samus command - unlock Samus
$87:8169 60 RTS
}
}
;;; $816A..B9: Instruction lists - FX ;;;
{
;;; $816A: Instruction list - animated tiles object $8251 (vertical spikes) ;;;
{
; LOOP
$87:816A dw 0008,9C04,
0008,9C84,
0008,9D04,
0008,9C84,
80B7,816A ; Go to LOOP
}
;;; $817E: Instruction list - animated tiles object $8257 (horizontal spikes) ;;;
{
; LOOP
$87:817E dw 0008,9D84,
0008,9E04,
0008,9E84,
0008,9E04,
80B7,817E ; Go to LOOP
}
;;; $8192: Instruction list - animated tiles object $825D (Crateria lake) ;;;
{
; LOOP
$87:8192 dw 000A,8564,
000A,8764,
000A,8964,
000A,8764,
80B7,8192 ; Go to LOOP
}
;;; $81A6: Instruction list - animated tiles object $8263/$8269 (Crateria lava) ;;;
{
; LOOP
$87:81A6 dw 000A,8B64,
000A,8C24,
000A,8CE4,
000A,8DA4,
80B7,81A6 ; Go to LOOP
}
}
;;; $81BA: Instruction - wait until area boss is dead ;;;
{
$87:81BA A9 01 00 LDA #$0001
$87:81BD 22 DC 81 80 JSL $8081DC[$80:81DC]
$87:81C1 B0 07 BCS $07 [$81CA]
$87:81C3 68 PLA
$87:81C4 A9 01 00 LDA #$0001
$87:81C7 9D 19 1F STA $1F19,x[$7E:1F23]
$87:81CA 60 RTS
}
;;; $81CB..824A: Instruction lists - FX ;;;
{
;;; $81CB: Instruction list - animated tiles object $826F (Wrecked Ship screen) ;;;
{
$87:81CB dw 81BA, ; Wait until area boss is dead
; LOOP
$87:81CD dw 000A,8EE4,
000A,8F64,
000A,8FE4,
000A,8F64,
80B7,81CD ; Go to LOOP
}
;;; $81E1: Instruction list - animated tiles object $8275 (Wrecked Ship treadmill - rightwards) ;;;
{
$87:81E1 dw 81BA, ; Wait until area boss is dead
; LOOP
$87:81E3 dw 0001,8E64,
0001,8E84,
0001,8EA4,
0001,8EC4,
80B7,81E3 ; Go to LOOP
}
;;; $81F7: Instruction list - animated tiles object $827B (Wrecked Ship treadmill - leftwards) ;;;
{
$87:81F7 dw 81BA, ; Wait until area boss is dead
; LOOP
$87:81F9 dw 0001,8EC4,
0001,8EA4,
0001,8E84,
0001,8E64,
80B7,81F9 ; Go to LOOP
}
;;; $820D: Instruction list - animated tiles object $8281 (Brinstar mouth) ;;;
{
; LOOP
$87:820D dw 0010,9964,
0010,9A44,
0010,9B24,
0010,9A44,
80B7,820D ; Go to LOOP
}
;;; $8221: Instruction list - animated tiles object $8287 (Maridia sand ceiling) ;;;
{
; LOOP
$87:8221 dw 000A,91E4,
000A,9224,
000A,9264,
000A,92A4,
80B7,8221 ; Go to LOOP
}
;;; $8235: Instruction list - animated tiles object $828D (Maridia sand falling) ;;;
{
; LOOP
$87:8235 dw 000A,9164,
000A,9184,
000A,91A4,
000A,91C4,
80B7,8235 ; Go to LOOP
}
;;; $8249: Instruction list - animated tiles object $824B (nothing) ;;;
{
$87:8249 dw 80B2 ; Delete
}
}
;;; $824B: Animated tiles objects - FX ;;;
{
; Instruction list, size, VRAM address
$87:824B dw 8249,0000,0000 ; Nothing
$87:8251 dw 816A,0080,3880 ; Vertical spikes
$87:8257 dw 817E,0080,3D60 ; Horizontal spikes
$87:825D dw 8192,0200,1B00 ; Crateria lake
$87:8263 dw 81A6,00C0,0A00 ; Unused: Crateria lava
$87:8269 dw 81A6,00C0,0640 ; Unused: Crateria lava
$87:826F dw 81CB,0080,19C0 ; Wrecked Ship screen
$87:8275 dw 81E1,0020,00E0 ; Wrecked Ship treadmill (rightwards)
$87:827B dw 81F7,0020,00E0 ; Wrecked Ship treadmill (leftwards)
$87:8281 dw 820D,00E0,0410 ; Brinstar mouth
$87:8287 dw 8221,0040,1000 ; Maridia sand ceiling
$87:828D dw 8235,0020,1020 ; Maridia sand falling
}
;;; $8293..8302: Animated tiles objects and instruction lists - FX layer 3 ;;;
{
;;; $8293: Instruction list - animated tiles object $82AB (lava) ;;;
{
; LOOP
$87:8293 dw 000D,A564,
000D,A5A4,
000D,A5E4,
000D,A624,
000D,A664,
80B7,8293 ; Go to LOOP
}
;;; $82AB: Animated tiles object - lava ;;;
{
$87:82AB dw 8293,0040,4280
}
;;; $82B1: Instruction list - animated tiles object $82C9 (acid) ;;;
{
; LOOP
$87:82B1 dw 000A,A6A4,
000A,A6E4,
000A,A724,
000A,A764,
000A,A7A4,
80B7,82B1 ; Go to LOOP
}
;;; $82C9: Animated tiles object - acid ;;;
{
$87:82C9 dw 82B1,0040,4280
}
;;; $82CF: Instruction list - animated tiles object $82E7 (rain) ;;;
{
; LOOP
$87:82CF dw 000A,A874,
000A,A8C4,
000A,A914,
000A,A964,
000A,A9B4,
80B7,82CF ; Go to LOOP
}
;;; $82E7: Animated tiles object - rain ;;;
{
$87:82E7 dw 82CF,0050,4280
}
;;; $82ED: Instruction list - animated tiles object $82FD (spores) ;;;
{
; LOOP
$87:82ED dw 000A,A7E4,
000A,A814,
000A,A844,
80B7,82ED ; Go to LOOP
}
;;; $82FD: Animated tiles object - spores ;;;
{
$87:82FD dw 82ED,0030,4280
}
}
;;; $8303..83AB: Instructions ;;;
{
;;; $8303: Instruction - go to [[Y] + 2] if any of the boss bits [[Y]] for area [[Y] + 1] are set ;;;
{
$87:8303 DA PHX
$87:8304 B9 01 00 LDA $0001,y[$87:849D]
$87:8307 29 FF 00 AND #$00FF
$87:830A AA TAX
$87:830B BF 28 D8 7E LDA $7ED828,x[$7E:D829]
$87:830F FA PLX
$87:8310 39 00 00 AND $0000,y[$87:849C]
$87:8313 C8 INY
$87:8314 C8 INY
$87:8315 29 FF 00 AND #$00FF
$87:8318 F0 03 BEQ $03 [$831D]
$87:831A 4C B7 80 JMP $80B7 [$87:80B7]
$87:831D C8 INY
$87:831E C8 INY
$87:831F 60 RTS
}
;;; $8320: Instruction - spawn Tourian statue eye glow enemy projectile with parameter [[Y]] ;;;
{
$87:8320 5A PHY
$87:8321 B9 00 00 LDA $0000,y[$87:84BE]
$87:8324 A0 6A BA LDY #$BA6A ;\
$87:8327 22 97 80 86 JSL $868097[$86:8097] ;} Spawn Tourian statue eye glow enemy projectile
$87:832B 7A PLY
$87:832C C8 INY
$87:832D C8 INY
$87:832E 60 RTS
}
;;; $832F: Instruction - spawn Tourian statue's soul enemy projectile with parameter [[Y]] ;;;
{
$87:832F 5A PHY
$87:8330 B9 00 00 LDA $0000,y[$87:84C6]
$87:8333 A0 94 BA LDY #$BA94 ;\
$87:8336 22 97 80 86 JSL $868097[$86:8097] ;} Spawn Tourian statue's soul enemy projectile
$87:833A 7A PLY
$87:833B C8 INY
$87:833C C8 INY
$87:833D 60 RTS
}
;;; $833E: Instruction - go to [[Y]] if Tourian statue is busy releasing lock ;;;
{
$87:833E AD 6F 1E LDA $1E6F [$7E:1E6F]
$87:8341 10 03 BPL $03 [$8346]
$87:8343 4C B7 80 JMP $80B7 [$87:80B7]
$87:8346 C8 INY
$87:8347 C8 INY
$87:8348 60 RTS
}
;;; $8349: Instruction - Tourian statue animation state |= [[Y]] ;;;
{
$87:8349 B9 00 00 LDA $0000,y[$87:847E]
$87:834C 0C 6F 1E TSB $1E6F [$7E:1E6F]
$87:834F C8 INY
$87:8350 C8 INY
$87:8351 60 RTS
}
;;; $8352: Instruction - Tourian statue animation state &= ~[[Y]] ;;;
{
$87:8352 B9 00 00 LDA $0000,y[$87:84D6]
$87:8355 1C 6F 1E TRB $1E6F [$7E:1E6F]
$87:8358 C8 INY
$87:8359 C8 INY
$87:835A 60 RTS
}
;;; $835B: Instruction - clear 3 colours of palette data at $7E:C000 + [[Y]] ;;;
{
$87:835B DA PHX
$87:835C BE 00 00 LDX $0000,y[$87:84B2]
$87:835F A9 00 00 LDA #$0000
$87:8362 9F 00 C0 7E STA $7EC000,x[$7E:C0F8]
$87:8366 9F 02 C0 7E STA $7EC002,x[$7E:C0FA]
$87:836A 9F 04 C0 7E STA $7EC004,x[$7E:C0FC]
$87:836E FA PLX
$87:836F C8 INY
$87:8370 C8 INY
$87:8371 60 RTS
}
;;; $8372: Instruction - spawn palette FX object [[Y]] ;;;
{
$87:8372 5A PHY
$87:8373 B9 00 00 LDA $0000,y[$87:84CA]
$87:8376 A8 TAY
$87:8377 22 E9 C4 8D JSL $8DC4E9[$8D:C4E9]
$87:837B 7A PLY
$87:837C C8 INY
$87:837D C8 INY
$87:837E 60 RTS
}
;;; $837F: Instruction - write 8 colours of target palette data to $7E:C200 + [[Y]] ;;;
{
$87:837F DA PHX
$87:8380 5A PHY
$87:8381 BE 00 00 LDX $0000,y
$87:8384 A0 00 00 LDY #$0000
$87:8387 B9 9C 83 LDA $839C,y
$87:838A 9F 00 C2 7E STA $7EC200,x
$87:838E E8 INX
$87:838F E8 INX
$87:8390 C8 INY
$87:8391 C8 INY
$87:8392 C0 10 00 CPY #$0010
$87:8395 D0 F0 BNE $F0 [$8387]
$87:8397 7A PLY
$87:8398 FA PLX
$87:8399 C8 INY
$87:839A C8 INY
$87:839B 60 RTS
$87:839C dw 3800, 7F58, 6ED5, 5A71, 49EE, 356A, 24E7, 1083
}
}
;;; $83AC..854B: Instruction lists - Tourian statue ;;;
{
;;; $83AC: Instruction list - animated tiles object $854C (Tourian statue - Phantoon) ;;;
{
$87:83AC dw 8349,0001, ; Set Tourian statue to process Phantoon
813F,0006,840A, ; Go to BRANCH_STATUE_IS_GREY if Phantoon statue is grey
0006,9364
; LOOP
$87:83BA dx 000C,93E4,
000C,9464,
000C,93E4,
0010,9364,
8303,01,03,83D8, ; Go to BRANCH_PHANTOON_IS_DEAD if Phantoon is dead
8352,0001, ; Set Tourian statue to stop processing Phantoon
80B7,83BA ; Go to LOOP
; BRANCH_PHANTOON_IS_DEAD
$87:83D8 dw 833E,83BA, ; Go to LOOP if Tourian statue is busy releasing lock
8349,8000, ; Set Tourian statue busy releasing lock
835B,0158, ; Clear 3 colours of palette data at $7E:C158
0010,93E4,
0010,9464,
8320,0000, ; Spawn Tourian statue eye glow enemy projectile with parameter 0
00C0,97E4,
832F,0000, ; Spawn Tourian statue's soul enemy projectile with parameter 0
8372,F755, ; Spawn palette FX object $F755 (grey out Tourian statue - Phantoon)
0080,97E4,
8150,0006, ; Set Phantoon statue is grey event
8352,8001, ; Set Tourian statue not processing Phantoon and not busy
80B2 ; Delete
; BRANCH_STATUE_IS_GREY
$87:840A dw 8352,8001, ; Set Tourian statue not processing Phantoon and not busy
837F,0140, ; Write 8 colours of target palette data to $7E:C340
80B2 ; Delete
}
;;; $8414: Instruction list - animated tiles object $8552 (Tourian statue - Ridley) ;;;
{
$87:8414 dw 8349,0002, ; Set Tourian statue to process Ridley
813F,0007,8472, ; Go to BRANCH_STATUE_IS_GREY if Ridley statue is grey
000A,94E4
; LOOP_WAIT
$87:8422 dx 000C,9524,
000C,9564,
000C,9524,
0010,94E4,
8303,01,02,8440, ; Go to BRANCH_RIDLEY_IS_DEAD if Ridley is dead
8352,0002, ; Set Tourian statue to stop processing Ridley
80B7,8422 ; Go to LOOP
; BRANCH_RIDLEY_IS_DEAD
$87:8440 dw 833E,8422, ; Go to LOOP if Tourian statue is busy releasing lock
8349,8000, ; Set Tourian statue busy releasing lock
835B,0132, ; Clear 3 colours of palette data at $7E:C132
0010,9524,
0010,9564,
8320,0002, ; Spawn Tourian statue eye glow enemy projectile with parameter 2
00C0,9864,
832F,0002, ; Spawn Tourian statue's soul enemy projectile with parameter 2
8372,F751, ; Spawn palette FX object $F751 (grey out Tourian statue - Ridley)
0080,9864,
8150,0007, ; Set Ridley statue is grey event
8352,8002, ; Set Tourian statue not processing Ridley and not busy
80B2 ; Delete
; BRANCH_STATUE_IS_GREY
$87:8472 dw 8352,8002, ; Set Tourian statue not processing Ridley and not busy
837F,0120, ; Write 8 colours of target palette data to $7E:C320
80B2 ; Delete
}
;;; $847C: Instruction list - animated tiles object $8558 (Tourian statue - Kraid) ;;;
{
$87:847C dw 8349,0004, ; Set Tourian statue to process Kraid
813F,0009,84DA, ; Go to BRANCH_STATUE_IS_GREY if Kraid statue is grey
0004,9724
; LOOP_WAIT
$87:848A dx 000C,9764,
000C,97A4,
000C,9764,
0010,9724,
8303,01,01,84A8, ; Go to BRANCH_KRAID_IS_DEAD if Kraid is dead
8352,0004, ; Set Tourian statue to stop processing Kraid
80B7,848A ; Go to LOOP
; BRANCH_KRAID_IS_DEAD
$87:84A8 dw 833E,848A, ; Go to LOOP if Tourian statue is busy releasing lock
8349,8000, ; Set Tourian statue busy releasing lock
835B,00F8, ; Clear 3 colours of palette data at $7E:C0F8
0010,9764,
0010,97A4,
8320,0006, ; Spawn Tourian statue eye glow enemy projectile with parameter 6
00C0,98A4,
832F,0006, ; Spawn Tourian statue's soul enemy projectile with parameter 6
8372,F74D, ; Spawn palette FX object $F74D (grey out Tourian statue - Kraid)
0080,98A4,
8150,0009, ; Set Kraid statue is grey event
8352,8004, ; Set Tourian statue not processing Kraid and not busy
80B2 ; Delete
; BRANCH_STATUE_IS_GREY
$87:84DA dw 8352,8004, ; Set Tourian statue not processing Kraid and not busy
837F,00E0, ; Write 8 colours of target palette data to $7E:C2E0
80B2 ; Delete
}
;;; $84E4: Instruction list - animated tiles object $855E (Tourian statue - Draygon) ;;;
{
$87:84E4 dw 8349,0008, ; Set Tourian statue to process Draygon
813F,0008,8542, ; Go to BRANCH_STATUE_IS_GREY if Draygon statue is grey
0008,95A4
; LOOP_WAIT
$87:84F2 dx 000C,9624,
000C,96A4,
000C,9624,
0010,95A4,
8303,01,04,8510, ; Go to BRANCH_DRAYGON_IS_DEAD if Draygon is dead
8352,0008, ; Set Tourian statue to stop processing Draygon
80B7,84F2 ; Go to LOOP
; BRANCH_DRAYGON_IS_DEAD
$87:8510 dw 833E,84F2, ; Go to LOOP if Tourian statue is busy releasing lock
8349,8000, ; Set Tourian statue busy releasing lock
835B,00D2, ; Clear 3 colours of palette data at $7E:C0D2
0010,9624,
0010,96A4,
8320,0004, ; Spawn Tourian statue eye glow enemy projectile with parameter 4
00C0,98E4,
832F,0004, ; Spawn Tourian statue's soul enemy projectile with parameter 4
8372,F749, ; Spawn palette FX object $F749 (grey out Tourian statue - Draygon)
0080,98E4,
8150,0008, ; Set Draygon statue is grey event
8352,8008, ; Set Tourian statue not processing Draygon and not busy
80B2 ; Delete
; BRANCH_STATUE_IS_GREY
$87:8542 dw 8352,8008, ; Set Tourian statue not processing Draygon and not busy
837F,00C0, ; Write 8 colours of target palette data to $7E:C2C0
80B2 ; Delete
}
}
;;; $854C: Animated tiles objects - Tourian entrance statue ;;;
{
$87:854C dw 83AC,0080,7800 ; Tourian statue - Phantoon
$87:8552 dw 8414,0040,7220 ; Tourian statue - Ridley
$87:8558 dw 847C,0040,0B40 ; Tourian statue - Kraid
$87:855E dw 84E4,0080,0CA0 ; Tourian statue - Draygon
}
;;; $8564..AA03: Animated tiles ;;;
{
;;; $8564: Crateria lake ;;;
{
; |--------|--------|--------|--------| |--------|--------|--------|--------| |--------|--------|--------|--------|
; |FF7777FF|FF77777F|F777FFFF|F777777F| |FF7777FF|FF77777F|F777FFFF|F777777F| |FF7777FF|FF77777F|F777FFFF|F777777F|
; |77777777|77777777|77777777|77777777| |77777777|77777777|77777777|77777777| |77777777|77777777|77777777|77777777|
; |66666667|77777777|76677777|77767766| |66666677|77777777|66777777|77677666| |66666777|77777776|67777777|76776666|
; |66666666|66666666|67777777|76667777| |76666666|66666666|66777777|77666777| |77666666|66666666|66677777|77766677|
; |65555555|66666677|76666555|55666666| |55555556|66666777|66665555|56666666| |55555566|66667776|66655555|66666665|
; |66666666|66666666|66666666|66666666| |66666666|66666666|66666666|66666666| |66666666|66666666|66666666|66666666|
; |55555555|55555666|55555566|66666555| |55555555|55556665|55555666|66665555| |55555555|55566655|55556666|66655555|
; |55555566|66666665|66666666|66666555| |55555556|66666666|56666666|66666655| |55555555|66666666|65666666|66666665|
; |--------|--------|--------|--------| |--------|--------|--------|--------| |--------|--------|--------|--------|
; |66654444|44456666|55555555|56666666| |66544444|44566665|55555555|66666666| |65444444|45666655|55555556|66666666|
; |55555555|55555555|55666666|55555555| |55555555|55555555|55566666|65555555| |55555555|55555555|55556666|66555555|
; |65666655|55555554|44444445|55445566| |56666555|55555544|44444455|54455666| |66665555|55555444|44444555|44556665|
; |44444444|55555555|55555555|55444444| |44444444|45555555|55555555|55544444| |44444444|44555555|55555555|55554444|
; |55544444|44444444|44444445|55555555| |54444444|44444444|44444555|55555555| |44444444|44444444|44455555|55555554|
; |55555555|54444455|55555555|55555555| |55555555|55544444|55555555|55555555| |55555555|55555444|44555555|55555555|
; |55555555|55555555|55555555|44444555| |55555555|55555555|55555544|44455555| |55555555|55555555|55554444|45555555|
; |55544444|55555554|44444444|44444555| |55555444|44555555|54444444|44444445| |45555554|44445555|55544444|44444444|
; |--------|--------|--------|--------| => |--------|--------|--------|--------| => |--------|--------|--------|--------|
; |44554444|44444444|45555555|44444444| |55444444|44444445|55555544|44444444| |44444444|44444555|55554444|44444455|
; |55544455|54444444|44455554|45555555| |55555444|55544444|44444555|54455555| |55555554|44555444|44444445|55544555|
; |54555555|55555555|55554444|55555555| |55555555|55555555|55444455|55555554| |55555555|55555555|44445555|55555455|
; |55555444|44445555|55555555|54444444| |44555554|44444455|55555555|55544444| |44445555|54444444|55555555|55555444|
; |44444444|44444555|55555555|54444444| |44444444|44455555|55555554|44444444| |44444444|45555555|55555444|44444444|
; |44444455|55555555|55444444|44444444| |44444444|55555555|55554444|44444444| |44444444|44555555|55555544|44444444|
; |44444455|55555555|55544444|44444444| |44445555|55555555|54444444|44444444| |44555555|55555554|44444444|44444444|
; |55555554|44455555|54444444|44455555| |55555555|54444555|55544444|44444555| |55555555|55544445|55555444|44444445|
; |--------|--------|--------|--------| |--------|--------|--------|--------| |--------|--------|--------|--------|
; |55555444|44444444|45555555|44445555| |55544444|44444445|55555544|44555555| |54444444|44444555|55554444|55555555|
; |44444444|44445555|55555555|55554444| |44444444|44444455|55555555|55555544| |44444444|44444444|55555555|55555555|
; |54544444|44444555|55555544|44555555| |54444444|44455555|55554444|55555554| |44444444|45555555|55444455|55555454|
; |55544445|55555544|44444444|44555555| |55555444|45555555|44444444|44445555| |55555554|44455555|55444444|44444455|
; |55555555|54445555|44444444|44444444| |55555554|44555544|44444444|44444455| |55555444|55554444|44444444|44445555|
; |45555444|44555544|44444444|44444444| |44455554|44445555|44444444|44444444| |44444555|54444455|55444444|44444444|
; |44555554|44444444|45554444|44444444| |55555444|44444445|55444444|44444444| |55544444|44444555|44444444|44444455|
; |54444444|44444444|44444444|44555555| |55544444|44444444|44444444|44445555| |55555444|44444444|44444444|44444455|
; |--------|--------|--------|--------| |--------|--------|--------|--------| |--------|--------|--------|--------|
$87:8564 db FF,FF,FF,FF,01,FF,00,FF,7F,80,00,FF,FF,00,FC,03,FF,C3,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,FF,FF,FF,FF,FF,00,FF,03,FF,00,FF,F8,07,01,FE,FF,C1,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,FF,FF,FF,9F,FF,7F,FF,87,F8,00,FF,FC,03,00,FF,FF,8F,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,FF,FF,FF,EC,FF,8F,FF,C0,3F,00,FF,07,F8,07,F8,FF,81,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
10,E0,FF,00,43,BC,00,00,E0,00,FF,00,FF,00,E0,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
10,0F,FF,00,FE,00,FF,00,00,00,83,00,FF,00,FE,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,00,C0,3F,01,00,FF,00,01,00,FF,00,FF,00,00,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
80,7F,FF,00,CC,03,C0,00,FF,00,FF,00,07,00,07,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
30,00,E3,00,BF,00,F8,00,00,00,03,00,03,00,FE,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
00,00,80,00,FF,00,0F,00,07,00,FF,00,FF,00,1F,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
7F,00,1E,00,F0,00,FF,00,FF,00,C0,00,E0,00,80,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
00,00,7F,00,FF,00,80,00,80,00,00,00,00,00,1F,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
F8,00,00,00,A0,00,E1,00,FF,00,78,00,3E,00,80,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
00,00,0F,00,07,00,FC,00,8F,00,3C,00,00,00,00,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
7F,00,FF,00,FC,00,00,00,00,00,00,00,70,00,00,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
0F,00,F0,00,3F,00,3F,00,00,00,00,00,00,00,3F,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00
$87:8764 db FF,FF,FF,FF,03,FF,80,FF,FE,01,00,FF,FF,00,FE,01,FF,C3,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,FF,FF,FF,FF,FF,00,FF,07,FF,00,FF,F1,0E,00,FF,FF,C1,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,FF,FF,FF,3F,FF,3F,FF,0F,F0,00,FF,F8,07,80,7F,FF,8F,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,FF,FF,FF,D8,FF,C7,FF,80,7F,00,FF,0F,F0,03,FC,FF,81,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
20,C0,FF,00,87,78,00,00,80,00,FF,00,FF,00,F8,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
21,1E,FF,00,FC,00,7F,00,00,00,E0,00,FF,00,3F,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,00,E0,1F,03,00,FF,00,07,00,FF,00,FC,00,80,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
00,FF,7F,80,98,07,E0,00,FF,00,FF,00,1F,00,01,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
C0,00,F8,00,FF,00,3E,00,00,00,00,00,0F,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
01,00,E0,00,FF,00,03,00,1F,00,FF,00,FF,00,87,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FC,00,07,00,C3,00,FF,00,FE,00,F0,00,80,00,E0,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
00,00,9F,00,FE,00,E0,00,00,00,00,00,00,00,07,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
E0,00,00,00,80,00,F8,00,FE,00,1E,00,F8,00,E0,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
01,00,03,00,1F,00,7F,00,3C,00,0F,00,01,00,00,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FC,00,FF,00,F0,00,00,00,00,00,00,00,C0,00,00,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
3F,00,FC,00,FE,00,0F,00,03,00,00,00,00,00,0F,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00
$87:8964 db FF,FF,FF,FF,07,FF,C0,FF,FC,03,00,FF,FF,00,FF,00,FF,C3,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,FF,FF,FF,FE,FF,00,FF,0E,FF,00,FF,E3,1C,00,FF,FF,C1,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,FF,FF,FF,7F,FF,1F,FF,1F,E0,00,FF,F0,0F,40,BF,FF,8F,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,FF,FF,FF,B0,FF,E3,FF,01,FE,00,FF,1F,E0,01,FE,FF,81,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
40,80,FF,00,0F,F0,00,00,00,00,FF,00,FF,00,7E,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
43,3C,FF,00,F8,00,3F,00,00,00,F8,00,FF,00,0F,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FE,01,F0,0F,07,00,FF,00,1F,00,3F,00,F0,00,E0,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
00,FF,3F,C0,31,0E,F0,00,FE,00,FF,00,7F,00,00,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
00,00,FE,00,FF,00,0F,00,00,00,00,00,3F,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
07,00,38,00,FF,00,80,00,7F,00,3F,00,FE,00,E1,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
F0,00,01,00,0F,00,FF,00,F8,00,FC,00,00,00,F8,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
03,00,E7,00,FB,00,F8,00,00,00,00,00,00,00,01,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
80,00,00,00,00,00,FE,00,F8,00,07,00,E0,00,F8,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
07,00,00,00,7F,00,1F,00,F0,00,83,00,07,00,00,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
F0,00,FF,00,C3,00,C0,00,00,00,C0,00,00,00,00,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,
FF,00,FF,00,FA,00,03,00,0F,00,00,00,03,00,03,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00
}
;;; $8B64: Unused. Crateria lava ;;;
{
; |--------|--------| |--------|--------| |--------|--------| |--------|--------|
; | | | | | | | | | | | |
; | | | | | | | | | | | |
; | | | | | | | | | | | |
; | | | | | | | | | | | |
; | | | | | | | | | | 8 |D |
; | | | | | | | D9 |D9 | | D | 8 |
; | D | 9 | | DDD|9 | | 8D 8 |8 8D | | | |
; |99 DDD|9 D 99| | 9DE888|89C9 | | 8899DD|9988 | | 8 99 | D 99 |
; |--------|--------| |--------|--------| |--------|--------| |--------|--------|
; |9888DD88|89888899| |988DD888|899C8899| |9D89C999|9C99D889| |88999889|9988DD99|
; |9D88D888|9C8DDD89| |9D88DD88|99C99DD9| |88DCDCDD|CDCD88D9| |998999DD|98899888|
; |99888D89|C8998899| |99988889|CC889999| |999D8D88|D8D88999| |98898888|89999999|
; |89989888|9999D998| |88DD9888|999999D9| |D9999988|89989999| |899DD999|DD988988|
; |99999899|99999999| => |99999999|C9999999| => |99999999|99999999| => |99999999|999998D8|
; |99998D89|99999999| |99999999|99999999| |99C99999|99999999| |99999999|99999989|
; |99999899|9F999999| |99999999|99999999| |99999999|99999D99| |99999999|99999999|
; |99999999|99999999| |9F999999|99998999| |99999999|99999999| |999999D9|99999999|
; |--------|--------| |--------|--------| |--------|--------| |--------|--------|
; |99999999|99999999| |99999999|9998D899| |99999899|99999999| |99999999|99F99999|
; |99C99999|99999999| |99999999|99998999| |99998D89|99999999| |99999999|99999999|
; |99999999|99999D99| |99999999|99999999| |99999899|9C999999| |99999999|99999999|
; |99999999|99999999| |9999D999|99999999| |99999999|99999999| |999C9999|99999989|
; |99999899|99999999| |99999999|C9999999| |99999999|99999999| |99999999|999998D8|
; |99998D89|99999999| |99999999|99999999| |99C99999|99999999| |99999999|99999989|
; |99999899|9F999999| |99999999|99999999| |99999999|99999D99| |99999999|99999999|
; |99999999|99999999| |9F999999|99998999| |99999999|99999999| |999999D9|99999999|
; |--------|--------| |--------|--------| |--------|--------| |--------|--------|
$87:8B64 db 00,00,00,00,00,00,00,00,00,00,00,00,10,00,C7,00,00,00,00,00,00,00,00,00,00,00,00,00,10,10,07,C7,
00,00,00,00,00,00,00,00,00,00,00,00,20,00,8B,00,00,00,00,00,00,00,00,00,00,00,00,00,00,20,08,8B,
8C,00,C8,00,C5,00,68,00,FB,00,F5,00,FB,00,FF,00,0C,FF,48,FF,04,FF,00,FF,00,FF,04,FF,00,FF,00,FF,
43,00,9D,00,33,00,FE,00,FF,00,FF,00,FF,40,FF,00,00,FF,5C,FF,80,FF,08,FF,00,FF,00,FF,40,FF,00,FF,
FF,00,DF,00,FF,00,FF,00,FB,00,F5,00,FB,00,FF,00,00,FF,20,FF,00,FF,00,FF,00,FF,04,FF,00,FF,00,FF,
FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,40,FF,00,00,FF,00,FF,04,FF,00,FF,00,FF,00,FF,40,FF,00,FF
$87:8C24 db 00,00,00,00,00,00,00,00,00,00,00,00,07,00,30,08,00,00,00,00,00,00,00,00,00,00,00,00,07,07,18,3F,
00,00,00,00,00,00,00,00,00,00,00,00,80,00,50,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,20,F0,
98,00,CC,00,E1,00,38,00,FF,00,FF,00,FF,00,FF,40,18,FF,4C,FF,00,FF,30,FF,00,FF,00,FF,00,FF,40,FF,
63,00,DF,00,0F,00,FF,00,7F,00,FF,00,FF,00,F7,00,10,FF,26,FF,C0,FF,02,FF,80,FF,00,FF,00,FF,00,FF,
FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,00,FF,40,00,FF,00,FF,00,FF,08,FF,00,FF,00,FF,00,FF,40,FF,
EB,00,F7,00,FF,00,FF,00,7F,00,FF,00,FF,00,F7,00,08,FF,00,FF,00,FF,00,FF,80,FF,00,FF,00,FF,00,FF
$87:8CE4 db 00,00,00,00,00,00,00,00,00,00,0C,00,20,00,0F,00,00,00,00,00,00,00,00,00,00,00,08,0C,20,64,03,3F,
00,00,00,00,00,00,00,00,00,00,C0,00,08,00,C0,00,00,00,00,00,00,00,00,00,00,00,80,C0,08,98,00,F0,
D7,00,2B,00,F4,00,FC,00,FF,00,DF,00,FF,00,FF,00,48,FF,3F,FF,14,FF,80,FF,00,FF,20,FF,00,FF,00,FF,
B9,00,53,00,A7,00,6F,00,FF,00,FF,00,FF,00,FF,00,48,FF,F2,FF,A0,FF,00,FF,00,FF,00,FF,04,FF,00,FF,
FB,00,F5,00,FB,00,FF,00,FF,00,DF,00,FF,00,FF,00,00,FF,04,FF,00,FF,00,FF,00,FF,20,FF,00,FF,00,FF,
FF,00,FF,00,BF,00,FF,00,FF,00,FF,00,FF,00,FF,00,00,FF,00,FF,40,FF,00,FF,00,FF,00,FF,04,FF,00,FF
$87:8DA4 db 00,00,00,00,00,00,00,00,00,00,40,00,00,00,06,00,00,00,00,00,00,00,00,00,00,08,40,40,00,00,00,16,
00,00,00,00,00,00,00,00,80,00,00,00,00,00,46,00,00,00,00,00,00,00,00,00,80,80,00,10,00,00,40,46,
39,00,DF,00,90,00,7F,00,FF,00,FF,00,FF,00,FF,00,00,FF,03,FF,00,FF,18,FF,00,FF,00,FF,00,FF,02,FF,
CF,00,98,00,7F,00,E4,00,FA,00,FD,00,FF,00,FF,00,0C,FF,00,FF,00,FF,C0,FF,02,FF,00,FF,00,FF,00,FF,
FF,00,FF,00,FF,00,EF,00,FF,00,FF,00,FF,00,FF,00,00,FF,00,FF,00,FF,10,FF,00,FF,00,FF,00,FF,02,FF,
FF,20,FF,00,FF,00,FD,00,FA,00,FD,00,FF,00,FF,00,20,FF,00,FF,00,FF,00,FF,02,FF,00,FF,00,FF,00,FF
}
;;; $8E64: Wrecked Ship treadmill ;;;
{
; |--------| |--------| |--------| |--------|
; | AAAAAA | |A AAAAA| |AAA AAA| |AAAAA A|
; |AEE8888A| |8AAEE888| |888AAEE8| |E8888AAE|
; |B999999B| |9BB99999| |999BB999| |99999BB9|
; |BAAAAAAB| |ABBAAAAA| |AAABBAAA| |AAAAABBA|
; |FBBBBBBF| => |BFFBBBBB| => |BBBFFBBB| => |BBBBBFFB|
; |FFFFFFFF| |FFFFFFFF| |FFFFFFFF| |FFFFFFFF|
; |7EE44444| |7EE44444| |7EE44444| |7EE44444|
; |75555555| |75555555| |75555555| |75555555|
; |--------| |--------| |--------| |--------|
$87:8E64 db 00,7E,00,E1,FF,81,81,FF,FF,FF,FF,FF,80,E0,FF,80,00,7E,60,FF,00,FF,00,FF,81,FF,FF,FF,FF,60,FF,00
$87:8E84 db 00,9F,00,78,FF,60,60,FF,FF,FF,FF,FF,80,E0,FF,80,00,9F,18,FF,00,FF,00,FF,60,FF,FF,FF,FF,60,FF,00
$87:8EA4 db 00,E7,00,1E,FF,18,18,FF,FF,FF,FF,FF,80,E0,FF,80,00,E7,06,FF,00,FF,00,FF,18,FF,FF,FF,FF,60,FF,00
$87:8EC4 db 00,F9,00,87,FF,06,06,FF,FF,FF,FF,FF,80,E0,FF,80,00,F9,81,FF,00,FF,00,FF,06,FF,FF,FF,FF,60,FF,00