diff options
author | Marcus Huderle <huderlem@gmail.com> | 2015-03-29 12:14:18 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2015-03-29 12:14:18 -0700 |
commit | 06cab4c02531c2dc7673b4b01c85b61b136cbc90 (patch) | |
tree | 03bd0092ed558f9c14a7c52b25c8e0a4ccc25d1f | |
parent | 0a8b9c5904e6245037cd35f63c74d7000d536bfa (diff) |
Dump red stage top logic routines.
-rwxr-xr-x | main.asm | 1865 |
1 files changed, 1836 insertions, 29 deletions
@@ -1887,7 +1887,14 @@ Func_e4a: ; 0xe4a and a ret -INCBIN "baserom.gbc",$e55,$e5d - $e55 +Func_e55: ; 0xe55 + cp c + jr c, .asm_e5b + sub c + jr Func_e55 +.asm_e5b + and a + ret Func_e5d: ; 0xe5d ld a, $1 @@ -4965,7 +4972,29 @@ Func_30e8: ; 0x30e8 ld [$d5ee], a ret -INCBIN "baserom.gbc",$310a,$3129 - $310a +Func_310a: ; 0x310a + ld a, $81 + ld hl, $c640 + ld b, $5 +.asm_3111 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + dec b + jr nz, .asm_3111 + ld hl, $c6c0 + ld b, $5 +.asm_311d + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + dec b + jr nz, .asm_311d + ret + +INCBIN "baserom.gbc",$3125,$3129 - $3125 Func_3129: ; 0x3129 ld b, $0 @@ -5202,7 +5231,78 @@ Func_32aa: ; 0x32aa jr nz, .asm_32c5 ret -INCBIN "baserom.gbc",$32cc,$3325 - $32cc +Func_32cc: ; 0x32cc + ld a, $1 + ld [hli], a + ld a, [de] + ld [hli], a + ld [hli], a + inc de + ld a, [de] + ld [hli], a + inc de + ld a, [de] + ld [hli], a + inc de + ld a, [de] + ld [hli], a + inc de + ld a, [de] + ld [hli], a + push af + inc de + ld a, [de] + ld [hli], a + inc de + pop af + ld e, a + ld d, $c5 + ld hl, [sp+$5] + ld bc, $0801 +.asm_32ec + ld a, [hl] + swap a + and $f + call Func_3309 + dec b + ld a, [hld] + and $f + call Func_3309 + dec b + jr nz, .asm_32ec + ld a, $30 + ld [de], a + inc de + ld a, $20 + ld [de], a + inc de + xor a + ld [de], a + ret + +Func_3309: ; 0x3309 + jr nz, .asm_3312 + ld a, b + dec a + jr z, .asm_3312 + ld a, c + and a + ret nz +.asm_3312 + add $30 + ld [de], a + inc de + ld c, $0 + ld a, b + cp $6 + jr z, .asm_3320 + cp $3 + ret nz +.asm_3320 + ld a, $2c + ld [de], a + inc de + ret Func_3325: ; 0x3325 ld a, [hli] @@ -8640,14 +8740,16 @@ Func_8576: ; 0x8576 inc a .asm_8585 ld b, a - jr .asm_8592 + jr asm_8592 + +Func_8588: ; 0x8588 ld h, b ld l, c ld a, [$d477] ld e, a ld d, $d4 ld b, $1 -.asm_8592 +asm_8592: push hl ld a, [de] add [hl] @@ -8692,7 +8794,7 @@ Func_8576: ; 0x8576 .asm_85be pop hl dec b - jr nz, .asm_8592 + jr nz, asm_8592 ld a, e ld [$d477], a ret @@ -12798,7 +12900,93 @@ Func_dcb4: ; 0xdcb4 ld [$c646], a ret -INCBIN "baserom.gbc",$dcc3,$e0fe - $dcc3 +Func_dcc3: ; 0xdcc3 + xor a + ld [$d4c8], a + ld a, [$d47e] + cp $2 + jr nc, .asm_dcdd + ld a, $2a + ld hl, Func_c400 + ld de, $8400 + ld bc, $0200 + call Func_735 + ret +.asm_dcdd + cp $3 + jr nc, .asm_dcf0 + ld a, $2a + ld hl, $4a00 + ld de, $8400 + ld bc, $0200 + call Func_735 + ret +.asm_dcf0 + cp $5 + jr nc, .asm_dd03 + ld a, $2a + ld hl, $4c00 + ld de, $8400 + ld bc, $0200 + call Func_735 + ret +.asm_dd03 + ld a, $2a + ld hl, $4e00 + ld de, $8400 + ld bc, $0200 + call Func_735 + ret + +Func_dd12: ; 0xdd12 + ld a, $1 + ld [$d4c8], a + ld a, [$d47e] + cp $2 + jr nc, .asm_dd2d + ld a, $2a + ld hl, $5000 + ld de, $8400 + ld bc, $0200 + call Func_735 + ret +.asm_dd2d + cp $3 + jr nc, .asm_dd40 + ld a, $2a + ld hl, $5200 + ld de, $8400 + ld bc, $0200 + call Func_735 + ret +.asm_dd40 + cp $5 + jr nc, .asm_dd53 + ld a, $2a + ld hl, $5400 + ld de, $8400 + ld bc, $0200 + call Func_735 + ret +.asm_dd53 + ld a, $2a + ld hl, $5600 + ld de, $8400 + ld bc, $0200 + call Func_735 + ret + +Func_dd62: ; 0xdd62 + ld a, $2 + ld [$d4c8], a + ld a, $2a + ld hl, $5800 + ld de, $8400 + ld bc, $0200 + call Func_735 + ret + +INCBIN "baserom.gbc",$dd76,$e0fe - $dd76 HandleFlippers: ; 0xe0fe xor a @@ -15743,7 +15931,17 @@ SetPokemonSeenFlag: ; 0x10753 call Func_f1a ret -INCBIN "baserom.gbc",$1077c,$1126c - $1077c +INCBIN "baserom.gbc",$1077c,$10ab3 - $1077c + +Func_10ab3: ; 0x10ab3 + ld a, [$d54b] + and a + ret nz + ld a, [wCurrentStage] + rst $18 +; CallTable todo + +INCBIN "baserom.gbc",$10abc,$1126c - $10abc WildMonOffsetsPointers: ; 0x1126c dw RedStageWildMonDataOffsets @@ -16099,22 +16297,22 @@ INCBIN "baserom.gbc",$144ee,$1460e - $144ee Func_1460e: ; 0x1460e call Func_14d85 call Func_14dea - call $535d - call $5575 - call $5270 - call $581f - call $660c - call $6781 - call $5e93 - call $60f0 - call $61e0 - call $64e3 - call $46a9 - call $74ea - call $48cf + call Func_1535d + call Func_15575 + call Func_15270 + call Func_1581f + call Func_1660c + call Func_16781 + call Func_15e93 + call Func_160f0 + call Func_161e0 + call Func_164e3 + call Func_146a9 + call Func_174ea + call Func_148cf ld [$ff8a], a - ld a, $c - ld hl, $4188 + ld a, Bank(Func_30188) + ld hl, Func_30188 call BankSwitch ld a, $0 ld [$ff8a], a @@ -16123,7 +16321,117 @@ Func_1460e: ; 0x1460e call BankSwitch ret -INCBIN "baserom.gbc",$14652,$14d85 - $14652 +INCBIN "baserom.gbc",$14652,$146a9 - $14652 + +Func_146a9: ; 0x146a9 + ld a, [$d4a3] + ld hl, $d4a4 + or [hl] + ret z + ld a, [$d4b4] + cp $9a + jr nc, .asm_146e8 + ld a, [$d4a3] + dec a + ld [$d4a3], a + bit 7, a + jr z, .asm_146e8 + ld a, $3b + ld [$d4a3], a + ld a, [hl] + dec a + bit 7, a + jr nz, .asm_146cf + ld [hl], a +.asm_146cf + inc a + ld c, $0 + cp $2 + jr c, .asm_146e4 + ld c, $4 + cp $6 + jr c, .asm_146e4 + ld c, $10 + cp $b + jr c, .asm_146e4 + ld c, $ff +.asm_146e4 + ld a, c + ld [$d4a2], a +.asm_146e8 + ld a, [$d4a2] + ld c, $0 + and a + jr z, .asm_146fe + ld c, $1 + cp $ff + jr z, .asm_146fe + ld hl, $ffb3 + and [hl] + jr z, .asm_146fe + ld c, $0 +.asm_146fe + ld a, [$d4a1] + cp c + ld a, c + ld [$d4a1], a + ret + +INCBIN "baserom.gbc",$14707,$148cf - $14707 + +Func_148cf: ; 0x148cf + ld b, $0 + ld hl, $d4f8 + ld a, [hld] + or [hl] + jr z, .asm_148f8 + dec [hl] + ld a, [hli] + cp $ff + jr nz, .asm_148f8 + dec [hl] + ld a, [hld] + cp $ff + jr nz, .asm_148f8 + ld a, $e0 + ld [hli], a + ld a, $1 + ld [hl], a + ld a, [$d4f0] + and a + jr z, .asm_148f8 + cp $3 + jr z, .asm_148f8 + dec a + ld [$d4f0], a +.asm_148f8 + ld hl, $d4fa + ld a, [hld] + or [hl] + jr z, .asm_1491f + dec [hl] + ld a, [hli] + cp $ff + jr nz, .asm_1491f + dec [hl] + ld a, [hld] + cp $ff + jr nz, .asm_1491f + ld a, $e0 + ld [hli], a + ld a, $1 + ld [hl], a + ld a, [$d4f2] + and a + jr z, .asm_1491f + cp $3 + jr z, .asm_1491f + dec a + ld [$d4f2], a +.asm_1491f + ret + +INCBIN "baserom.gbc",$14920,$14d85 - $14920 Func_14d85: ; 0x14d85 ld a, [$d4cb] @@ -16315,7 +16623,1046 @@ Func_14ece: ; 0x14ece call Func_10aa ret -INCBIN "baserom.gbc",$14eeb,$1659c - $14eeb +INCBIN "baserom.gbc",$14eeb,$15270 - $14eeb + +Func_15270: ; 0x15270 + ld a, [$d513] + and a + jr z, .asm_152a6 + ld a, [$d514] + dec a + ld [$d514], a + jr nz, .asm_1528d + ld [$d513], a + ld a, $1 + ld [$d608], a + ld a, $3 + ld [$d607], a + xor a +.asm_1528d + and $7 + ret nz + ld a, [$d514] + srl a + srl a + srl a + and $1 + ld hl, $d50f + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld a, $1 + and a + ret +.asm_152a6 + ld hl, wKeyConfigLeftFlipper + call IsKeyPressed + jr z, .asm_152c2 + ld hl, $d50f + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] + ld e, a + ld a, [hl] + ld d, a + ld a, c + ld [hld], a + ld a, d + ld [hld], a + ld a, e + ld [hld], a + ld a, b + ld [hl], a + ret +.asm_152c2 + ld hl, wKeyConfigRightFlipper + call IsKeyPressed + ret z + ld hl, $d50f + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] + ld e, a + ld a, [hl] + ld d, a + ld a, e + ld [hld], a + ld a, b + ld [hld], a + ld a, c + ld [hld], a + ld a, d + ld [hl], a + ret + +INCBIN "baserom.gbc",$152dd,$1535d - $152dd + +Func_1535d: ; 0x1535d + ld a, [$d5f7] + and a + jp z, .asm_1544c + xor a + ld [$d5f7], a + ld a, [$d4af] + bit 0, a + jp z, .asm_1544c + ld a, [$d5fc] + and a + jp nz, .asm_1544c + xor a + ld [$d544], a + ld [$d542], a + ld [$d546], a + call Func_159c9 + ld a, $b + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ld a, [$d5f8] + sub $e + ld c, a + ld b, $0 + ld hl, $d5f9 + 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, $d5f9 + ld a, [hli] + and [hl] + inc hl + and [hl] + jr nz, .asm_153c0 + ld de, $0009 + call PlaySoundEffect + jp Func_15450 +.asm_153c0 + ld a, $1 + ld [$d5fc], a + ld a, $80 + ld [$d5fd], a + ld a, $10 + ld [$d47f], a + ld a, $e + ld [$d480], a + ld bc, $34b8 + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + ld a, [$d47e] + cp $5 + jr z, .asm_15412 + ld de, $063a + call PlaySoundEffect + call Func_30e8 + call Func_30db + ld de, $2907 + ld hl, $d5cc + call Func_32aa + ld a, [$d47e] + ld c, a + ld b, $0 + ld hl, $5505 ; todo + add hl, bc + ld a, [hl] + ld [$d47e], a + add $30 + ld [$c512], a + jr .asm_15447 +.asm_15412 + ld de, $0f4d + call PlaySoundEffect + ld bc, $34e8 + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + ld bc, $0100 + ld de, $0000 + push bc + push de + call Func_30e8 + call Func_30db + ld hl, $d5d4 + ld de, $2948 + call Func_32cc + pop de + pop bc + ld hl, $d5cc + ld de, $2922 + call Func_32aa +.asm_15447 + call Func_155a7 + jr Func_15450 +.asm_1544c + call Func_154a9 + ret z + +Func_15450 + ld a, [$d4af] + bit 0, a + ret z + ld hl, $d5fb + ld b, $3 +.asm_1545b + ld a, [hld] + push hl + call Func_15465 + pop hl + dec b + jr nz, .asm_1545b + ret + +Func_15465: ; 0x15465 + and a + jr z, .asm_15477 + ld a, [hGameBoyColorFlag] + and a + jr nz, .asm_15472 + ld hl, $5511 ; todo + jr .asm_15484 +.asm_15472 + ld hl, $5543 ; todo + jr .asm_15484 +.asm_15477 + ld a, [hGameBoyColorFlag] + and a + jr nz, .asm_15481 + ld hl, $5517 ; todo + jr .asm_15484 +.asm_15481 + ld hl, $5549 ; todo +.asm_15484 + 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_15499: ; 0x15499 + ld a, [hGameBoyColorFlag] + and a + ret nz + ld b, $3 +.asm_1549f + push hl + xor a + call Func_15465 + pop hl + dec b + jr nz, .asm_1549f + ret + +Func_154a9: ; 0x154a9 + ld a, [$d5fc] + and a + jr z, .asm_154d6 + ld a, [$d5fd] + dec a + ld [$d5fd], a + jr nz, .asm_154bb + ld [$d5fc], a +.asm_154bb + and $7 + jr nz, .asm_154d4 + ld a, [$d5fd] + srl a + srl a + srl a + and $1 + ld hl, $d5f9 + ld [hli], a + ld [hli], a + ld [hl], a + ld a, $1 + and a + ret +.asm_154d4 + xor a + ret +.asm_154d6 + ld hl, wKeyConfigLeftFlipper + call IsKeyPressed + jr z, .asm_154ee + ld hl, $d5f9 + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hl] + ld e, a + ld a, c + ld [hld], a + ld a, e + ld [hld], a + ld a, b + ld [hl], a + ret +.asm_154ee + ld hl, wKeyConfigRightFlipper + call IsKeyPressed + ret z + ld hl, $d5f9 + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hl] + ld e, a + ld a, b + ld [hld], a + ld a, c + ld [hld], a + ld a, e + ld [hl], a + ret + +INCBIN "baserom.gbc",$15505,$15575 - $15505 + +Func_15575: ; 0x15575 + ld a, [$d5f3] + and a + ret nz + ld hl, $d47f + ld a, [hli] + ld c, a + ld b, [hl] + or b + ret z + dec bc + ld a, b + ld [hld], a + ld [hl], c + or c + ret nz + ld a, [$d47e] + ld c, a + ld b, $0 + ld hl, $550b ; todo + add hl, bc + ld a, [hl] + ld [$d47e], a + and a + jr z, .asm_155a3 + ld a, $10 + ld [$d47f], a + ld a, $e + ld [$d480], a +.asm_155a3 + call Func_155a7 + ret + +Func_155a7: ; 0x155a7 + ld a, [$d47e] + ld c, a + sla c + ld b, $0 + ld hl, $55d7 ; todo + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, $5 + call Func_10aa + ld a, [hGameBoyColorFlag] + and a + ret z + ; gameboy color + ld a, [$d47e] + sla a + ld c, a + ld b, $0 + ld hl, $57f7 ; todo + add hl, bc + ld c, [hl] + inc hl + ld b, [hl] + ld a, $5 + ld de, $1266 + call Func_10c5 + ret + +INCBIN "baserom.gbc",$155d7,$1581f - $155d7 + +Func_1581f: ; 0x1581f + ld a, [$d51f] + and a + ret z + xor a + ld [$d51f], a + ld bc, $34a6 + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + ld a, [$d520] + sub $11 + ld c, a + ld b, $0 + ld hl, $d521 + add hl, bc + ld [hl], $1 + ld a, [$d521] + and a + call nz, Func_1587c + ld a, [$d522] + and a + call nz, Func_158c0 + ld a, [$d523] + and a + call nz, Func_15904 + ld a, [$d524] + and a + call nz, Func_1591e + ld a, [$d525] + and a + call nz, Func_15931 + ld a, [$d526] + and a + call nz, Func_15944 + ld a, [$d527] + and a + call nz, Func_1597d + ld a, [$d528] + and a + call nz, Func_15990 + ret + +Func_1587c: ; 0x1587c + xor a + ld [$d521], a + ld a, [$d542] + and a + ret z + xor a + ld [$d542], a + ld a, $1 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ret c + ld a, [$d543] + cp $3 + ret z + inc a + ld [$d543], a + set 7, a + ld [$d52f], a + cp $83 + ret nz + ld a, [$d4af] + and $1 + or $6 + ld [$d4af], a + ld [$ff8a], a + ld a, Bank(Func_e578) + ld hl, Func_e578 + call BankSwitch + call Func_159f4 + ret + +Func_158c0: ; 0x158c0 + xor a + ld [$d522], a + ld a, [$d542] + and a + ret z + xor a + ld [$d542], a + ld a, $1 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ret c + ld a, [$d543] + cp $3 + ret z + inc a + ld [$d543], a + set 7, a + ld [$d52f], a + cp $83 + ret nz + ld a, [$d4af] + and $1 + or $6 + ld [$d4af], a + ld [$ff8a], a + ld a, Bank(Func_e578) + ld hl, Func_e578 + call BankSwitch + call Func_159f4 + ret + +Func_15904: ; 0x15904 + xor a + ld [$d523], a + ld a, [$d546] + and a + ret z + xor a + ld [$d546], a + ld a, $3 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ret + +Func_1591e: ; 0x1591e + xor a + ld [$d524], a + ld [$d544], a + ld [$d546], a + ld a, $1 + ld [$d542], a + call Func_159c9 + ret + +Func_15931: ; 0x15931 + xor a + ld [$d525], a + ld [$d544], a + ld [$d542], a + ld a, $1 + ld [$d546], a + call Func_159c9 + ret + +Func_15944: ; 0x15944 + xor a + ld [$d526], a + ld a, [$d544] + and a + ret z + xor a + ld [$d544], a + ld a, $2 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ret c + ld a, [$d545] + cp $3 + ret z + inc a + ld [$d545], a + cp $3 + jr z, .asm_1596e + set 7, a +.asm_1596e + ld [$d530], a + ld a, [$d545] + cp $2 + ret c + ld a, $80 + ld [$d532], a + ret + +Func_1597d: ; 0x1597d + xor a + ld [$d527], a + ld [$d542], a + ld [$d546], a + ld a, $1 + ld [$d544], a + call Func_159c9 + ret + +Func_15990: ; 0x15990 + xor a + ld [$d528], a + ld a, [$d544] + and a + ret z + xor a + ld [$d544], a + ld a, $2 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ret c + ld a, [$d545] + cp $3 + ret z + inc a + ld [$d545], a + cp $3 + jr z, .asm_159ba + set 7, a +.asm_159ba + ld [$d530], a + ld a, [$d545] + cp $2 + ret c + ld a, $80 + ld [$d532], a + ret + +Func_159c9: ; 0x159c9 + ld a, [$d7ad] + bit 7, a + ret nz + ld c, a + ld a, [$d4af] + and $1 + or c + ld [$d4af], a + ld a, $ff + ld [$d7ad], a + ld [$ff8a], a + ld a, Bank(Func_e578) + ld hl, Func_e578 + call BankSwitch + call Func_159f4 + ld a, $1 + ld [$d580], a + call Func_1404a + ret + +Func_159f4: ; 0x159f4 + ld a, [$ff9e] + bit 7, a + jr z, .asm_15a13 + ld a, [$d7f2] + and $fe + ld c, a + ld a, [$d4af] + and $fe + cp c + jr z, .asm_15a13 + add c + cp $2 + jr z, .asm_15a13 + ld de, $0000 + call PlaySoundEffect +.asm_15a13 + ld a, [$d7f2] + swap a + ld c, a + ld a, [$d4af] + sla a + or c + ld c, a + ld b, $0 + ld hl, $5a3f ; todo + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_15a2d + ld hl, $5d05 +.asm_15a2d + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + or h + ret z + ld a, $5 + call Func_10aa + ld a, [$d4af] + ld [$d7f2], a + ret + +INCBIN "baserom.gbc",$15a3f,$15e93 - $15a3f + +Func_15e93: ; 0x15e93 + ld a, [$d4fb] + and a + jr z, .asm_15eda + xor a + ld [$d4fb], a + ld bc, $34d0 + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + ld de, $0005 + call PlaySoundEffect + ld hl, $5f69 ; todo + ld de, $d4fd + call Func_28a0 + xor a + ld [wBallXVelocity], a + ld [wBallXVelocity + 1], a + ld [wBallYVelocity], a + ld [wBallYVelocity + 1], a + ld [wBallXPos], a + ld [wBallYPos], a + ld a, $7c + ld [wBallXPos + 1], a + ld a, $78 + ld [wBallYPos + 1], a + xor a + ld [$d549], a +.asm_15eda + ld hl, $5f69 ; todo + ld de, $d4fd + call Func_28a9 + push af + ld a, [$d4fd] + and a + jr nz, .asm_15ef8 + ld a, $19 + ld [$d4fd], a + xor a + ld [$d4fe], a + ld a, $6 + ld [$d4ff], a +.asm_15ef8 + pop af + ret nc + ld a, [$d4ff] + cp $1 + jr nz, .asm_15f35 + xor a + ld [$d548], a + ld a, [$d545] + cp $2 + jr c, .asm_15f1e + ld a, $8 + jr nz, .asm_15f11 + xor a +.asm_15f11 + ld [$d55b], a + ld [$ff8a], a + ld a, Bank(StartCatchEmMode) + ld hl, StartCatchEmMode + call BankSwitch +.asm_15f1e + ld hl, $d62a + call Func_e4a + ret nc + ld c, $19 + call Func_e55 + ld [$ff8a], a + ld a, Bank(Func_30164) + ld hl, Func_30164 + call z, BankSwitch + ret +.asm_15f35 + ld a, [$d4ff] + cp $4 + jr nz, .asm_15f42 + ld a, $1 + ld [$d548], a + ret +.asm_15f42 + ld a, [$d4ff] + cp $5 + ret nz + ld a, $1 + ld [$d549], a + xor a + ld [wBallXVelocity + 1], a + ld a, $2 + ld [wBallYVelocity + 1], a + ld de, $0006 + call PlaySoundEffect + ld a, $5 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ret + +INCBIN "baserom.gbc",$15f69,$160f0 - $15f69 + +Func_160f0: ; 0x160f0 + ld a, [$d5fe] + and a + jr z, .asm_16137 + xor a + ld [$d5fe], a + ld bc, $34d0 + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + ld de, $0021 + call PlaySoundEffect + 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, $11 + ld [wBallXPos + 1], a + ld a, $23 + ld [wBallYPos + 1], a + ld a, $10 + ld [$d600], a + ld a, $5 + ld [$d803], a + ld a, $8 + ld [$d804], a +.asm_16137 + ld a, [$d600] + and a + ret z + dec a + ld [$d600], a + cp $f + jr nz, .asm_1614f + ld [$ff8a], a + ld a, Bank(Func_dd12) + ld hl, Func_dd12 + call BankSwitch + ret +.asm_1614f + cp $c + jr nz, .asm_1615e + ld [$ff8a], a + ld a, Bank(Func_dd62) + ld hl, Func_dd62 + call BankSwitch + ret +.asm_1615e + cp $9 + jr nz, .asm_1616d + xor a + ld [$d548], a + ld [wBallSpin], a + ld [wBallRotation], a + ret +.asm_1616d + cp $6 + jr nz, .asm_1618e + ld [$ff8a], a + ld a, Bank(Func_10ab3) + ld hl, Func_10ab3 + call BankSwitch + ld a, $1 + ld [$d548], a + ld [$d549], a + ld a, $5 + ld [$d803], a + ld a, $8 + ld [$d804], a + ret +.asm_1618e + cp $3 + jr nz, .asm_1619d + ld [$ff8a], a + ld a, Bank(Func_dd12) + ld hl, Func_dd12 + call BankSwitch + ret +.asm_1619d + and a + ret nz + ld [$ff8a], a + ld a, Bank(Func_dcc3) + ld hl, Func_dcc3 + call BankSwitch + ld a, $2 + ld [$d4be], a + ret + +INCBIN "baserom.gbc",$161af,$161e0 - $161af + +Func_161e0: ; 0x161e0 + ld a, [$d604] + and a + ret z + ld a, [$d4b6] + sub $86 + 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 + ld bc, $4000 + add hl, bc + ld de, wBallXVelocity + ld a, $3c + call Func_68f + ld c, a + ld a, [de] + add c + ld [de], a + inc de + inc hl + ld a, $3c + call Func_68f + ld b, a + ld a, [de] + adc b + ld [de], a + inc de + inc hl + push bc + ld a, $3c + call Func_68f + ld c, a + ld a, [de] + add c + ld [de], a + inc de + inc hl + ld a, $3c + call Func_68f + ld b, a + ld a, [de] + adc b + ld [de], a + inc de + inc hl + bit 7, b + jr z, .asm_1624e + ld a, c + cpl + ld c, a + ld a, b + cpl + ld b, a + inc bc +.asm_1624e + pop hl + bit 7, h + jr z, .asm_1625a + ld a, l + cpl + ld l, a + ld a, h + cpl + ld h, a + inc hl +.asm_1625a + add hl, bc + sla l + rl h + ld a, h + cp $2 + ret c + ld a, [$d804] + and a + ret nz + ld a, $5 + ld [$d803], a + ld a, $8 + ld [$d804], a + ld de, $0004 + call PlaySoundEffect + ret + +INCBIN "baserom.gbc",$16279,$16425 - $16279 + +Func_16425: ; 0x16425 + ld a, [wCurrentStage] + and $1 + sla a + ld c, a + ld a, [$d604] + add c + sla a + ld c, a + ld b, $0 + ld hl, $644d ; todo + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_16441 + ld hl, $64a1 ; todo +.asm_16441 + 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",$1644d,$164e3 - $1644d + +Func_164e3: ; 0x164e3 + ld a, [$d607] + and a + ret z + dec a + ld [$d607], a + ret nz + ld a, [$d54b] + and a + ret nz + ld a, [$d609] + and a + jr z, .asm_164ff + ld a, [$d498] + add $15 + jr .asm_16506 +.asm_164ff + ld a, [$d608] + and a + ret z + ld a, $1a +.asm_16506 + ld hl, wCurrentStage + bit 0, [hl] + ld [$ff8a], a + ld a, Bank(Func_30256) + ld hl, Func_30256 + call nz, BankSwitch + ld a, [$d604] + and a + ret nz + ld a, $1 + ld [$d604], a + ld a, $80 + ld [$d533], a + ld a, [wCurrentStage] + bit 0, a + call nz, Func_16425 + ret + +INCBIN "baserom.gbc",$1652d,$1659c - $1652d .showNextMap ld a, [$d4e1] @@ -16380,7 +17727,249 @@ RedStageInitialMaps: ; 0x16605 db ROCK_MOUNTAIN db LAVENDER_TOWN -INCBIN "baserom.gbc",$1660c,$16f95 - $1660c +Func_1660c: ; 0x1660c + ld a, [$d515] + and a + jr z, .asm_1667b + xor a + ld [$d515], a + ld a, [$d51c] + and a + jr nz, .asm_1667b + ld a, [$d51d] + and a + jr nz, .asm_16634 + ld a, [$d516] + sub $1c + ld hl, $d518 + cp [hl] + jr nz, .asm_1667b + ld a, [$d517] + cp $f + jr nz, .asm_16667 +.asm_16634 + ld hl, $673c ; todo + ld de, $d519 + call Func_28a0 + ld a, [$d51d] + and a + jr nz, .asm_16647 + xor a + ld [$d517], a +.asm_16647 + ld a, $1 + ld [$d51c], a + xor a + ld [wBallXVelocity], a + ld [wBallXVelocity + 1], a + ld [wBallYVelocity], a + ld [wBallYVelocity + 1], a + ld [wBallSpin], a + ld [wBallRotation], a + ld [$d549], a + call Func_30e8 + jr .asm_1667b +.asm_16667 + ld hl, $6761 ; todo + ld de, $d519 + call Func_28a0 + ld a, $2 + ld [$d51c], a + ld de, $003b + call PlaySoundEffect +.asm_1667b + ld a, [$d51c] + and a + call z, Func_16766 + call Func_1669e + ld a, [$d517] + cp $f + ret nz + ld a, [$d51e] + and a + ret z + dec a + ld [$d51e], a + cp $5a + ret nz + ld de, $0f22 + call PlaySoundEffect + ret + +Func_1669e: ; 0x1669e + ld a, [$d51c] + cp $1 + jr nz, .asm_16719 + ld hl, $673c ; todo + ld de, $d519 + call Func_28a9 + ret nc + ld a, [$d51b] + cp $1 + jr nz, .asm_166f7 + xor a + ld [$d85d], a + call Func_310a + rst $10 + ld a, $1 + ld [$ff8a], a + ld a, Bank(Func_50000) + ld hl, Func_50000 + call BankSwitch + ld a, $1 + ld [$d85d], a + ld a, $ff + ld [$d803], a + ld a, $60 + ld [$d804], a + ld hl, $d62e + call Func_e4a + jr nc, .asm_166f0 + ld c, $a + call Func_e55 + ld [$ff8a], a + ld a, Bank(Func_30164) + ld hl, Func_30164 + call z, BankSwitch +.asm_166f0 + ld de, $1610 + call PlaySoundEffect + ret +.asm_166f7 + ld a, [$d51b] + cp $11 + ret nz + ld a, $fc + ld [wBallYVelocity + 1], a + ld a, $1 + ld [$d549], a + ld bc, $34ca + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + xor a + ld [$d51c], a + ret +.asm_16719 + cp $2 + jr nz, .asm_16732 + ld hl, $6761 ; todo + ld de, $d519 + call Func_28a9 + ret nc + ld a, [$d51b] + cp $1 + ret nz + xor a + ld [$d51c], a + ret +.asm_16732 + ld a, [$ffb3] + swap a + and $1 + ld [$d51a], a + ret + +INCBIN "baserom.gbc",$1673c,$16766 - $1673c + +Func_16766: ; 0x16766 + ld hl, wKeyConfigLeftFlipper + call IsKeyPressed2 + jr z, .asm_16774 + ld hl, $d518 + ld [hl], $0 + ret +.asm_16774 + ld hl, wKeyConfigRightFlipper + call IsKeyPressed2 + ret z + ld hl, $d518 + ld [hl], $1 + ret + +Func_16781: ; 0x16781 + ld a, [$d500] + and a + jr z, .asm_167bd + xor a + ld [$d500], a + ld a, [$d503] + and a + jr nz, .asm_167c2 + ld bc, $34ca + ld [$ff8a], a + ld a, Bank(Func_8576) + ld hl, Func_8576 + call BankSwitch + ld a, [$d502] + xor $1 + set 1, a + ld [$d502], a + ld a, $14 + ld [$d503], a + call Func_16859 + ld a, $6 + ld [$ff8a], a + ld a, Bank(Func_10000) + ld hl, Func_10000 + call BankSwitch + ret +.asm_167bd + ld a, [$d503] + and a + ret z +.asm_167c2 + dec a + ld [$d503], a + ret nz + ld a, [$d502] + res 1, a + ld [$d502], a + call Func_16859 + ld a, [$d502] + and $1 + ld c, a + ld a, [$d4af] + and $fe + or c + ld [$d4af], a + ld [$ff8a], a + ld a, Bank(Func_e578) + ld hl, Func_e578 + call BankSwitch + call Func_159f4 + ld de, $0007 + call PlaySoundEffect + ld a, [$d4af] + bit 0, a + jp nz, Func_15450 + jp Func_15499 + +INCBIN "baserom.gbc",$167ff,$16859 - $167ff + +Func_16859: ; 0x16859 + ld a, [$d502] + sla a + ld c, a + ld b, $0 + ld hl, $6899 ; todo + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_1686c + ld hl, $6910 ; todo +.asm_1686c + 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",$16878,$16f95 - $16878 Func_16f95: ; 0x16f95 ld a, [$d482] @@ -16412,7 +18001,44 @@ Func_16f95: ; 0x16f95 ld [$d60d], a ret -INCBIN "baserom.gbc",$16fc1,$175f5 - $16fc1 +INCBIN "baserom.gbc",$16fc1,$174ea - $16fc1 + +Func_174ea: ; 0x174ea + ld a, [$d624] + ld hl, $d625 + cp [hl] + ret z + ld a, [$d626] + dec a + ld [$d626], a + jr nz, .asm_17514 + ld a, [$d625] + ld [$d624], a + cp $3 + jr c, .asm_1750f + ld a, $1 + ld [$d609], a + ld a, $3 + ld [$d607], a +.asm_1750f + ld a, [$d624] + scf + ret +.asm_17514 + and $7 + ret nz + ld a, [$d626] + bit 3, a + jr nz, .asm_17523 + ld a, [$d624] + scf + ret +.asm_17523 + ld a, [$d625] + scf + ret + +INCBIN "baserom.gbc",$17528,$175f5 - $17528 DrawTimer: ; 0x175f5 ; Loads the OAM data for the timer in the top-right corner of the screen. @@ -20467,10 +22093,66 @@ Func_30128: ; 0x30128 call Func_490 ret -INCBIN "baserom.gbc",$30164,$30253 - $30164 +Func_30164: ; 0x30164 + ld a, [$d49b] + inc a + cp $b + jr z, .asm_30175 + ld [$d49b], a + ld a, $1 + ld [$d4ca], a + ret +.asm_30175 + ld bc, $34f4 + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + ld a, $2 + ld [$d4ca], a + ret + +Func_30188: ; 0x30188 + ld a, [$d5ca] + and a + ret nz + ld a, [$d4ca] + and a + ret z + cp $1 + jr nz, .asm_301a7 + call Func_30e8 + call Func_30db + ld hl, $d5cc + ld de, $2974 + call Func_32aa + jr .asm_301c9 +.asm_301a7 + ld bc, $1000 + ld de, $0000 + push bc + push de + call Func_30e8 + call Func_30db + ld hl, $d5d4 + ld de, $29a6 + call Func_32cc + pop de + pop bc + ld hl, $d5cc + ld de, $2986 + call Func_32aa +.asm_301c9 + xor a + ld [$d4ca], a + ret + +INCBIN "baserom.gbc",$301ce,$30253 - $301ce Func_30253: ; 0x30253 ld a, [wCurrentMap] + ; fall through +Func_30256: ; 0x30256 sla a ld c, a ld b, $0 @@ -20817,7 +22499,132 @@ INCBIN "baserom.gbc",$4def4,$50000 - $4def4 SECTION "bank14", ROMX, BANK[$14] -INCBIN "baserom.gbc",$50000,$54000 - $50000 ; 0x50000 +Func_50000: ; 0x50000 + sla a + ld c, a + ld b, $0 + ld hl, $4076 ; todo + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + push hl + di + ld b, $4 +.asm_50010 + ld a, [$ff44] + and a + jr nz, .asm_50010 + dec b + jr nz, .asm_50010 + xor a + ld [$ff24], a + ld [$ff25], a + ld a, $80 + ld [$ff26], a + xor a + ld [$ff1a], a + ld hl, $d84b + ld c, $30 + ld b, $10 +.asm_5002b + ld a, [$ff00+c] + ld [hli], a + ld a, $ff + ld [$ff00+c], a + inc c + dec b + jr nz, .asm_5002b + ld a, $80 + ld [$ff1a], a + ld a, $ff + ld [$ff1b], a + ld a, $20 + ld [$ff1c], a + ld a, $ff + ld [$ff1d], a + ld a, $87 + ld [$ff1e], a + ld a, $77 + ld [$ff24], a + ld a, $44 + ld [$ff25], a + pop hl + call Func_51f56 + xor a + ld [$ff24], a + ld [$ff25], a + ld [$ff26], a + ld hl, $d84b + ld c, $30 + ld b, $10 +.asm_50062 + ld a, [hli] + ld [$ff00+c], a + inc c + dec b + jr nz, .asm_50062 + ld a, $77 + ld [$ff24], a + ld a, $ff + ld [$ff25], a + ld a, $80 + ld [$ff26], a + ei + ret + +INCBIN "baserom.gbc",$50076,$51f56 - $50076 + +Func_51f56: ; 0x51f56 + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a +.asm_51f5a + ld a, [hli] + ld d, a + ld a, $3 +.asm_51f5e + dec a + jr nz, .asm_51f5e + call Func_51f94 + call Func_51fa0 + call Func_51f94 + call Func_51fa0 + call Func_51f94 + call Func_51fa0 + call Func_51f94 + call Func_51fa0 + call Func_51f94 + call Func_51fa0 + call Func_51f94 + call Func_51fa0 + call Func_51f94 + call Func_51fa0 + call Func_51f94 + dec bc + ld a, c + or b + jr nz, .asm_51f5a + ret + +Func_51f94: ; 0x51f94 + ld a, d + and $80 + srl a + srl a + ld [$ff1c], a + sla d + ret + +Func_51fa0: ; 0x51fa0 + ld a, $3 +.asm_51fa2 + dec a + jr nz, .asm_51fa2 + ret + +INCBIN "baserom.gbc",$51fa6,$54000 - $51fa6 SECTION "bank15", ROMX, BANK[$15] |