-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathtetris.asm
9014 lines (8501 loc) · 539 KB
/
tetris.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
;Tetris Dissassembly, 8-Jun-96
;
; Known cheats:
; Down + [Start] at intro screen --> Expert Mode
;
; Ram Locations:
; ffcc = Set to 1 on serial transfer completion
jp l020c ; 0000 c3 0c 02 C..
.db 0,0,0,0,0 ; 0003 00 00 00 00 00 .....
jp l020c ; 0008 c3 0c 02 C..
.db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ; 000b ff ff ff ff ff ff ff ff ff ff ff ff ............
.db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ; 0017 ff ff ff ff ff ff ff ff ff ff ff ff ............
.db 0ffh,0ffh,0ffh,0ffh,0ffh ; 0023 ff ff ff ff ff .....
add a,a ; 0028 87 .
pop hl ; 0029 e1 a
ld e,a ; 002a 5f _
ld d,0 ; 002b 16 00 ..
add hl,de ; 002d 19 .
ld e,(hl) ; 002e 5e ^
inc hl ; 002f 23 #
ld d,(hl) ; 0030 56 V
push de ; 0031 d5 U
pop hl ; 0032 e1 a
jp (hl) ; 0033 e9 i
.db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ; 0034 ff ff ff ff ff ff ff ff ff ff ff ff ............
;VBlank IRQ
jp l017e ; 0040 c3 7e 01 C..
.db 0ffh,0ffh,0ffh,0ffh,0ffh ; 0043 ff ff ff ff ff .....
;LCDC Status IRQ (Not Used)
jp l26be ; 0048 c3 be 26 C>&
.db 0ffh,0ffh,0ffh,0ffh,0ffh ; 004b ff ff ff ff ff .....
;Timer Overflow IRQ (Not Used)
jp l26be ; 0050 c3 be 26 C>&
.db 0ffh,0ffh,0ffh,0ffh,0ffh ; 0053 ff ff ff ff ff .....
;Serial Transfer Completion IRQ
jp l005b ; 0058 c3 5b 00 C[.
l005b: push af ; 005b f5 u
push hl ; 005c e5 e
push de ; 005d d5 U
push bc ; 005e c5 E
call l006b ; 005f cd 6b 00 Mk.
ld a,1 ; 0062 3e 01 >.
ldh (0cch),a ; 0064 e0 cc `L
pop bc ; 0066 c1 A
pop de ; 0067 d1 Q
pop hl ; 0068 e1 a
pop af ; 0069 f1 q
reti ; 006a d9 Y
l006b: ldh a,(0cdh) ; 006b f0 cd pM
rst 28h ; 006d ef o
.dw l0078 ; 006e 78 00 x.
.dw l009f ; 0070 9f 00 ..
.dw l00a4 ; 0072 a4 00 $.
.dw l00ba ; 0074 ba 00 :.
.dw l27ea ; 0076 ea 27 j'
l0078: ldh a,(0e1h) ; 0078 f0 e1 pa
cp 7 ; 007a fe 07 ..
jr z,l0086 ; 007c 28 08 (.
cp 6 ; 007e fe 06 ..
ret z ; 0080 c8 H
ld a,6 ; 0081 3e 06 >.
ldh (0e1h),a ; 0083 e0 e1 `a
ret ; 0085 c9 I
l0086: ldh a,(1) ; 0086 f0 01 p.
cp 55h ; 0088 fe 55 .U
jr nz,l0094 ; 008a 20 08 .
ld a,29h ; 008c 3e 29 >)
ldh (0cbh),a ; 008e e0 cb `K
ld a,1 ; 0090 3e 01 >.
jr l009c ; 0092 18 08 ..
l0094: cp 29h ; 0094 fe 29 .)
ret nz ; 0096 c0 @
ld a,55h ; 0097 3e 55 >U
ldh (0cbh),a ; 0099 e0 cb `K
xor a ; 009b af /
l009c: ldh (2),a ; 009c e0 02 `.
ret ; 009e c9 I
l009f: ldh a,(1) ; 009f f0 01 p.
ldh (0d0h),a ; 00a1 e0 d0 `P
ret ; 00a3 c9 I
l00a4: ldh a,(1) ; 00a4 f0 01 p.
ldh (0d0h),a ; 00a6 e0 d0 `P
ldh a,(0cbh) ; 00a8 f0 cb pK
cp 29h ; 00aa fe 29 .)
ret z ; 00ac c8 H
ldh a,(0cfh) ; 00ad f0 cf pO
ldh (1),a ; 00af e0 01 `.
ld a,0ffh ; 00b1 3e ff >.
ldh (0cfh),a ; 00b3 e0 cf `O
ld a,80h ; 00b5 3e 80 >.
ldh (2),a ; 00b7 e0 02 `.
ret ; 00b9 c9 I
l00ba: ldh a,(1) ; 00ba f0 01 p.
ldh (0d0h),a ; 00bc e0 d0 `P
ldh a,(0cbh) ; 00be f0 cb pK
cp 29h ; 00c0 fe 29 .)
ret z ; 00c2 c8 H
ldh a,(0cfh) ; 00c3 f0 cf pO
ldh (1),a ; 00c5 e0 01 `.
ei ; 00c7 fb {
call l0a98 ; 00c8 cd 98 0a M..
ld a,80h ; 00cb 3e 80 >.
ldh (2),a ; 00cd e0 02 `.
ret ; 00cf c9 I
; This routine is not used.
ldh a,(0cdh) ; 00d0 f0 cd pM
cp 2 ; 00d2 fe 02 ..
ret nz ; 00d4 c0 @
xor a ; 00d5 af /
ldh (0fh),a ; 00d6 e0 0f `.
ei ; 00d8 fb {
ret ; 00d9 c9 I
.db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ; 00da ff ff ff ff ff ff ff ff ff ff ff ff ............
.db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ; 00e6 ff ff ff ff ff ff ff ff ff ff ff ff ............
.db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ; 00f2 ff ff ff ff ff ff ff ff ff ff ff ff ............
.db 0ffh,0ffh ; 00fe ff ff ..
; Code Begin
nop ; 0100 00 .
jp l0150 ; 0101 c3 50 01 CP.
; Nintendo Title Character Area
.db 0ceh,0edh,66h,66h,0cch,0dh,0,0bh,3,73h,0,83h,0,0ch,0,0dh ; 0104 ce ed 66 66 cc 0d 00 0b 03 73 00 83 00 0c 00 0d NmffL....s......
.db 0,8,11h,1fh,88h,89h,0,0eh,0dch,0cch,6eh,0e6h,0ddh,0ddh,0d9h ; 0114 00 08 11 1f 88 89 00 0e dc cc 6e e6 dd dd d9 ........\Lnf]]Y
.db 99h,0bbh,0bbh,67h,63h,6eh,0eh,0ech,0cch,0ddh,0dch,99h,9fh ; 0123 99 bb bb 67 63 6e 0e ec cc dd dc 99 9f .;;gcn.lL]\..
.db 0bbh,0b9h,33h,3eh,54h,45h,54h,52h ; 0130 bb b9 33 3e 54 45 54 52 ;93>TETR
l0138: .db 49h,53h,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 0138 49 53 00 00 00 00 00 00 00 00 00 00 00 00 00 IS.............
; Cartridge type
.db 0 ; 0147 00 .
; Rom Size
.db 0 ; 0148 00 .
; Ram Size
.db 0 ; 0149 00 .
; Manufacturer Code
.dw 100h ; 014a 00 01 ..
; Version Number
.db 1 ; 014c 01 .
; Complement Check
.db 0ah ; 014d 0a .
; Checksum
.dw 0bf16h ; 014e 16 bf .?
l0150: jp l020c ; 0150 c3 0c 02 C..
; This routine is not used.
call l29e3 ; 0153 cd e3 29 Mc)
l0156: ldh a,(41h) ; 0156 f0 41 pA
and 3 ; 0158 e6 03 f.
jr nz,l0156 ; 015a 20 fa z
ld b,(hl) ; 015c 46 F
l015d: ldh a,(41h) ; 015d f0 41 pA
and 3 ; 015f e6 03 f.
jr nz,l015d ; 0161 20 fa z
ld a,(hl) ; 0163 7e .
and b ; 0164 a0
ret ; 0165 c9 I
; Add number in DE to score at (hl).
; Stop counting if score reaches 999999.
l0166: ld a,e ; 0166 7b {
add a,(hl) ; 0167 86 .
daa ; 0168 27 '
ldi (hl),a ; 0169 22 "
ld a,d ; 016a 7a z
adc a,(hl) ; 016b 8e .
daa ; 016c 27 '
ldi (hl),a ; 016d 22 "
ld a,0 ; 016e 3e 00 >.
adc a,(hl) ; 0170 8e .
daa ; 0171 27 '
ld (hl),a ; 0172 77 w
ld a,1 ; 0173 3e 01 >.
ldh (0e0h),a ; 0175 e0 e0 ``
ret nc ; 0177 d0 P
ld a,99h ; 0178 3e 99 >.
ldd (hl),a ; 017a 32 2
ldd (hl),a ; 017b 32 2
ld (hl),a ; 017c 77 w
ret ; 017d c9 I
; VBlank Interrupt Routine
l017e: push af ; 017e f5 u
push bc ; 017f c5 E
push de ; 0180 d5 U
push hl ; 0181 e5 e
ldh a,(0ceh) ; 0182 f0 ce pN
and a ; 0184 a7 '
jr z,l0199 ; 0185 28 12 (.
ldh a,(0cbh) ; 0187 f0 cb pK
cp 29h ; 0189 fe 29 .)
jr nz,l0199 ; 018b 20 0c .
xor a ; 018d af /
ldh (0ceh),a ; 018e e0 ce `N
; Send byte at ffcf out serial port using internal clock
ldh a,(0cfh) ; 0190 f0 cf pO
ldh (1),a ; 0192 e0 01 `.
ld hl,0ff02h ; 0194 21 02 ff !..
ld (hl),81h ; 0197 36 81 6.
l0199: call l21e0 ; 0199 cd e0 21 M`!
call l23cc ; 019c cd cc 23 ML#
call l23b7 ; 019f cd b7 23 M7#
call l239e ; 01a2 cd 9e 23 M.#
call l238c ; 01a5 cd 8c 23 M.#
call l237d ; 01a8 cd 7d 23 M}#
call l236e ; 01ab cd 6e 23 Mn#
call l235f ; 01ae cd 5f 23 M_#
call l2350 ; 01b1 cd 50 23 MP#
call l2341 ; 01b4 cd 41 23 MA#
call l2332 ; 01b7 cd 32 23 M2#
call l2323 ; 01ba cd 23 23 M##
call l22f8 ; 01bd cd f8 22 Mx"
call l22e9 ; 01c0 cd e9 22 Mi"
call l22da ; 01c3 cd da 22 MZ"
call l22cb ; 01c6 cd cb 22 MK"
call l22bc ; 01c9 cd bc 22 M<"
call l22ad ; 01cc cd ad 22 M-"
call l229e ; 01cf cd 9e 22 M."
call l1ed7 ; 01d2 cd d7 1e MW.
; Initiate DMA transfer
call 0ffb6h ; 01d5 cd b6 ff M6.
call l18ca ; 01d8 cd ca 18 MJ.
ld a,(0c0ceh) ; 01db fa ce c0 zN@
and a ; 01de a7 '
jr z,l01fb ; 01df 28 1a (.
ldh a,(98h) ; 01e1 f0 98 p.
cp 3 ; 01e3 fe 03 ..
jr nz,l01fb ; 01e5 20 14 .
ld hl,986dh ; 01e7 21 6d 98 !m.
call l243b ; 01ea cd 3b 24 M;$
ld a,1 ; 01ed 3e 01 >.
ldh (0e0h),a ; 01ef e0 e0 ``
ld hl,9c6dh ; 01f1 21 6d 9c !m.
call l243b ; 01f4 cd 3b 24 M;$
xor a ; 01f7 af /
ld (0c0ceh),a ; 01f8 ea ce c0 jN@
l01fb: ld hl,0ffe2h ; 01fb 21 e2 ff !b.
inc (hl) ; 01fe 34 4
xor a ; 01ff af /
ldh (43h),a ; 0200 e0 43 `C
ldh (42h),a ; 0202 e0 42 `B
inc a ; 0204 3c <
ldh (85h),a ; 0205 e0 85 `.
pop hl ; 0207 e1 a
pop de ; 0208 d1 Q
pop bc ; 0209 c1 A
pop af ; 020a f1 q
reti ; 020b d9 Y
; Set ram from d000 to dfff to 0
l020c: xor a ; 020c af /
ld hl,0dfffh ; 020d 21 ff df !._
ld c,10h ; 0210 0e 10 ..
ld b,0 ; 0212 06 00 ..
l0214: ldd (hl),a ; 0214 32 2
dec b ; 0215 05 .
jr nz,l0214 ; 0216 20 fc |
dec c ; 0218 0d .
jr nz,l0214 ; 0219 20 f9 y
; Clear Interrupt Flag & Enable Registers
l021b: ld a,1 ; 021b 3e 01 >.
di ; 021d f3 s
ldh (0fh),a ; 021e e0 0f `.
ldh (0ffh),a ; 0220 e0 ff `.
; Set scroll regs, LCDC Status, & Serial port to 0
xor a ; 0222 af /
ldh (42h),a ; 0223 e0 42 `B
ldh (43h),a ; 0225 e0 43 `C
ldh (0a4h),a ; 0227 e0 a4 `$
ldh (41h),a ; 0229 e0 41 `A
ldh (1),a ; 022b e0 01 `.
ldh (2),a ; 022d e0 02 `.
; Set LCD control to Operation
ld a,80h ; 022f 3e 80 >.
ldh (40h),a ; 0231 e0 40 `@
; Loop until LCDC Y-Coord = 148
l0233: ldh a,(44h) ; 0233 f0 44 pD
cp 94h ; 0235 fe 94 ..
jr nz,l0233 ; 0237 20 fa z
; Set LCD control to Stop completely
ld a,3 ; 0239 3e 03 >.
ldh (40h),a ; 023b e0 40 `@
; Setup colors for Background & Sprites
ld a,0e4h ; 023d 3e e4 >d
ldh (47h),a ; 023f e0 47 `G
ldh (48h),a ; 0241 e0 48 `H
ld a,0c4h ; 0243 3e c4 >D
ldh (49h),a ; 0245 e0 49 `I
; Setup sound channel outputs
ld hl,0ff26h ; 0247 21 26 ff !&.
ld a,80h ; 024a 3e 80 >.
ldd (hl),a ; 024c 32 2
ld a,0ffh ; 024d 3e ff >.
ldd (hl),a ; 024f 32 2
ld (hl),77h ; 0250 36 77 6w
; Set Rom bank to zero
; (Not needed since the original has no MBC.)
ld a,1 ; 0252 3e 01 >.
ld (2000h),a ; 0254 ea 00 20 j.
; Initialize stack pointer
ld sp,0cfffh ; 0257 31 ff cf 1.O
; Set ram from df00 to dfff to 0
xor a ; 025a af /
ld hl,0dfffh ; 025b 21 ff df !._
ld b,0 ; 025e 06 00 ..
l0260: ldd (hl),a ; 0260 32 2
dec b ; 0261 05 .
jr nz,l0260 ; 0262 20 fc |
; Set ram from c000 to cfff to 0
ld hl,0cfffh ; 0264 21 ff cf !.O
ld c,10h ; 0267 0e 10 ..
ld b,0 ; 0269 06 00 ..
l026b: ldd (hl),a ; 026b 32 2
dec b ; 026c 05 .
jr nz,l026b ; 026d 20 fc |
dec c ; 026f 0d .
jr nz,l026b ; 0270 20 f9 y
; Set ram from 8000 to 9fff to 0
ld hl,9fffh ; 0272 21 ff 9f !..
ld c,20h ; 0275 0e 20 .
xor a ; 0277 af /
ld b,0 ; 0278 06 00 ..
l027a: ldd (hl),a ; 027a 32 2
dec b ; 027b 05 .
jr nz,l027a ; 027c 20 fc |
dec c ; 027e 0d .
jr nz,l027a ; 027f 20 f9 y
; Set ram from fe00 to feff to 0
ld hl,0feffh ; 0281 21 ff fe !..
ld b,0 ; 0284 06 00 ..
l0286: ldd (hl),a ; 0286 32 2
dec b ; 0287 05 .
jr nz,l0286 ; 0288 20 fc |
; Set ram from ff7f to fffe to 0
ld hl,0fffeh ; 028a 21 fe ff !..
ld b,80h ; 028d 06 80 ..
l028f: ldd (hl),a ; 028f 32 2
dec b ; 0290 05 .
jr nz,l028f ; 0291 20 fc |
; Copy DMA transfer routine to ffb6
ld c,0b6h ; 0293 0e b6 .6
ld b,0ch ; 0295 06 0c ..
ld hl,l2a7f ; 0297 21 7f 2a !.*
l029a: ldi a,(hl) ; 029a 2a *
ldh (c),a ; 029b e2 b
inc c ; 029c 0c .
dec b ; 029d 05 .
jr nz,l029a ; 029e 20 fa z
; Fill screen with 2f
call l2795 ; 02a0 cd 95 27 M.'
; Reset sound registers
call l7ff3 ; 02a3 cd f3 7f Ms.
; Enable serial i/o & v blank interrupts
ld a,9 ; 02a6 3e 09 >.
ldh (0ffh),a ; 02a8 e0 ff `.
ld a,37h ; 02aa 3e 37 >7
ldh (0c0h),a ; 02ac e0 c0 `@
ld a,1ch ; 02ae 3e 1c >.
ldh (0c1h),a ; 02b0 e0 c1 `A
; Setup branch point for routine at 2f8
ld a,24h ; 02b2 3e 24 >$
ldh (0e1h),a ; 02b4 e0 e1 `a
; Set LCD control to Operation
ld a,80h ; 02b6 3e 80 >.
ldh (40h),a ; 02b8 e0 40 `@
ei ; 02ba fb {
xor a ; 02bb af /
; Clear all interrupt flags
ldh (0fh),a ; 02bc e0 0f `.
; Set window x & y position to 0
ldh (4ah),a ; 02be e0 4a `J
ldh (4bh),a ; 02c0 e0 4b `K
; Set timer modulo to 0
ldh (6),a ; 02c2 e0 06 `.
; Read buttons & return values
l02c4: call l29a6 ; 02c4 cd a6 29 M&)
call l02f8 ; 02c7 cd f8 02 Mx.
call l7ff0 ; 02ca cd f0 7f Mp.
; If all arrow keys are down at the
; same time, then jump to 21b
ldh a,(80h) ; 02cd f0 80 p.
and 0fh ; 02cf e6 0f f.
cp 0fh ; 02d1 fe 0f ..
jp z,l021b ; 02d3 ca 1b 02 J..
ld hl,0ffa6h ; 02d6 21 a6 ff !&.
ld b,2 ; 02d9 06 02 ..
l02db: ld a,(hl) ; 02db 7e .
and a ; 02dc a7 '
jr z,l02e0 ; 02dd 28 01 (.
dec (hl) ; 02df 35 5
l02e0: inc l ; 02e0 2c ,
dec b ; 02e1 05 .
jr nz,l02db ; 02e2 20 f7 w
ldh a,(0c5h) ; 02e4 f0 c5 pE
and a ; 02e6 a7 '
jr z,l02ed ; 02e7 28 04 (.
ld a,9 ; 02e9 3e 09 >.
ldh (0ffh),a ; 02eb e0 ff `.
; Wait for a VBlank interrupt to occur
l02ed: ldh a,(85h) ; 02ed f0 85 p.
and a ; 02ef a7 '
jr z,l02ed ; 02f0 28 fb ({
xor a ; 02f2 af /
ldh (85h),a ; 02f3 e0 85 `.
jp l02c4 ; 02f5 c3 c4 02 CD.
l02f8: ldh a,(0e1h) ; 02f8 f0 e1 pa
rst 28h ; 02fa ef o
.dw l1bce ; 02fb ce 1b N.
.dw l1ce2 ; 02fd e2 1c b.
.dw l1244 ; 02ff 44 12 D.
.dw l127b ; 0301 7b 12 {.
.dw l1d06 ; 0303 06 1d ..
.dw l1d26 ; 0305 26 1d &.
.dw l03ae ; 0307 ae 03 ..
.dw l0479 ; 0309 79 04 y.
.dw l1444 ; 030b 44 14 D.
.dw l148c ; 030d 8c 14 ..
.dw l1a07 ; 030f 07 1a ..
.dw l1dc0 ; 0311 c0 1d @.
.dw l1f16 ; 0313 16 1f ..
.dw l1f1f ; 0315 1f 1f ..
.dw l1525 ; 0317 25 15 %.
.dw l14b0 ; 0319 b0 14 0.
.dw l157b ; 031b 7b 15 {.
.dw l15bf ; 031d bf 15 ?.
.dw l1629 ; 031f 29 16 ).
.dw l167a ; 0321 7a 16 z.
.dw l16eb ; 0323 eb 16 k.
.dw l1913 ; 0325 13 19 ..
.dw l0677 ; 0327 77 06 w.
.dw l072c ; 0329 2c 07 ,.
.dw l0825 ; 032b 25 08 %.
.dw l08e4 ; 032d e4 08 d.
.dw l0b31 ; 032f 31 0b 1.
.dw l0ceb ; 0331 eb 0c k.
.dw l0ad2 ; 0333 d2 0a R.
.dw l0d32 ; 0335 32 0d 2.
.dw l0e23 ; 0337 23 0e #.
.dw l1112 ; 0339 12 11 ..
.dw l0d99 ; 033b 99 0d ..
.dw l0e8a ; 033d 8a 0e ..
.dw l1dce ; 033f ce 1d N.
.dw l1e41 ; 0341 41 1e A.
.dw l0369 ; 0343 69 03 i.
.dw l0393 ; 0345 93 03 ..
.dw l1167 ; 0347 67 11 g.
.dw l11e6 ; 0349 e6 11 f.
.dw l11fc ; 034b fc 11 |.
.dw l121c ; 034d 1c 12 ..
.dw l05c7 ; 034f c7 05 G.
.dw l05f7 ; 0351 f7 05 w.
.dw l12b3 ; 0353 b3 12 3.
.dw l1305 ; 0355 05 13 ..
.dw l1324 ; 0357 24 13 $.
.dw l1351 ; 0359 51 13 Q.
.dw l1367 ; 035b 67 13 g.
.dw l137e ; 035d 7e 13 ..
.dw l13b5 ; 035f b5 13 5.
.dw l13e5 ; 0361 e5 13 e.
.dw l131b ; 0363 1b 13 ..
.dw l03a0 ; 0365 a0 03 .
.dw l27ea ; 0367 ea 27 j'
; Display credits screen
l0369: call l2820 ; 0369 cd 20 28 M (
call l27d7 ; 036c cd d7 27 MW'
ld de,l4a07 ; 036f 11 07 4a ..J
call l27eb ; 0372 cd eb 27 Mk'
call l178a ; 0375 cd 8a 17 M..
ld hl,0c300h ; 0378 21 00 c3 !.C
ld de,l6450 ; 037b 11 50 64 .Pd
l037e: ld a,(de) ; 037e 1a .
ldi (hl),a ; 037f 22 "
inc de ; 0380 13 .
ld a,h ; 0381 7c |
cp 0c4h ; 0382 fe c4 .D
jr nz,l037e ; 0384 20 f8 x
ld a,0d3h ; 0386 3e d3 >S
ldh (40h),a ; 0388 e0 40 `@
; This is responsible for the credit screen ignoring the start
; button for so long. Lower this value to make it respond sooner.
ld a,0fah ; 038a 3e fa >z
ldh (0a6h),a ; 038c e0 a6 `&
ld a,25h ; 038e 3e 25 >%
ldh (0e1h),a ; 0390 e0 e1 `a
ret ; 0392 c9 I
; Wait for initial credit screen timer to run out.
l0393: ldh a,(0a6h) ; 0393 f0 a6 p&
and a ; 0395 a7 '
ret nz ; 0396 c0 @
ld a,0fah ; 0397 3e fa >z
ldh (0a6h),a ; 0399 e0 a6 `&
ld a,35h ; 039b 3e 35 >5
ldh (0e1h),a ; 039d e0 e1 `a
ret ; 039f c9 I
; Look for user pressing a button. If not found, continue credit
; screen for another delay period.
l03a0: ldh a,(81h) ; 03a0 f0 81 p.
and a ; 03a2 a7 '
jr nz,l03a9 ; 03a3 20 04 .
ldh a,(0a6h) ; 03a5 f0 a6 p&
and a ; 03a7 a7 '
ret nz ; 03a8 c0 @
l03a9: ld a,6 ; 03a9 3e 06 >.
ldh (0e1h),a ; 03ab e0 e1 `a
ret ; 03ad c9 I
; Display Intro Select Players Screen
l03ae: call l2820 ; 03ae cd 20 28 M (
xor a ; 03b1 af /
ldh (0e9h),a ; 03b2 e0 e9 `i
ldh (98h),a ; 03b4 e0 98 `.
ldh (9ch),a ; 03b6 e0 9c `.
ldh (9bh),a ; 03b8 e0 9b `.
ldh (0fbh),a ; 03ba e0 fb `{
ldh (9fh),a ; 03bc e0 9f `.
ldh (0e3h),a ; 03be e0 e3 `c
ldh (0c7h),a ; 03c0 e0 c7 `G
call l2293 ; 03c2 cd 93 22 M."
call l2651 ; 03c5 cd 51 26 MQ&
call l27d7 ; 03c8 cd d7 27 MW'
ld hl,0c800h ; 03cb 21 00 c8 !.H
l03ce: ld a,2fh ; 03ce 3e 2f >/
ldi (hl),a ; 03d0 22 "
ld a,h ; 03d1 7c |
cp 0cch ; 03d2 fe cc .L
jr nz,l03ce ; 03d4 20 f8 x
ld hl,0c801h ; 03d6 21 01 c8 !.H
call l26a9 ; 03d9 cd a9 26 M)&
ld hl,0c80ch ; 03dc 21 0c c8 !.H
call l26a9 ; 03df cd a9 26 M)&
ld hl,0ca41h ; 03e2 21 41 ca !AJ
ld b,0ch ; 03e5 06 0c ..
ld a,8eh ; 03e7 3e 8e >.
l03e9: ldi (hl),a ; 03e9 22 "
dec b ; 03ea 05 .
jr nz,l03e9 ; 03eb 20 fc |
ld de,l4b6f ; 03ed 11 6f 4b .oK
call l27eb ; 03f0 cd eb 27 Mk'
call l178a ; 03f3 cd 8a 17 M..
ld hl,0c000h ; 03f6 21 00 c0 !.@
ld (hl),80h ; 03f9 36 80 6.
inc l ; 03fb 2c ,
ld (hl),10h ; 03fc 36 10 6.
inc l ; 03fe 2c ,
ld (hl),58h ; 03ff 36 58 6X
ld a,3 ; 0401 3e 03 >.
ld (0dfe8h),a ; 0403 ea e8 df jh_
ld a,0d3h ; 0406 3e d3 >S
ldh (40h),a ; 0408 e0 40 `@
ld a,7 ; 040a 3e 07 >.
ldh (0e1h),a ; 040c e0 e1 `a
ld a,7dh ; 040e 3e 7d >}
ldh (0a6h),a ; 0410 e0 a6 `&
ld a,4 ; 0412 3e 04 >.
ldh (0c6h),a ; 0414 e0 c6 `F
ldh a,(0e4h) ; 0416 f0 e4 pd
and a ; 0418 a7 '
ret nz ; 0419 c0 @
ld a,13h ; 041a 3e 13 >.
ldh (0c6h),a ; 041c e0 c6 `F
ret ; 041e c9 I
; Start demo mode
l041f: ld a,37h ; 041f 3e 37 >7
ldh (0c0h),a ; 0421 e0 c0 `@
ld a,9 ; 0423 3e 09 >.
ldh (0c2h),a ; 0425 e0 c2 `B
xor a ; 0427 af /
ldh (0c5h),a ; 0428 e0 c5 `E
ldh (0b0h),a ; 042a e0 b0 `0
ldh (0edh),a ; 042c e0 ed `m
ldh (0eah),a ; 042e e0 ea `j
ld a,62h ; 0430 3e 62 >b
ldh (0ebh),a ; 0432 e0 eb `k
ld a,0b0h ; 0434 3e b0 >0
ldh (0ech),a ; 0436 e0 ec `l
ldh a,(0e4h) ; 0438 f0 e4 pd
cp 2 ; 043a fe 02 ..
ld a,2 ; 043c 3e 02 >.
jr nz,l045a ; 043e 20 1a .
ld a,77h ; 0440 3e 77 >w
ldh (0c0h),a ; 0442 e0 c0 `@
ld a,9 ; 0444 3e 09 >.
ldh (0c3h),a ; 0446 e0 c3 `C
ld a,2 ; 0448 3e 02 >.
ldh (0c4h),a ; 044a e0 c4 `D
ld a,63h ; 044c 3e 63 >c
ldh (0ebh),a ; 044e e0 eb `k
ld a,0b0h ; 0450 3e b0 >0
ldh (0ech),a ; 0452 e0 ec `l
ld a,11h ; 0454 3e 11 >.
ldh (0b0h),a ; 0456 e0 b0 `0
ld a,1 ; 0458 3e 01 >.
l045a: ldh (0e4h),a ; 045a e0 e4 `d
ld a,0ah ; 045c 3e 0a >.
ldh (0e1h),a ; 045e e0 e1 `a
call l2820 ; 0460 cd 20 28 M (
call l27ad ; 0463 cd ad 27 M-'
ld de,l4cd7 ; 0466 11 d7 4c .WL
call l27eb ; 0469 cd eb 27 Mk'
call l178a ; 046c cd 8a 17 M..
ld a,0d3h ; 046f 3e d3 >S
ldh (40h),a ; 0471 e0 40 `@
ret ; 0473 c9 I
; This routine is not used.
ld a,0ffh ; 0474 3e ff >.
ldh (0e9h),a ; 0476 e0 e9 `i
ret ; 0478 c9 I
l0479: ldh a,(0a6h) ; 0479 f0 a6 p&
and a ; 047b a7 '
jr nz,l0488 ; 047c 20 0a .
ld hl,0ffc6h ; 047e 21 c6 ff !F.
dec (hl) ; 0481 35 5
jr z,l041f ; 0482 28 9b (.
ld a,7dh ; 0484 3e 7d >}
ldh (0a6h),a ; 0486 e0 a6 `&
l0488: call l0a98 ; 0488 cd 98 0a M..
; Send 55h out serial port using external clock.
ld a,55h ; 048b 3e 55 >U
ldh (1),a ; 048d e0 01 `.
ld a,80h ; 048f 3e 80 >.
ldh (2),a ; 0491 e0 02 `.
ldh a,(0cch) ; 0493 f0 cc pL
and a ; 0495 a7 '
jr z,l04a2 ; 0496 28 0a (.
; Serial Transfer is complete
ldh a,(0cbh) ; 0498 f0 cb pK
and a ; 049a a7 '
jr nz,l04d7 ; 049b 20 3a :
xor a ; 049d af /
ldh (0cch),a ; 049e e0 cc `L
jr l0509 ; 04a0 18 67 .g
l04a2: ldh a,(81h) ; 04a2 f0 81 p.
ld b,a ; 04a4 47 G
ldh a,(0c5h) ; 04a5 f0 c5 pE
; Test for Up button
bit 2,b ; 04a7 cb 50 KP
jr nz,l04f3 ; 04a9 20 48 H
; Test for A button
bit 4,b ; 04ab cb 60 K`
jr nz,l0502 ; 04ad 20 53 S
; Test for B button
bit 5,b ; 04af cb 68 Kh
jr nz,l0507 ; 04b1 20 54 T
; Test for Down button
bit 3,b ; 04b3 cb 58 KX
ret z ; 04b5 c8 H
and a ; 04b6 a7 '
ld a,8 ; 04b7 3e 08 >.
jr z,l04e7 ; 04b9 28 2c (,
ld a,b ; 04bb 78 x
cp 8 ; 04bc fe 08 ..
ret nz ; 04be c0 @
ldh a,(0cbh) ; 04bf f0 cb pK
cp 29h ; 04c1 fe 29 .)
jr z,l04d7 ; 04c3 28 12 (.
; Send 29h out serial port using internal clock.
ld a,29h ; 04c5 3e 29 >)
ldh (1),a ; 04c7 e0 01 `.
ld a,81h ; 04c9 3e 81 >.
ldh (2),a ; 04cb e0 02 `.
l04cd: ldh a,(0cch) ; 04cd f0 cc pL
and a ; 04cf a7 '
jr z,l04cd ; 04d0 28 fb ({
ldh a,(0cbh) ; 04d2 f0 cb pK
and a ; 04d4 a7 '
jr z,l0509 ; 04d5 28 32 (2
l04d7: ld a,2ah ; 04d7 3e 2a >*
l04d9: ldh (0e1h),a ; 04d9 e0 e1 `a
xor a ; 04db af /
ldh (0a6h),a ; 04dc e0 a6 `&
ldh (0c2h),a ; 04de e0 c2 `B
ldh (0c3h),a ; 04e0 e0 c3 `C
ldh (0c4h),a ; 04e2 e0 c4 `D
ldh (0e4h),a ; 04e4 e0 e4 `d
ret ; 04e6 c9 I
l04e7: push af ; 04e7 f5 u
ldh a,(80h) ; 04e8 f0 80 p.
bit 7,a ; 04ea cb 7f K.
jr z,l04f0 ; 04ec 28 02 (.
ldh (0f4h),a ; 04ee e0 f4 `t
l04f0: pop af ; 04f0 f1 q
jr l04d9 ; 04f1 18 e6 .f
l04f3: xor 1 ; 04f3 ee 01 n.
l04f5: ldh (0c5h),a ; 04f5 e0 c5 `E
and a ; 04f7 a7 '
ld a,10h ; 04f8 3e 10 >.
jr z,l04fe ; 04fa 28 02 (.
ld a,60h ; 04fc 3e 60 >`
l04fe: ld (0c001h),a ; 04fe ea 01 c0 j.@
ret ; 0501 c9 I
l0502: and a ; 0502 a7 '
ret nz ; 0503 c0 @
xor a ; 0504 af /
jr l04f3 ; 0505 18 ec .l
l0507: and a ; 0507 a7 '
ret z ; 0508 c8 H
l0509: xor a ; 0509 af /
jr l04f5 ; 050a 18 e9 .i
l050c: ldh a,(0e4h) ; 050c f0 e4 pd
and a ; 050e a7 '
ret z ; 050f c8 H
call l0a98 ; 0510 cd 98 0a M..
xor a ; 0513 af /
ldh (1),a ; 0514 e0 01 `.
ld a,80h ; 0516 3e 80 >.
ldh (2),a ; 0518 e0 02 `.
ldh a,(81h) ; 051a f0 81 p.
bit 3,a ; 051c cb 5f K_
jr z,l052d ; 051e 28 0d (.
ld a,33h ; 0520 3e 33 >3
ldh (1),a ; 0522 e0 01 `.
ld a,81h ; 0524 3e 81 >.
ldh (2),a ; 0526 e0 02 `.
ld a,6 ; 0528 3e 06 >.
ldh (0e1h),a ; 052a e0 e1 `a
ret ; 052c c9 I
l052d: ld hl,0ffb0h ; 052d 21 b0 ff !0.
ldh a,(0e4h) ; 0530 f0 e4 pd
cp 2 ; 0532 fe 02 ..
ld b,10h ; 0534 06 10 ..
jr z,l053a ; 0536 28 02 (.
ld b,1dh ; 0538 06 1d ..
l053a: ld a,(hl) ; 053a 7e .
cp b ; 053b b8 8
ret nz ; 053c c0 @
ld a,6 ; 053d 3e 06 >.
ldh (0e1h),a ; 053f e0 e1 `a
ret ; 0541 c9 I
l0542: ldh a,(0e4h) ; 0542 f0 e4 pd
and a ; 0544 a7 '
ret z ; 0545 c8 H
ldh a,(0e9h) ; 0546 f0 e9 pi
cp 0ffh ; 0548 fe ff ..
ret z ; 054a c8 H
ldh a,(0eah) ; 054b f0 ea pj
and a ; 054d a7 '
jr z,l0555 ; 054e 28 05 (.
dec a ; 0550 3d =
ldh (0eah),a ; 0551 e0 ea `j
jr l0571 ; 0553 18 1c ..
l0555: ldh a,(0ebh) ; 0555 f0 eb pk
ld h,a ; 0557 67 g
ldh a,(0ech) ; 0558 f0 ec pl
ld l,a ; 055a 6f o
ldi a,(hl) ; 055b 2a *
ld b,a ; 055c 47 G
ldh a,(0edh) ; 055d f0 ed pm
xor b ; 055f a8 (
and b ; 0560 a0
ldh (81h),a ; 0561 e0 81 `.
ld a,b ; 0563 78 x
ldh (0edh),a ; 0564 e0 ed `m
ldi a,(hl) ; 0566 2a *
ldh (0eah),a ; 0567 e0 ea `j
ld a,h ; 0569 7c |
ldh (0ebh),a ; 056a e0 eb `k
ld a,l ; 056c 7d }
ldh (0ech),a ; 056d e0 ec `l
jr l0574 ; 056f 18 03 ..
l0571: xor a ; 0571 af /
ldh (81h),a ; 0572 e0 81 `.
l0574: ldh a,(80h) ; 0574 f0 80 p.
ldh (0eeh),a ; 0576 e0 ee `n
ldh a,(0edh) ; 0578 f0 ed pm
ldh (80h),a ; 057a e0 80 `.
ret ; 057c c9 I
; This routine is not used.
xor a ; 057d af /
ldh (0edh),a ; 057e e0 ed `m
jr l0571 ; 0580 18 ef .o
; This instruction is not used.
ret ; 0582 c9 I
l0583: ldh a,(0e4h) ; 0583 f0 e4 pd
and a ; 0585 a7 '
ret z ; 0586 c8 H
ldh a,(0e9h) ; 0587 f0 e9 pi
cp 0ffh ; 0589 fe ff ..
ret nz ; 058b c0 @
ldh a,(80h) ; 058c f0 80 p.
ld b,a ; 058e 47 G
ldh a,(0edh) ; 058f f0 ed pm
cp b ; 0591 b8 8
jr z,l05ad ; 0592 28 19 (.
ldh a,(0ebh) ; 0594 f0 eb pk
ld h,a ; 0596 67 g
ldh a,(0ech) ; 0597 f0 ec pl
ld l,a ; 0599 6f o
ldh a,(0edh) ; 059a f0 ed pm
ldi (hl),a ; 059c 22 "
ldh a,(0eah) ; 059d f0 ea pj
ldi (hl),a ; 059f 22 "
ld a,h ; 05a0 7c |
ldh (0ebh),a ; 05a1 e0 eb `k
ld a,l ; 05a3 7d }
ldh (0ech),a ; 05a4 e0 ec `l
ld a,b ; 05a6 78 x
ldh (0edh),a ; 05a7 e0 ed `m
xor a ; 05a9 af /
ldh (0eah),a ; 05aa e0 ea `j
ret ; 05ac c9 I
l05ad: ldh a,(0eah) ; 05ad f0 ea pj
inc a ; 05af 3c <
ldh (0eah),a ; 05b0 e0 ea `j
ret ; 05b2 c9 I
l05b3: ldh a,(0e4h) ; 05b3 f0 e4 pd
and a ; 05b5 a7 '
ret z ; 05b6 c8 H
ldh a,(0e9h) ; 05b7 f0 e9 pi
and a ; 05b9 a7 '
ret nz ; 05ba c0 @
ldh a,(0eeh) ; 05bb f0 ee pn
ldh (80h),a ; 05bd e0 80 `.
ret ; 05bf c9 I
l05c0: ld hl,0ff02h ; 05c0 21 02 ff !..
set 7,(hl) ; 05c3 cb fe K.
jr l05d1 ; 05c5 18 0a ..
l05c7: ld a,3 ; 05c7 3e 03 >.
ldh (0cdh),a ; 05c9 e0 cd `M
ldh a,(0cbh) ; 05cb f0 cb pK
cp 29h ; 05cd fe 29 .)
jr nz,l05c0 ; 05cf 20 ef o
l05d1: call l144f ; 05d1 cd 4f 14 MO.
ld a,80h ; 05d4 3e 80 >.
ld (0c210h),a ; 05d6 ea 10 c2 j.B
call l2671 ; 05d9 cd 71 26 Mq&
ldh (0ceh),a ; 05dc e0 ce `N
xor a ; 05de af /
ldh (1),a ; 05df e0 01 `.
ldh (0cfh),a ; 05e1 e0 cf `O
ldh (0dch),a ; 05e3 e0 dc `\
ldh (0d2h),a ; 05e5 e0 d2 `R
ldh (0d3h),a ; 05e7 e0 d3 `S
ldh (0d4h),a ; 05e9 e0 d4 `T
ldh (0d5h),a ; 05eb e0 d5 `U
ldh (0e3h),a ; 05ed e0 e3 `c
call l7ff3 ; 05ef cd f3 7f Ms.
ld a,2bh ; 05f2 3e 2b >+
ldh (0e1h),a ; 05f4 e0 e1 `a
ret ; 05f6 c9 I
l05f7: ldh a,(0cbh) ; 05f7 f0 cb pK
cp 29h ; 05f9 fe 29 .)
jr z,l0613 ; 05fb 28 16 (.
ldh a,(0f0h) ; 05fd f0 f0 pp
and a ; 05ff a7 '
jr z,l0620 ; 0600 28 1e (.
xor a ; 0602 af /
ldh (0f0h),a ; 0603 e0 f0 `p
ld de,0c201h ; 0605 11 01 c2 ..B
call l1492 ; 0608 cd 92 14 M..
call l1517 ; 060b cd 17 15 M..
call l2671 ; 060e cd 71 26 Mq&
jr l0620 ; 0611 18 0d ..
l0613: ldh a,(81h) ; 0613 f0 81 p.
bit 0,a ; 0615 cb 47 KG
jr nz,l0620 ; 0617 20 07 .
bit 3,a ; 0619 cb 5f K_
jr nz,l0620 ; 061b 20 03 .
call l14b0 ; 061d cd b0 14 M0.
l0620: ldh a,(0cbh) ; 0620 f0 cb pK
cp 29h ; 0622 fe 29 .)
jr z,l0644 ; 0624 28 1e (.
ldh a,(0cch) ; 0626 f0 cc pL
and a ; 0628 a7 '
ret z ; 0629 c8 H
xor a ; 062a af /
ldh (0cch),a ; 062b e0 cc `L
ld a,39h ; 062d 3e 39 >9
ldh (0cfh),a ; 062f e0 cf `O
ldh a,(0d0h) ; 0631 f0 d0 pP
cp 50h ; 0633 fe 50 .P
jr z,l0664 ; 0635 28 2d (-
ld b,a ; 0637 47 G
ldh a,(0c1h) ; 0638 f0 c1 pA
cp b ; 063a b8 8
ret z ; 063b c8 H
ld a,b ; 063c 78 x
ldh (0c1h),a ; 063d e0 c1 `A
ld a,1 ; 063f 3e 01 >.
ldh (0f0h),a ; 0641 e0 f0 `p
ret ; 0643 c9 I
l0644: ldh a,(81h) ; 0644 f0 81 p.
bit 3,a ; 0646 cb 5f K_
jr nz,l066c ; 0648 20 22 "
bit 0,a ; 064a cb 47 KG
jr nz,l066c ; 064c 20 1e .
ldh a,(0cch) ; 064e f0 cc pL
and a ; 0650 a7 '
ret z ; 0651 c8 H
xor a ; 0652 af /
ldh (0cch),a ; 0653 e0 cc `L
ldh a,(0cfh) ; 0655 f0 cf pO
cp 50h ; 0657 fe 50 .P
jr z,l0664 ; 0659 28 09 (.
ldh a,(0c1h) ; 065b f0 c1 pA
l065d: ldh (0cfh),a ; 065d e0 cf `O
ld a,1 ; 065f 3e 01 >.
ldh (0ceh),a ; 0661 e0 ce `N
ret ; 0663 c9 I
l0664: call l178a ; 0664 cd 8a 17 M..
ld a,16h ; 0667 3e 16 >.
ldh (0e1h),a ; 0669 e0 e1 `a
ret ; 066b c9 I
l066c: ld a,50h ; 066c 3e 50 >P
jr l065d ; 066e 18 ed .m
l0670: ld hl,0ff02h ; 0670 21 02 ff !..
set 7,(hl) ; 0673 cb fe K.
jr l0696 ; 0675 18 1f ..
; Display Mario VS Luigi screen
l0677: ld a,3 ; 0677 3e 03 >.
ldh (0cdh),a ; 0679 e0 cd `M
ldh a,(0cbh) ; 067b f0 cb pK
cp 29h ; 067d fe 29 .)
jr nz,l0670 ; 067f 20 ef o
call l0aa1 ; 0681 cd a1 0a M!.
call l0aa1 ; 0684 cd a1 0a M!.
call l0aa1 ; 0687 cd a1 0a M!.
ld b,0 ; 068a 06 00 ..
ld hl,0c300h ; 068c 21 00 c3 !.C
l068f: call l0aa1 ; 068f cd a1 0a M!.
ldi (hl),a ; 0692 22 "
dec b ; 0693 05 .
jr nz,l068f ; 0694 20 f9 y
l0696: call l2820 ; 0696 cd 20 28 M (
call l27ad ; 0699 cd ad 27 M-'
ld de,l5214 ; 069c 11 14 52 ..R
call l27eb ; 069f cd eb 27 Mk'
call l178a ; 06a2 cd 8a 17 M..
ld a,2fh ; 06a5 3e 2f >/
call l1fdd ; 06a7 cd dd 1f M].
ld a,3 ; 06aa 3e 03 >.
ldh (0ceh),a ; 06ac e0 ce `N
xor a ; 06ae af /
ldh (1),a ; 06af e0 01 `.
ldh (0cfh),a ; 06b1 e0 cf `O
ldh (0dch),a ; 06b3 e0 dc `\
ldh (0d2h),a ; 06b5 e0 d2 `R
ldh (0d3h),a ; 06b7 e0 d3 `S
ldh (0d4h),a ; 06b9 e0 d4 `T