diff options
author | Marcus Huderle <huderlem@gmail.com> | 2015-03-31 20:30:12 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2015-03-31 20:30:12 -0700 |
commit | c2a1d14763b4deafaa112842756b70fb381175b8 (patch) | |
tree | fe4f43ade11a84f4c7b64d368893b607886e9822 | |
parent | 06cab4c02531c2dc7673b4b01c85b61b136cbc90 (diff) |
Dump red field bottom core logic routines.
-rwxr-xr-x | main.asm | 1197 |
1 files changed, 1176 insertions, 21 deletions
@@ -4841,8 +4841,8 @@ CallTable_2822: ; 0x2822 db Bank(Func_1460e), $00 ; STAGE_RED_FIELD_BOTTOM - dw $4652 - db $05, $00 + dw Func_14652 + db Bank(Func_14652), $00 dw $406D db $06, $00 @@ -15020,7 +15020,23 @@ BillboardPicturePointers: ; 0xf1b8 dw IndigoPlateauPic db Bank(IndigoPlateauPic) -INCBIN "baserom.gbc",$f269,$f533 - $f269 +Func_f269: ; 0xf269 + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_f27c + ld a, $37 + ld hl, $4aa8 + ld de, $0030 + ld bc, $0008 + call $07dc +.asm_f27c + ld a, $3 + ld de, $7288 + ld hl, $9887 + call Func_86f + ret + +INCBIN "baserom.gbc",$f288,$f533 - $f288 Func_f533: ; 0xf533 call Func_30e8 @@ -16321,14 +16337,48 @@ Func_1460e: ; 0x1460e call BankSwitch ret -INCBIN "baserom.gbc",$14652,$146a9 - $14652 +Func_14652: ; 0x14652 + call Func_14795 + call Func_15f86 + call Func_147aa + call Func_14880 + call Func_14e10 + call Func_154a9 + call Func_15575 + call Func_151cb + call Func_1652d + call Func_1660c + call Func_167ff + call Func_169a6 + call Func_16d9d + call Func_16279 + call Func_161af + call Func_164e3 + call Func_14733 + call Func_146a2 + call Func_174d0 + ld [$ff8a], a + ld a, Bank(Func_30188) + ld hl, Func_30188 + call BankSwitch + ld a, $0 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ret + +Func_146a2: ; 0x146a2 + call Func_146a9 + call nz, Func_14707 + ret Func_146a9: ; 0x146a9 ld a, [$d4a3] ld hl, $d4a4 or [hl] ret z - ld a, [$d4b4] + ld a, [wBallXPos + 1] cp $9a jr nc, .asm_146e8 ld a, [$d4a3] @@ -16377,7 +16427,220 @@ Func_146a9: ; 0x146a9 ld [$d4a1], a ret -INCBIN "baserom.gbc",$14707,$148cf - $14707 +Func_14707: ; 0x14707 + ld a, [$d4a1] + and a + jr nz, .asm_1471c + ld a, $5 + ld hl, $472b + ld de, $99a8 + ld bc, $0004 + call Func_735 + ret +.asm_1471c + ld a, $5 + ld hl, $472f + ld de, $99a8 + ld bc, $0004 + call Func_735 + ret + +INCBIN "baserom.gbc",$1472b,$14733 - $1472b + +Func_14733: ; 0x14733 + ld c, $0 + ld a, [$d49b] + and a + jr z, .asm_1473d + ld c, $1 +.asm_1473d + ld a, [$d4a9] + cp c + ld a, c + ld [$d4a9], a + ret z + ld c, $0 + ld a, [$d49b] + and a + jr z, .asm_14750 + ld c, $2 +.asm_14750 + ld b, $0 + ld hl, $475f + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, $5 + call Func_10aa + ret + +INCBIN "baserom.gbc",$1475f,$14795 - $1475f + +Func_14795: ; 0x14795 + ld a, [$d5c7] + and a + ret z + xor a + ld [$d5c7], a + ld a, $1 + ld [$d5bf], a + ld de, $0006 + call PlaySoundEffect + ret + +Func_147aa: ; 0x147aa + ld a, [$d4ed] + and a + jp z, $4834 + xor a + ld [$d4ed], a + ld a, [$d4ee] + sub $1 + sla a + ld c, a + ld b, $0 + ld hl, $d4f0 + add hl, bc + ld a, [hl] + cp $3 + jr z, .asm_14834 + inc a + ld [hld], a + ld [hl], $50 + ld hl, $d4f7 + add hl, bc + ld a, $e0 + ld [hli], a + ld a, $1 + ld [hl], a + ld a, c + and a + jr z, .asm_14807 + ld a, $6a + ld [$c7f0], a + ld a, $6b + ld [$c810], a + ld a, $5 + call Func_149d9 + ld a, [$d4f2] + add $4 + call Func_149f5 + ld a, $8 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ld a, [$d4f2] + cp $3 + call z, Func_14920 + jr .asm_14830 +.asm_14807 + ld a, $66 + ld [$c7e3], a + ld a, $67 + ld [$c803], a + ld a, $2 + call Func_149d9 + ld a, [$d4f0] + call Func_149f5 + ld a, $7 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ld a, [$d4f0] + cp $3 + call z, Func_14947 +.asm_14830 + call Func_1496d + ret +.asm_14834 + ld a, [$d4ef] + and a + jr z, .asm_14857 + dec a + ld [$d4ef], a + jr nz, .asm_14857 + ld a, [$d4f0] + sub $3 + jr nz, .asm_1484d + ld [$d4f0], a + call Func_149f5 +.asm_1484d + ld a, $64 + ld [$c7e3], a + ld a, $65 + ld [$c803], a +.asm_14857 + ld a, [$d4f1] + and a + jr z, .asm_1487c + dec a + ld [$d4f1], a + jr nz, .asm_1487c + ld a, [$d4f2] + sub $3 + jr nz, .asm_14872 + ld [$d4f2], a + add $4 + call Func_149f5 +.asm_14872 + ld a, $68 + ld [$c7f0], a + ld a, $69 + ld [$c810], a +.asm_1487c + call Func_14990 + ret + +Func_14880: ; 0x14880 + ld hl, $d4f7 + dec [hl] + ld a, [hli] + cp $ff + jr nz, .asm_148a6 + dec [hl] + ld a, [hld] + cp $ff + jr nz, .asm_148a6 + ld a, $e0 + ld [hli], a + ld a, $1 + ld [hl], a + ld a, [$d4f0] + and a + jr z, .asm_148a6 + cp $3 + jr z, .asm_148a6 + dec a + ld [$d4f0], a + call Func_149f5 +.asm_148a6 + ld hl, $d4f9 + dec [hl] + ld a, [hli] + cp $ff + jr nz, .asm_148ce + dec [hl] + ld a, [hld] + cp $ff + jr nz, .asm_148ce + ld a, $e0 + ld [hli], a + ld a, $1 + ld [hl], a + ld a, [$d4f2] + and a + jr z, .asm_148ce + cp $3 + jr z, .asm_148ce + dec a + ld [$d4f2], a + add $4 + call Func_149f5 +.asm_148ce + ret Func_148cf: ; 0x148cf ld b, $0 @@ -16431,7 +16694,140 @@ Func_148cf: ; 0x148cf .asm_1491f ret -INCBIN "baserom.gbc",$14920,$14d85 - $14920 +Func_14920: ; 0x14920 + ld hl, $d62b + call Func_e4a + jr nc, .asm_14937 + ld c, $a + call Func_e55 + ld [$ff8a], a + ld a, Bank(Func_30164) + ld hl, Func_30164 + call z, BankSwitch +.asm_14937 + ld a, $1 + ld [$d55a], a + ld [$ff8a], a + ld a, Bank(Func_301ec) + ld hl, Func_301ec + call BankSwitch + ret + +Func_14947: ; 0x14947 + ld hl, $d62b + call Func_e4a + jr nc, .asm_1495e + ld c, $a + call Func_e55 + ld [$ff8a], a + ld a, Bank(Func_30164) + ld hl, Func_30164 + call z, BankSwitch +.asm_1495e + xor a + ld [$d55a], a + ld [$ff8a], a + ld a, Bank(Func_301ec) + ld hl, Func_301ec + call BankSwitch + ret + +Func_1496d: ; 0x1496d + ld a, $55 + ld [$d803], a + ld a, $4 + ld [$d804], a + ld a, $2 + ld [$d7eb], a + ld bc, $34be + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + ld de, $000f + call PlaySoundEffect + ret + +Func_14990: ; 0x14990 + ld a, [$d4ef] + and a + jr nz, .asm_149b6 + ld a, [$d4f3] + and a + jr z, .asm_149a2 + dec a + ld [$d4f3], a + jr .asm_149b6 +.asm_149a2 + call $1130 + ret nz + ld a, $14 + ld [$d4f3], a + ld a, [$d4f4] + xor $1 + ld [$d4f4], a + call Func_149d9 +.asm_149b6 + ld a, [$d4f1] + and a + ret nz + ld a, [$d4f5] + and a + jr z, .asm_149c6 + dec a + ld [$d4f5], a + ret +.asm_149c6 + call $1130 + ret nz + ld a, $14 + ld [$d4f5], a + ld a, [$d4f6] + xor $1 + ld [$d4f6], a + add $3 + ; fall through +Func_149d9: ; 0x149d9 + sla a + ld c, a + ld b, $0 + ld hl, $4a11 ; todo + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_149e9 + ld hl, $4a83 ; todo +.asm_149e9 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + or h + ret z + ld a, $5 + call Func_10aa + ret + +Func_149f5: ; 0x149f5 + sla a + ld c, a + ld b, $0 + ld hl, $4af5 ; todo + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_14a05 + ld hl, $4c8d ; todo +.asm_14a05 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + or h + ret z + ld a, $5 + call Func_10aa + ret + +INCBIN "baserom.gbc",$14a11,$14d85 - $14a11 Func_14d85: ; 0x14d85 ld a, [$d4cb] @@ -16486,7 +16882,7 @@ Func_14dc9: ; 0x14dc9 Func_14dea: ; 0x14dea ld a, [$d507] and a - jr z, .asm_14e10 + jr z, Func_14e10 xor a ld [$d507], a ld a, [wBallYVelocity] @@ -16502,7 +16898,8 @@ Func_14dea: ; 0x14dea ld a, Bank(Func_10000) ld hl, Func_10000 call BankSwitch -.asm_14e10 + ; fall through +Func_14e10: ; 0x14e10 ld hl, $d50b ld a, [hli] or [hl] @@ -16623,7 +17020,103 @@ Func_14ece: ; 0x14ece call Func_10aa ret -INCBIN "baserom.gbc",$14eeb,$15270 - $14eeb +INCBIN "baserom.gbc",$14eeb,$151cb - $14eeb + +Func_151cb: ; 0x151cb + ld a, [$d50d] + and a + jr z, .asm_15229 + xor a + ld [$d50d], a + ld a, [$d513] + and a + jr nz, .asm_15229 + ld a, [$d50e] + sub $a + ld c, a + ld b, $0 + ld hl, $d50f + add hl, bc + ld a, [hl] + ld [hl], $1 + and a + ret nz + ld bc, $34b2 + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + ld hl, $d50f + ld a, [hli] + and [hl] + inc hl + and [hl] + inc hl + and [hl] + jr z, .asm_1522d + ld a, $1 + ld [$d513], a + ld a, $80 + ld [$d514], a + ld bc, $34b8 + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + ld de, $0009 + call PlaySoundEffect + ld hl, $d62c + call Func_e4a + jr .asm_1522d +.asm_15229 + call Func_15270 + ret z +.asm_1522d + ld hl, $d512 + ld b, $4 +.asm_15232 + ld a, [hld] + push hl + call Func_1523c + pop hl + dec b + jr nz, .asm_15232 + ret + +Func_1523c: ; 0x1523c + and a + jr z, .asm_1524e + ld a, [hGameBoyColorFlag] + and a + jr nz, .asm_15249 + ld hl, $52dd ; todo + jr .asm_1525b +.asm_15249 + ld hl, $531d ; todo + jr .asm_1525b +.asm_1524e + ld a, [hGameBoyColorFlag] + and a + jr nz, .asm_15258 + ld hl, $52e5 + jr .asm_1525b +.asm_15258 + ld hl, $5325 +.asm_1525b + push bc + dec b + sla b + ld e, b + ld d, $0 + add hl, de + ld c, [hl] + inc hl + ld b, [hl] + ld a, $5 + ld de, $117b + call Func_10c5 + pop bc + ret Func_15270: ; 0x15270 ld a, [$d513] @@ -17391,7 +17884,60 @@ Func_15e93: ; 0x15e93 call BankSwitch ret -INCBIN "baserom.gbc",$15f69,$160f0 - $15f69 +INCBIN "baserom.gbc",$15f69,$15f86 - $15f69 + +Func_15f86: ; 0x15f86 + ld a, [$d4d8] + and a + jr z, .asm_15f99 + call Func_5fb8 + call Func_15fa6 + xor a + ld [$d4d8], a + call $5fda +.asm_15f99 + ld a, [$d4da] + and a + ret z + dec a + ld [$d4da], a + call z, Func_5fb8 + ret + +Func_15fa6: ; 0x15fa6 + ld a, $10 + ld [$d4da], a + ld a, [$d4d9] + sub $6 + ld [$d4db], a + sla a + inc a + jr asm_15fc0 + +Func_5fb8: ; 0x5fb8 + ld a, [$d4db] + cp $ff + ret z + sla a +asm_15fc0 + sla a + ld c, a + ld b, $0 + ld hl, $6010 ; todo + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_15fd0 + ld hl, $6080 +.asm_15fd0 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, $5 + call Func_10aa + ret + +INCBIN "baserom.gbc",$15fda,$160f0 - $15fda Func_160f0: ; 0x160f0 ld a, [$d5fe] @@ -17485,16 +18031,44 @@ Func_160f0: ; 0x160f0 ld hl, Func_dcc3 call BankSwitch ld a, $2 - ld [$d4be], a + ld [wBallYVelocity + 1], a ret -INCBIN "baserom.gbc",$161af,$161e0 - $161af +Func_161af: ; 0x161af + ld a, [$d604] + and a + ret z + ld a, [$d4b6] + sub $fe + cp $30 + ret nc + ld c, $0 + ld b, a + ld h, b + ld l, c + srl b + rr c + srl b + rr c + srl h + rr l + add hl, bc + ld a, [$d4b4] + sub $38 + cp $30 + ret nc + ld c, a + ld b, $0 + sla c + sla c + add hl, bc + jr asm_1620f Func_161e0: ; 0x161e0 ld a, [$d604] and a ret z - ld a, [$d4b6] + ld a, [wBallYPos + 1] sub $86 cp $30 ret nc @@ -17509,7 +18083,7 @@ Func_161e0: ; 0x161e0 srl h rr l add hl, bc - ld a, [$d4b4] + ld a, [wBallXPos + 1] sub $38 cp $30 ret nc @@ -17518,6 +18092,7 @@ Func_161e0: ; 0x161e0 sla c sla c add hl, bc +asm_1620f: ; 0x1620f ld bc, $4000 add hl, bc ld de, wBallXVelocity @@ -17592,7 +18167,216 @@ Func_161e0: ; 0x161e0 call PlaySoundEffect ret -INCBIN "baserom.gbc",$16279,$16425 - $16279 +Func_16279: ; 0x16279 + ld a, [$d601] + and a + jr z, .asm_162ae + xor a + ld [$d601], a + ld a, [$d604] + and a + ret z + ld a, [$d603] + and a + jr nz, .asm_162ae + xor a + ld hl, wBallXVelocity + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [$d549], a + ld [wBallXPos], a + ld [wBallYPos], a + ld a, $50 + ld [wBallXPos + 1], a + ld a, $16 + ld [wBallYPos + 1], a + ld a, $13 + ld [$d603], a +.asm_162ae + ld a, [$d603] + and a + ret z + dec a + ld [$d603], a + ld a, $18 + ld [$d606], a + ld a, [$d603] + cp $12 + jr nz, .asm_162d4 + ld de, $0021 + call PlaySoundEffect + ld [$ff8a], a + ld a, Bank(Func_dd12) + ld hl, Func_dd12 + call BankSwitch + ret +.asm_162d4 + cp $f + jr nz, .asm_162e3 + ld [$ff8a], a + ld a, Bank(Func_dd62) + ld hl, Func_dd62 + call BankSwitch + ret +.asm_162e3 + cp $c + jr nz, .asm_162f2 + xor a + ld [$d548], a + ld [wBallSpin], a + ld [wBallRotation], a + ret +.asm_162f2 + cp $9 + jr nz, .asm_162fa + call Func_16352 + ret +.asm_162fa + cp $6 + jr nz, .asm_16317 + xor a + ld [$d604], a + ld a, $5 + ld [$d803], a + ld a, $8 + ld [$d804], a + ld [$ff8a], a + ld a, Bank(Func_dd12) + ld hl, Func_dd12 + call BankSwitch + ret +.asm_16317 + cp $3 + jr nz, .asm_16330 + ld [$ff8a], a + ld a, Bank(Func_dcc3) + ld hl, Func_dcc3 + call BankSwitch + ld a, $2 + ld [$d4be], a + ld a, $80 + ld [wBallXVelocity], a + ret +.asm_16330 + and a + ret nz + call Func_16425 + ld a, [$d622] + cp $1 + ret nz + call Func_959 + and $8 + ld [$d55b], a + ld [$ff8a], a + ld a, Bank(StartCatchEmMode) + ld hl, StartCatchEmMode + call BankSwitch + xor a + ld [$d622], a + ret + +Func_16352: ; 0x16352 + xor a + ld [$d533], a + ld a, $d + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + jr nc, .asm_1636d + ld a, $1 + ld [$d548], a + ld [$d549], a + ret +.asm_1636d + ld a, [$d624] + cp $3 + jr nz, .asm_163b3 + ld a, [$d607] + and a + jr nz, .asm_163b3 +.asm_1637a + ld a, [$d623] + and a + jr nz, .asm_16389 + xor a + ld [$d625], a + ld a, $40 + ld [$d626], a +.asm_16389 + xor a + ld [$d623], a + ld a, $1 + ld [$d495], a + ld [$d4ae], a + ld a, [$d498] + ld c, a + ld b, $0 + ld hl, $6420 + add hl, bc + ld a, [hl] + ld [$d497], a + call Func_163f2 + xor a + ld [$d609], a + ld [$d622], a + ld a, $1e + ld [$d607], a + ret +.asm_163b3 + ld [$ff8a], a + ld a, $3 + ld hl, $6d8e ; todo - long routine that I didn't feel like dumping... + call BankSwitch + xor a + ld [$d608], a + ld a, [$d61d] + cp $d + jr nc, .asm_1637a + ld a, $1 + ld [$d548], a + ld [$d549], a + ld a, [$d622] + cp $2 + ret nz + ld [$ff8a], a + ld a, Bank(Func_10ab3) + ld hl, Func_10ab3 + call BankSwitch + ld a, [$d7ad] + ld c, a + ld a, [$d4af] + and $1 + or c + ld [$d4af], a + xor a + ld [$d622], a + ret + +Func_163f2: ; 0x163f2 + call Func_30e8 + call Func_30db + ld hl, $d5dc + ld a, [$d497] + ld de, $2e83 + cp $d + jr z, .asm_1640f + ld de, $2e9e + cp $7 + jr z, .asm_1640f + ld de, $2eb8 +.asm_1640f + call Func_32aa + ld de, $0000 + call Func_490 + rst $10 + ld de, $3c23 + call PlaySoundEffect + ret + +INCBIN "baserom.gbc",$16420,$16425 - $16420 Func_16425: ; 0x16425 ld a, [wCurrentStage] @@ -17662,8 +18446,61 @@ Func_164e3: ; 0x164e3 call nz, Func_16425 ret -INCBIN "baserom.gbc",$1652d,$1659c - $1652d +Func_1652d: ; 0x1652d + ld a, [$d4dc] + and a + ret z + xor a + ld [$d4dc], a + ld a, [$d4de] + and a + jr z, .asm_16566 + xor a + ld [$d544], a + ld [$d542], a + ld [$d546], a + ld hl, wBallXVelocity + ld [hli], a + ld [hl], a + ld [wBallSpin], a + ld [wBallRotation], a + ld a, $80 + ld [wBallYVelocity], a + ld a, $fa + ld [wBallYVelocity + 1], a + ld a, $1 + ld [$d549], a + ld de, $000a + call PlaySoundEffect +.asm_16566 + ld a, $ff + ld [$d4ec], a + ld a, [$d4de] + and a + ret nz + ld a, [$d4e0] + and a + jr nz, .asm_16582 + call Func_1658f + ld a, $1 + ld [$d4e0], a + ld [$d4de], a + ret +.asm_16582 + ld hl, wKeyConfigBallStart + call IsKeyPressed + ret z + ld a, $1 + ld [$d4de], a + ret +Func_1658f: ; 0x1658f + ld a, [hGameBoyColorFlag] + and a + ld [$ff8a], a + ld a, Bank(Func_f269) + ld hl, Func_f269 + call nz, BankSwitch .showNextMap ld a, [$d4e1] inc a @@ -17946,7 +18783,50 @@ Func_16781: ; 0x16781 jp nz, Func_15450 jp Func_15499 -INCBIN "baserom.gbc",$167ff,$16859 - $167ff +Func_167ff: ; 0x167ff + ld a, [$d500] + and a + jr z, .asm_16839 + xor a + ld [$d500], a + ld a, [$d503] + and a + jr nz, .asm_1683e + ld bc, $34ca + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + ld a, [$d502] + xor $1 + ld [$d502], a + ld a, $14 + ld [$d503], a + call Func_16878 + ld a, $6 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ret +.asm_16839 + ld a, [$d503] + and a + ret z +.asm_1683e + dec a + ld [$d503], a + ret nz + ld a, [$d502] + and $1 + ld c, a + ld a, [$d4af] + and $fe + or c + ld [$d4af], a + ld de, $0007 + call PlaySoundEffect + ret Func_16859: ; 0x16859 ld a, [$d502] @@ -17969,7 +18849,237 @@ Func_16859: ; 0x16859 call Func_10aa ret -INCBIN "baserom.gbc",$16878,$16f95 - $16878 +Func_16878: ; 0x16878 + ld a, [$d502] + and $1 + sla a + ld c, a + ld b, $0 + ld hl, $695a ; todo + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_1688d + ld hl, $6980 ; todo +.asm_1688d + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + or h + ret z + ld a, $5 + call Func_10aa + ret + +INCBIN "baserom.gbc",$16899,$169a6 - $16899 + +Func_169a6: ; 0x169a6 + ld a, [$ffb3] + and $1f + ret nz + ld bc, $0000 +.asm_169ae + push bc + ld hl, $d52f + add hl, bc + bit 7, [hl] + jr z, .asm_169c5 + ld a, [hl] + res 7, a + ld hl, $ffb3 + bit 5, [hl] + jr z, .asm_169c2 + inc a +.asm_169c2 + call Func_169cd +.asm_169c5 + pop bc + inc c + ld a, c + cp $5 + jr nz, .asm_169ae + ret + +Func_169cd: ; 0x169cd + push af + sla c + ld hl, $69ed + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_169db + ld hl, $6bef +.asm_169db + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + pop af + sla a + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, $5 + call Func_10aa + ret + +INCBIN "baserom.gbc",$169ed,$16d9d - $169ed + +Func_16d9d: ; 016d9d + ld a, [$d60a] + and a + jp z, $6e51 + xor a + ld [$d60a], a + ld de, $000d + call PlaySoundEffect + ld a, [$d60b] + sub $21 + jr nz, .asm_16ddc + ld a, $9 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ld a, [$d610] + cp $3 + jr nz, .asm_16e35 + ld a, $1 + ld [$d610], a + ld a, $3 + ld [$d611], a + ld a, [$d60c] + set 7, a + ld [$d60c], a + jr .asm_16e35 +.asm_16ddc + ld a, $a + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ld a, [$d611] + cp $3 + jr nz, .asm_16e35 + ld a, $1 + ld [$d610], a + ld a, $1 + ld [$d611], a + ld a, $80 + ld [$d612], a + ld a, [$d60d] + set 7, a + ld [$d60d], a + ld a, [$d482] + inc a + cp $64 + jr c, .asm_16e10 + ld a, $63 +.asm_16e10 + ld [$d482], a + jr nc, .asm_16e24 + ld c, $19 + call Func_e55 + ld [$ff8a], a + ld a, Bank(Func_30164) + ld hl, Func_30164 + call z, BankSwitch +.asm_16e24 + ld a, [$d60c] + ld [$d614], a + ld a, [$d60d] + ld [$d615], a + ld a, $1 + ld [$d613], a +.asm_16e35 + ld bc, $34ac + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + ld a, [$d60c] + call Func_16f28 + ld a, [$d60d] + add $14 + call Func_16f28 + ret + +INCBIN "baserom.gbc",$16e51,$16f28 - $16e51 + +Func_16f28: ; 0x16f28 + push af + ld a, [hGameBoyColorFlag] + and a + jr nz, .asm_16f33 + pop af + call Func_16f38 + ret +.asm_16f33 + pop af + call Func_16f7b + ret + +Func_16f38: ; 0x16f38 + push af + res 7, a + ld hl, $d60e + cp $14 + jr c, .asm_16f47 + ld hl, $d60f + sub $a +.asm_16f47 + cp [hl] + jr z, .asm_16f5c + ld [hl], a + ld c, a + ld b, $0 + sla c + ld hl, $6fc8 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, $5 + call Func_10aa +.asm_16f5c + pop af + ld bc, $0000 + bit 7, a + jr z, .asm_16f68 + res 7, a + set 1, c +.asm_16f68 + cp $14 + jr c, .asm_16f6e + set 2, c +.asm_16f6e + ld hl, $71e4 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, $5 + call Func_10aa + ret + +Func_16f7b: ; 0x16f7b + bit 7, a + jr z, .asm_16f83 + res 7, a + add $a +.asm_16f83 + ld c, a + ld b, $0 + sla c + ld hl, $7228 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, $5 + call Func_10aa + ret Func_16f95: ; 0x16f95 ld a, [$d482] @@ -18001,7 +19111,24 @@ Func_16f95: ; 0x16f95 ld [$d60d], a ret -INCBIN "baserom.gbc",$16fc1,$174ea - $16fc1 +INCBIN "baserom.gbc",$16fc1,$174d0 - $16fc1 + +Func_174d0: ; 0x174d0 + call Func_174ea + ret nc + sla a + ld c, a + ld b, $0 + ld hl, $7528 ; todo + add hl, bc + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, $5 + ld de, $117b + call Func_10c5 + ret Func_174ea: ; 0x174ea ld a, [$d624] @@ -22147,7 +23274,35 @@ Func_30188: ; 0x30188 ld [$d4ca], a ret -INCBIN "baserom.gbc",$301ce,$30253 - $301ce +INCBIN "baserom.gbc",$301ce,$301ec - $301ce + +Func_301ec: ; 0x301ec + ld a, [$d54b] + and a + ret nz + ld a, $1 + ld [$d54b], a + ld a, $2 + ld [$d550], a + xor a + ld [$d54d], a + ld bc, $0030 + ld [$ff8a], a + ld a, Bank(StartTimer) + ld hl, StartTimer + call BankSwitch + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_3021b + ld a, [$d55a] + add $12 + call Func_30256 +.asm_3021b + ld a, [wCurrentStage] + rst $18 +CallTable_3021f: ; 0x3021f + +INCBIN "baserom.gbc",$3021f,$30253 - $3021f Func_30253: ; 0x30253 ld a, [wCurrentMap] |