diff options
author | Marcus Huderle <huderlem@gmail.com> | 2015-07-18 16:20:02 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2015-07-18 16:20:02 -0700 |
commit | ea309908b7d2a8ef4ebcc1b5f3c7954cf300c493 (patch) | |
tree | 47bff3c56bbd9dd92a4b9a229d566d71f1ad9204 | |
parent | 8eefd6a14ad4ce97008bea6c6fe10c17fc67cb84 (diff) |
Dump all known routines.
-rwxr-xr-x | main.asm | 3045 | ||||
-rwxr-xr-x | wram.asm | 8 |
2 files changed, 2997 insertions, 56 deletions
@@ -5752,7 +5752,97 @@ Func_3325: ; 0x3325 ld [hl], $0 ret -INCBIN "baserom.gbc",$3357,$33c3 - $3357 +Func_3357: ; 0x3357 + ld a, $1 + ld [hli], a + 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 + ld a, [de] + ld [hli], a + inc de + pop af + ld l, a + ld h, $c5 +.asm_336b + ld a, [de] + ld [hli], a + inc de + and a + jr nz, .asm_336b + ret + +Func_3372: ; 0x3372 + ld a, $1 + ld [hli], a + 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 + ld a, [de] + ld [hli], a + pop af + ld e, a + ld d, $c5 + ld hl, [sp+$5] + ld bc, $0801 +.asm_338a + ld a, [hl] + swap a + and $f + call Func_33a7 + dec b + ld a, [hld] + and $f + call Func_33a7 + dec b + jr nz, .asm_338a + ld a, $30 + ld [de], a + inc de + ld a, $20 + ld [de], a + inc de + xor a + ld [de], a + ret + +Func_33a7: ; 0x33a7 + jr nz, .asm_33b0 + ld a, b + dec a + jr z, .asm_33b0 + ld a, c + and a + ret nz +.asm_33b0 + add $30 + ld [de], a + inc de + ld c, $0 + ld a, b + cp $6 + jr z, .asm_33be + cp $3 + ret nz +.asm_33be + ld a, $2c + ld [de], a + inc de + ret Func_33c3: ; 0x33c3 ld a, [hli] @@ -5866,7 +5956,31 @@ Func_33e3: ; 0x33e3 call Func_735 ret -INCBIN "baserom.gbc",$3475,$351c - $3475 +Func_3475: ; 0x3475 + xor a + ld [hJoypadState], a + ld [hNewlyPressedButtons], a + ld [hPressedButtons], a + call HandleTilts + ld a, [wCurrentStage] + bit 0, a + ld [$ff8a], a + ld a, Bank(HandleFlippers) + ld hl, HandleFlippers + call nz, BankSwitch + ld [$ff8a], a + ld a, Bank(Func_84b7) + ld hl, Func_84b7 + call BankSwitch + call Func_33e3 + call Func_926 + rst $10 + ld a, [$d5ca] + and a + jr nz, Func_3475 + ret + +INCBIN "baserom.gbc",$34a6,$351c - $34a6 Func_351c: ; 0x351c ld hl, $d464 @@ -5888,7 +6002,45 @@ Func_351c: ; 0x351c call BankSwitch ret -INCBIN "baserom.gbc",$3538,$3579 - $3538 +Func_3538: ; 0x3538 + ld hl, $d47a + ld a, [hl] + add e + daa + ld [hli], a + ld a, [hl] + adc d + daa + ld [hli], a + ld a, [hl] + adc c + daa + ld [hli], a + ld a, [hl] + adc b + daa + ld [hli], a + ret nc + ld hl, $d47a + ld a, $99 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ret + +Func_3556: ; 0x3556 + ld a, [$d47a] + ld e, a + ld a, [$d47b] + ld d, a + ld a, [$d47c] + ld c, a + ld a, [$d47d] + ld b, a + ret + +INCBIN "baserom.gbc",$3567,$3579 - $3567 Func_3579: ; 0x3579 ld hl, $d47a @@ -13436,7 +13588,43 @@ Func_dbd4: ; 0xdbd4 ld [$d4a5], a ret -INCBIN "baserom.gbc",$dc00,$dc49 - $dc00 +Func_dc00: ; 0xdc00 + ld a, [$d4a6] + ld [$d4a3], a + ld a, [$d4a7] + ld [$d4a4], a + ld a, [$d4a8] + ld [$d4a5], a + ld a, [$d4a4] + and a + jr z, .asm_dc1a + ld a, $1 +.asm_dc1a + ld [$d4a1], a + ld a, [$d4a4] + ld c, $0 + cp $2 + jr c, .asm_dc34 + ld c, $4 + cp $6 + jr c, .asm_dc34 + ld c, $10 + cp $b + jr c, .asm_dc34 + ld c, $ff +.asm_dc34 + ld a, c + ld [$d4a2], a + ld a, [wCurrentStage] + bit 0, a + ret z + ld [$ff8a], a + ld a, Bank(Func_14707) + ld hl, Func_14707 + call BankSwitch + ret + +INCBIN "baserom.gbc",$dc49,$dc49 - $dc49 Func_dc49: ; 0xdc49 ld a, [wCurrentStage] @@ -16482,23 +16670,23 @@ Func_f154: ; 0xf154 ld a, [wCurrentStage] call CallInFollowingTable CallTable_f15a: ; 0xf15a - dw $6F28 - db $05, $00 + dw Func_16f28 + db Bank(Func_16f28), $00 - dw $6F28 - db $05, $00 + dw Func_16f28 + db Bank(Func_16f28), $00 - dw $6F28 - db $05, $00 + dw Func_16f28 + db Bank(Func_16f28), $00 - dw $6F28 - db $05, $00 + dw Func_16f28 + db Bank(Func_16f28), $00 - dw $55F2 - db $07, $00 + dw Func_1d5f2 + db Bank(Func_1d5f2), $00 - dw $55F2 - db $07, $00 + dw Func_1d5f2 + db Bank(Func_1d5f2), $00 Func_f172: ; 0xf172 ld a, $1 @@ -17576,23 +17764,27 @@ Func_10000: ; 0x10000 ld a, [wCurrentStage] call CallInFollowingTable CallTable_10027: ; 0x10027 - dw $4000 - db $08, $00 + ; STAGE_RED_FIELD_TOP + dw Func_20000 + db Bank(Func_20000), $00 - dw $4000 - db $08, $00 + ; STAGE_RED_FIELD_BOTTOM + dw Func_20000 + db Bank(Func_20000), $00 - dw $4000 - db $08, $00 + dw Func_20000 + db Bank(Func_20000), $00 - dw $4000 - db $08, $00 + dw Func_20000 + db Bank(Func_20000), $00 - dw $42BC - db $08, $00 + ; STAGE_BLUE_FIELD_TOP + dw Func_202bc + db Bank(Func_202bc), $00 - dw $42BC - db $08, $00 + ; STAGE_BLUE_FIELD_BOTTOM + dw Func_202bc + db Bank(Func_202bc), $00 StartCatchEmMode: ; 0x1003f ld a, [$d54b] ; current game mode? @@ -17771,7 +17963,7 @@ Func_10157: ; 0x10157 ld [$d5bb], a ld [$d5c6], a ld [$d5b6], a - ld [$d5c0], a + ld [wNumMonHits], a call Func_10488 ld [$ff8a], a ld a, Bank(Func_86d2) @@ -18102,14 +18294,69 @@ Func_10362: ; 0x10362 ld de, $c150 ld bc, $0000 .asm_10384 - call $438e + call Func_1038e inc c ld a, c cp $d jr nz, .asm_10384 ret -INCBIN "baserom.gbc",$1038e,$10432 - $1038e +Func_1038e: ; 0x1038e + push bc + push de + ld a, c + sla a + add c + ld c, a + sla c + ld hl, $43c6 + add hl, bc + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [$ff8c] + add [hl] + ld [de], a + inc hl + inc de + ld a, [$ff8d] + adc [hl] + ld [de], a + inc de + ld a, [$ff8e] + ld [de], a + inc de + ld a, $0 + ld [de], a + inc de + pop bc + push de + xor a + ld de, $11d2 + call Func_10c5 + pop de + pop bc + ret + +INCBIN "baserom.gbc",$103c6,$10414 - $103c6 + +Func_10414: ; 0x10414 + ld a, $4 + ld bc, $4420 + ld de, $11b5 + call Func_10c5 + ret + +INCBIN "baserom.gbc",$10420,$10432 - $10420 Func_10432: ; 0x10432 ld a, $4 @@ -18158,7 +18405,154 @@ Func_10488: ; 0x10488 jr nz, .asm_1048e ret -INCBIN "baserom.gbc",$10496,$10611 - $10496 +Func_10496: ; 0x10496 + xor a + ld [$d5c6], a + ld a, $2a + ld hl, $47e0 + ld de, $87e0 + ld bc, $0020 + call LoadVRAMData + ld a, $2a + ld hl, $4800 + ld de, $8900 + ld bc, $0180 + call LoadVRAMData + call Func_104e2 + ld hl, $45e4 + ld de, $d5f4 + call Func_28a0 + ld a, $1 + ld [$d5f3], a + xor a + ld [wBallXVelocity], a + ld [wBallXVelocity + 1], a + ld [wBallYVelocity], a + ld [wBallYVelocity + 1], a + xor a + ld [$d548], a + ld [$d549], a + ld de, $000b + call PlaySoundEffect + ret + +Func_104e2: ; 0x104e2 + ld a, [$d47e] + cp $2 + jr nc, .asm_104f8 + ld a, $2a + ld hl, $4380 + ld de, $8380 + ld bc, $0040 + call LoadVRAMData + ret +.asm_104f8 + cp $3 + jr nc, .asm_1050b + ld a, $2a + ld hl, $42c0 + ld de, $8380 + ld bc, $0040 + call LoadVRAMData + ret +.asm_1050b + cp $5 + jr nc, .asm_1051e + ld a, $2a + ld hl, $4300 + ld de, $8380 + ld bc, $0040 + call LoadVRAMData + ret +.asm_1051e + ld a, $2a + ld hl, $4340 + ld de, $8380 + ld bc, $0040 + call LoadVRAMData + ret + +Func_1052d: ; 0x1052d + ld a, [$d5f5] + cp $c + jr nz, .asm_10541 + ld a, [$d5f4] + cp $1 + jr nz, .asm_10541 + ld de, $0041 + call PlaySoundEffect +.asm_10541 + ld hl, $45e4 + ld de, $d5f4 + call Func_28a9 + ld a, [$d5f6] + cp $1 + jr nz, .asm_1055d + ld a, [$d5f4] + cp $1 + jr nz, .asm_1055d + xor a + ld [$d5bb], a + ret +.asm_1055d + ld a, [$d5f6] + cp $15 + ret nz + ld a, [$d5f4] + cp $1 + ret nz + call Func_3475 + ld de, $0000 + call Func_490 + rst $10 + ld de, $2329 + call PlaySoundEffect + call Func_10825 + call Func_3475 + ld a, [$d460] + and a + call z, Func_10848 + ld a, $50 + ld [$d4b4], a + ld a, $40 + ld [$d4b6], a + ld a, $80 + ld [wBallXVelocity], a + xor a + ld [wBallXPos], a + ld [wBallYPos], a + ld [$d5f3], a + ld a, $1 + ld [$d548], a + ld [$d549], a + ld [$ff8a], a + ld a, Bank(Func_dc00) + ld hl, Func_dc00 + call BankSwitch + call Func_10157 + ld de, $0001 + call Func_490 + ld hl, $d628 + call Func_e4a + jr nc, .asm_105d1 + ld c, $a + call Func_e55 + ld [$ff8a], a + ld a, Bank(Func_30164) + ld hl, Func_30164 + call z, BankSwitch +.asm_105d1 + call Func_1077c + ld a, [$d624] + cp $3 + ret z + inc a + ld [$d625], a + ld a, $80 + ld [$d626], a + ret + +INCBIN "baserom.gbc",$105e4,$10611 - $105e4 Func_10611: ; 0x10611 and a @@ -18178,7 +18572,50 @@ Func_10611: ; 0x10611 call Func_10c5 ret -INCBIN "baserom.gbc",$1062a,$10696 - $1062a +INCBIN "baserom.gbc",$1062a,$10648 - $1062a + +Func_10648: ; 0x10648 + call Func_10184 + ld a, [$d54e] + dec a + ld [$d54e], a + jr nz, .asm_10677 + ld a, $14 + ld [$d54e], a + ld hl, $d586 + ld b, $18 +.asm_1065e + ld a, [$d54f] + and $1 + ld [hli], a + xor $1 + ld [hli], a + dec b + jr nz, .asm_1065e + ld a, [$d54f] + dec a + ld [$d54f], a + jr nz, .asm_10677 + ld hl, $d54d + inc [hl] +.asm_10677 + ret + +Func_10678: ; 0x10678 + ld a, [wCurrentMon] + ld c, a + ld b, $0 + ld hl, $7429 + add hl, bc + ld a, [hl] + ld [$d5bc], a + ld [$d5bd], a + ld a, $1 + ld [$d5bb], a + xor a + ld [$d5bf], a + ld [wNumMonHits], a + ret Func_10696: ; 0x10696 call Func_30e8 @@ -18188,7 +18625,15 @@ Func_10696: ; 0x10696 call Func_32aa ret -INCBIN "baserom.gbc",$106a6,$106b6 - $106a6 +Func_106a6: ; 0x106a6 + call Func_30e8 + call Func_30db + ld hl, $d5cc + ld de, $29d0 + call Func_32aa + ret + +INCBIN "baserom.gbc",$106b6,$106b6 - $106b6 Func_106b6: ; 0x106b6 ld a, [wCurrentMon] @@ -18261,7 +18706,26 @@ Func_106b6: ; 0x106b6 ld [$d5d8], a ret -INCBIN "baserom.gbc",$10732,$10753 - $10732 +Func_10732: ; 0x10732 + ld a, [wCurrentMon] + inc a + ld e, a + ld d, $0 + call Func_4ef + ret + +Func_1073d: ; 0x1073d + ld a, [$d460] + ld c, a + ld b, $0 + ld hl, $d300 + add hl, bc + ld a, [wCurrentMon] + ld [hl], a + ld a, [$d460] + inc a + ld [$d460], a + ret SetPokemonSeenFlag: ; 0x10753 ld a, [$d550] @@ -18284,7 +18748,26 @@ SetPokemonSeenFlag: ; 0x10753 call Func_f1a ret -INCBIN "baserom.gbc",$1077c,$107a5 - $1077c +Func_1077c: ; 0x1077c + ld a, [$d550] + and a + ld a, [wCurrentMon] + jr z, .asm_1078f + ld a, [$d552] + cp $ff + jr nz, .asm_1078f + ld a, [wCurrentMon] +.asm_1078f + ld c, a + ld b, $0 + ld hl, wPokedexFlags + add hl, bc + set 1, [hl] + ld hl, wPokedexFlags + ld de, $a10c + ld bc, $0098 + call Func_f1a + ret Func_107a5: ; 0x107a5 xor a @@ -18367,7 +18850,39 @@ Func_107f8: ; 0x107f8 call PlaySoundEffect ret -INCBIN "baserom.gbc",$10825,$10871 - $10825 +Func_10825: ; 0x10825 + call Func_3556 + push bc + push de + call Func_351c + call Func_30e8 + call Func_30db + ld hl, $d5e9 + ld de, $2a50 + call Func_3372 + pop de + pop bc + ld hl, $d5e4 + ld de, $2a43 + call Func_3357 + ret + +Func_10848: ; 0x10848 + ld bc, $34fa + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + call Func_30e8 + call Func_30db + ld hl, $d5d4 + ld de, $2a0c + call Func_32aa + ld hl, $d5cc + ld de, $29e8 + call Func_32aa + call Func_3475 + ret Func_10871: ; 0x10871 ld a, [wCurrentMon] @@ -18599,26 +19114,26 @@ Func_10a95: ; 0x19a95 call CallInFollowingTable PointerTable_10a9b: ; 0x10a9b ; STAGE_RED_FIELD_TOP - dw $4581 - db $08, $00 + dw Func_20581 + db Bank(Func_20581), $00 ; STAGE_RED_FIELD_BOTTOM - dw $4581 - db $08, $00 + dw Func_20581 + db Bank(Func_20581), $00 - dw $4581 - db $08, $00 + dw Func_20581 + db Bank(Func_20581), $00 - dw $4581 - db $08, $00 + dw Func_20581 + db Bank(Func_20581), $00 ; STAGE_BLUE_FIELD_TOP - dw $4bAE - db $08, $00 + dw Func_20bae + db Bank(Func_20bae), $00 ; STAGE_BLUE_FIELD_BOTTOM - dw $4bAE - db $08, $00 + dw Func_20bae + db Bank(Func_20bae), $00 Func_10ab3: ; 0x10ab3 ld a, [$d54b] @@ -18651,7 +19166,7 @@ Func_10ac8: ; 0x10ac8 ld [$d54b], a ld [$d5bb], a ld [$d5b6], a - ld [$d5c0], a + ld [wNumMonHits], a ld [$d551], a ld [$d554], a call Func_10488 @@ -18925,7 +19440,17 @@ Func_10c38: ; 0x10c38 call LoadVRAMData ret -INCBIN "baserom.gbc",$10ca5,$10cb7 - $10ca5 +Func_10ca5: ; 0x10ca5 + ld a, [$d461] + ld c, a + ld b, $0 + ld hl, $d300 + add hl, bc + ld a, [$d552] + cp $ff + ret z + ld [hl], a + ret Func_10cb7: ; 0x10cb7 call Func_30e8 @@ -19117,7 +19642,99 @@ Func_10d1d: ; 0x10d1d .asm_10e09 ret -INCBIN "baserom.gbc",$10e0a,$10ebb - $10e0a +Func_10e0a: ; 0x10e0a + ld a, [$d552] + cp $ff + jp z, Func_10e8b + ld c, a + ld b, $0 + sla c + rl b + sla c + rl b + sla c + rl b + sla c + rl b + ld hl, $5a3f + add hl, bc + ld de, $2b02 + ld bc, $2b34 + ld a, [hl] + cp $41 ; these might be text-related commands + jr z, .asm_10e4a + cp $49 + jr z, .asm_10e4a + cp $55 + jr z, .asm_10e4a + cp $45 + jr z, .asm_10e4a + cp $4f + jr z, .asm_10e4a + ld de, $2ae9 + ld bc, $2b1c +.asm_10e4a + push hl + push bc + push de + call Func_30e8 + call Func_30db + ld hl, $d5cc + pop de + call Func_32aa + ld hl, $d5d4 + pop de + call Func_32aa + pop hl + ld de, $c520 + ld b, $0 +.asm_10e67 + ld a, [hli] + and a + jr z, .asm_10e70 + ld [de], a + inc de + inc b + jr .asm_10e67 +.asm_10e70 + ld a, $20 + ld [de], a + inc de + xor a + ld [de], a + ld a, [$d5db] + add b + ld [$d5db], a + ld a, $14 + sub b + srl a + ld b, a + ld a, [$d5d8] + add b + ld [$d5d8], a + ret + +Func_10e8b: ; 0x10e8b + 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, $2b6b + call Func_32cc + pop de + pop bc + ld hl, $d5cc + ld de, $2b4c + call Func_32aa + ret Func_10ebb: ; 0x10ebb ld a, [$d460] @@ -19879,7 +20496,7 @@ Func_14282: ; 0x14282 ld a, [$d550] and a jr nz, .asm_14296 - ld a, [$d5c0] + ld a, [wNumMonHits] and a call nz, Func_142b3 ret @@ -27674,7 +28291,7 @@ Func_1c43c: ; 0x1c43c ld a, [$d550] and a jr nz, .asm_1c450 - ld a, [$d5c0] + ld a, [wNumMonHits] and a call nz, Func_1c46d ret @@ -31796,7 +32413,2325 @@ INCBIN "baserom.gbc",$1f5ad,$20000 - $1f5ad SECTION "bank8", ROMX, BANK[$8] -INCBIN "baserom.gbc",$20000,$24000 - $20000 ; 0x20000 +Func_20000: ; 0x20000 + ld a, [$d54c] + cp $4 + jp z, Func_20230 + cp $c + jp z, Func_202a8 + cp $5 + jp z, Func_202b2 + cp $0 + jr z, .asm_20018 + scf + ret +.asm_20018 + call Func_201f2 + ld a, [$d54d] + call CallInFollowingTable +PointerTable_20021: ; 0x20021 + dw Func_20041 + db Bank(Func_20041), $00 + + dw Func_2005f + db Bank(Func_2005f), $00 + + dw Func_2006b + db Bank(Func_2006b), $00 + + dw Func_200a3 + db Bank(Func_200a3), $00 + + dw Func_200d3 + db Bank(Func_200d3), $00 + + dw Func_20193 + db Bank(Func_20193), $00 + + dw Func_201c2 + db Bank(Func_201c2), $00 + + dw Func_201ce + db Bank(Func_201ce), $00 + +Func_20041: ; 0x20041 + ld a, [$d5b6] + cp $18 + jr nz, .asm_2005d + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_2005d + ld hl, $d54d + inc [hl] + ld a, $14 + ld [$d54e], a + ld a, $5 + ld [$d54f], a +.asm_2005d + scf + ret + +Func_2005f: ; 0x2005f + ld [$ff8a], a + ld a, Bank(Func_10648) + ld hl, Func_10648 + call BankSwitch + scf + ret + +Func_2006b: ; 0x2006b + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_20098 + call Func_1130 + jr nz, .asm_200a1 + ld [$ff8a], a + ld a, Bank(Func_10414) + ld hl, Func_10414 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10362) + ld hl, Func_10362 + call BankSwitch + ld a, [hGameBoyColorFlag] + and a + ld [$ff8a], a + ld a, Bank(Func_10301) + ld hl, Func_10301 + call nz, BankSwitch +.asm_20098 + ld a, $1 + ld [$d5c6], a + ld hl, $d54d + inc [hl] +.asm_200a1 + scf + ret + +Func_200a3: ; 0x200a3 + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_200af + call Func_1130 + jr nz, .asm_200d1 +.asm_200af + ld [$ff8a], a + ld a, Bank(Func_10678) + ld hl, Func_10678 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10732) + ld hl, Func_10732 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10464) + ld hl, Func_10464 + call BankSwitch + ld hl, $d54d + inc [hl] +.asm_200d1 + scf + ret + +Func_200d3: ; 0x200d3 + ld a, [$d5be] + dec a + ld [$d5be], a + jr z, .asm_200e6 + ld a, [$d5c4] + inc a + ld [$d5c4], a + and $3 + ret nz +.asm_200e6 + ld a, [$d5bf] + and a + jp z, .asm_20167 + xor a + ld [$d5bf], a + ld a, [$d5c3] + ld [$d5be], a + xor a + ld [$d5c4], a + ld a, [wCurrentMon] + cp MEW - 1 + jr nz, .notMew + ld a, [$d5c5] + inc a + ld [$d5c5], a + jr nz, .asm_20116 +.notMew + ld a, [wNumMonHits] + cp $3 + jr z, .hitMonThreeTimes + inc a + ld [wNumMonHits], a +.asm_20116 + ld bc, $34dc + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + ld bc, $0030 + ld de, $0000 + push bc + push de + call Func_30e8 + call Func_30db + ld hl, $d5e9 + ld de, $2a2a + call Func_3372 + pop de + pop bc + ld hl, $d5e4 + ld de, $2a21 + call Func_3357 + ld a, [wNumMonHits] + ld [$ff8a], a + ld a, Bank(Func_10611) + ld hl, Func_10611 + call BankSwitch + ld c, $2 + jr .asm_2018a +.hitMonThreeTimes + xor a + ld [$d57e], a + ld a, $1 + ld [$d57f], a + ld hl, $d54d + inc [hl] + ld c, $2 + jr .asm_2018a +.asm_20167 + ld a, [$d5be] + and a + ret nz + ld a, [$d5bc] + ld c, a + ld a, [$d5bd] + sub c + cp $1 + ld c, $0 + jr nc, .asm_2017c + ld c, $1 +.asm_2017c + ld b, $0 + ld hl, $d5c1 + add hl, bc + ld a, [hl] + ld [$d5be], a + xor a + ld [$d5c4], a +.asm_2018a + ld a, [$d5bc] + add c + ld [$d5bd], a + scf + ret + +Func_20193: ; 0x20193 + ld a, [$d580] + and a + jr z, .asm_2019e + xor a + ld [$d580], a + ret +.asm_2019e + ld [$ff8a], a + ld a, Bank(Func_10496) + ld hl, Func_10496 + call BankSwitch + ld hl, $d54d + inc [hl] + ld [$ff8a], a + ld a, Bank(Func_106b6) + ld hl, Func_106b6 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_1073d) + ld hl, Func_1073d + call BankSwitch + scf + ret + +Func_201c2: ; 0x201c2 + ld [$ff8a], a + ld a, Bank(Func_1052d) + ld hl, Func_1052d + call BankSwitch + scf + ret + +Func_201ce: ; 0x201ce + ld a, [$d5ca] + and a + ret nz + call Func_30e8 + ld [$ff8a], a + ld a, Bank(Func_dc00) + ld hl, Func_dc00 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10157) + ld hl, Func_10157 + call BankSwitch + ld de, $0001 + call Func_490 + scf + ret + +Func_201f2: ; 0x201f2 + ld [$ff8a], a + ld a, Bank(Func_107f8) + ld hl, Func_107f8 + call BankSwitch + ld a, [$d57e] + and a + ret z + xor a + ld [$d57e], a + ld a, $7 + ld [$d54d], a + ld a, [wCurrentMon] + cp $96 + jr nz, .asm_2021b + ld [$ff8a], a + ld a, Bank(Func_1077c) + ld hl, Func_1077c + call BankSwitch +.asm_2021b + ld [$ff8a], a + ld a, Bank(Func_86d2) + ld hl, Func_86d2 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_106a6) + ld hl, Func_106a6 + call BankSwitch + ret + +Func_20230: ; 0x20230 + ld a, [$d5b6] + cp $18 + jr z, .asm_2029d + sla a + ld c, a + ld b, $0 + ld hl, $d586 + add hl, bc + ld d, $4 +.asm_20242 + ld a, $1 + ld [hli], a + inc hl + ld a, l + cp $b6 + jr z, .asm_2024e + dec d + jr nz, .asm_20242 +.asm_2024e + ld a, [$d5b6] + add $4 + cp $18 + jr c, .asm_20259 + ld a, $18 +.asm_20259 + ld [$d5b6], a + cp $18 + jr nz, .asm_20264 + xor a + ld [$d538], a +.asm_20264 + ld [$ff8a], a + ld a, Bank(Func_10184) + ld hl, Func_10184 + call BankSwitch + ld bc, $34d6 + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + ld bc, $0010 + ld de, $0000 + push bc + push de + call Func_30e8 + call Func_30db + ld hl, $d5e9 + ld de, $2a3d + call Func_3372 + pop de + pop bc + ld hl, $d5e4 + ld de, $2a30 + call Func_3357 +.asm_2029d + ld bc, $0001 + ld de, $0000 + call Func_3538 + scf + ret + +Func_202a8: ; 0x202a8 + ld bc, $0000 + ld de, $1000 + call Func_3538 + ret + +Func_202b2: ; 0x202b2 + ld bc, $0005 + ld de, $0000 + call Func_3538 + ret + +Func_202bc: ; 0x202bc + ld a, [$d54c] + cp $4 + jp z, Func_204f1 + cp $c + jp z, Func_20569 + cp $f + jp z, Func_20573 + cp $e + jp z, Func_2057a + cp $0 + jr z, .asm_202d9 + scf + ret +.asm_202d9 + call Func_204b3 + ld a, [$d54d] + call CallInFollowingTable +PointerTable_202e2: ; 0x202e2 + dw Func_20302 + db Bank(Func_20302), $00 + + dw Func_20320 + db Bank(Func_20320), $00 + + dw Func_2032c + db Bank(Func_2032c), $00 + + dw Func_20364 + db Bank(Func_20364), $00 + + dw Func_20394 + db Bank(Func_20394), $00 + + dw Func_20454 + db Bank(Func_20454), $00 + + dw Func_20483 + db Bank(Func_20483), $00 + + dw Func_2048f + db Bank(Func_2048f), $00 + +Func_20302: ; 0x20302 + ld a, [$d5b6] + cp $18 + jr nz, .asm_2031e + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_2031e + ld hl, $d54d + inc [hl] + ld a, $14 + ld [$d54e], a + ld a, $5 + ld [$d54f], a +.asm_2031e + scf + ret + +Func_20320: ; 0x20320 + ld [$ff8a], a + ld a, Bank(Func_10648) + ld hl, Func_10648 + call BankSwitch + scf + ret + +Func_2032c: ; 0x2032c + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_20333 + call Func_1130 + jr nz, .asm_20362 + ld [$ff8a], a + ld a, Bank(Func_10414) + ld hl, Func_10414 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10362) + ld hl, Func_10362 + call BankSwitch + ld a, [hGameBoyColorFlag] + and a + ld [$ff8a], a + ld a, Bank(Func_10301) + ld hl, Func_10301 + call nz, BankSwitch +.asm_20333 + ld a, $1 + ld [$d5c6], a + ld hl, $d54d + inc [hl] +.asm_20362 + scf + ret + +Func_20364: ; 0x20364 + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_20370 + call Func_1130 + jr nz, .asm_20392 +.asm_20370 + ld [$ff8a], a + ld a, Bank(Func_10678) + ld hl, Func_10678 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10732) + ld hl, Func_10732 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10464) + ld hl, Func_10464 + call BankSwitch + ld hl, $d54d + inc [hl] +.asm_20392 + scf + ret + +Func_20394: ; 0x20394 + ld a, [$d5be] + dec a + ld [$d5be], a + jr z, .asm_203a7 + ld a, [$d5c4] + inc a + ld [$d5c4], a + and $3 + ret nz +.asm_203a7 + ld a, [$d5bf] + and a + jp z, .asm_20428 + xor a + ld [$d5bf], a + ld a, [$d5c3] + ld [$d5be], a + xor a + ld [$d5c4], a + ld a, [wCurrentMon] + cp MEW - 1 + jr nz, .notMew + ld a, [$d5c5] + inc a + ld [$d5c5], a + jr nz, .asm_203d7 +.notMew + ld a, [wNumMonHits] + cp $3 + jr z, .asm_20417 + inc a + ld [wNumMonHits], a +.asm_203d7 + ld bc, $34dc + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + ld bc, $0030 + ld de, $0000 + push bc + push de + call Func_30e8 + call Func_30db + ld hl, $d5e9 + ld de, $2a2a + call Func_3372 + pop de + pop bc + ld hl, $d5e4 + ld de, $2a21 + call Func_3357 + ld a, [wNumMonHits] + ld [$ff8a], a + ld a, Bank(Func_10611) + ld hl, Func_10611 + call BankSwitch + ld c, $2 + jr .asm_2044b +.asm_20417 + xor a + ld [$d57e], a + ld a, $1 + ld [$d57f], a + ld hl, $d54d + inc [hl] + ld c, $2 + jr .asm_2044b +.asm_20428 + ld a, [$d5be] + and a + ret nz + ld a, [$d5bc] + ld c, a + ld a, [$d5bd] + sub c + cp $1 + ld c, $0 + jr nc, .asm_2043d + ld c, $1 +.asm_2043d + ld b, $0 + ld hl, $d5c1 + add hl, bc + ld a, [hl] + ld [$d5be], a + xor a + ld [$d5c4], a +.asm_2044b + ld a, [$d5bc] + add c + ld [$d5bd], a + scf + ret + +Func_20454: ; 0x20454 + ld a, [$d580] + and a + jr z, .asm_2045f + xor a + ld [$d580], a + ret +.asm_2045f + ld [$ff8a], a + ld a, Bank(Func_10496) + ld hl, Func_10496 + call BankSwitch + ld hl, $d54d + inc [hl] + ld [$ff8a], a + ld a, Bank(Func_106b6) + ld hl, Func_106b6 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_1073d) + ld hl, Func_1073d + call BankSwitch + scf + ret + +Func_20483: ; 0x20483 + ld [$ff8a], a + ld a, Bank(Func_1052d) + ld hl, Func_1052d + call BankSwitch + scf + ret + +Func_2048f: ; 0x2048f + ld a, [$d5ca] + and a + ret nz + call Func_30e8 + ld [$ff8a], a + ld a, Bank(Func_dc00) + ld hl, Func_dc00 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10157) + ld hl, Func_10157 + call BankSwitch + ld de, $0001 + call Func_490 + scf + ret + +Func_204b3: ; 0x204b3 + ld [$ff8a], a + ld a, Bank(Func_107f8) + ld hl, Func_107f8 + call BankSwitch + ld a, [$d57e] + and a + ret z + xor a + ld [$d57e], a + ld a, $7 + ld [$d54d], a + ld a, [wCurrentMon] + cp MEW - 1 + jr nz, .notMew + ld [$ff8a], a + ld a, Bank(Func_1077c) + ld hl, Func_1077c + call BankSwitch +.notMew + ld [$ff8a], a + ld a, Bank(Func_86d2) + ld hl, Func_86d2 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_106a6) + ld hl, Func_106a6 + call BankSwitch + ret + +Func_204f1: ; 0x204f1 + ld a, [$d5b6] + cp $18 + jr z, .asm_2055e + sla a + ld c, a + ld b, $0 + ld hl, $d586 + add hl, bc + ld d, $4 +.asm_20503 + ld a, $1 + ld [hli], a + inc hl + ld a, l + cp $b6 ; TODO: This is the low byte of a pointer + jr z, .asm_2050f + dec d + jr nz, .asm_20503 +.asm_2050f + ld a, [$d5b6] + add $4 + cp $18 + jr c, .asm_2051a + ld a, $18 +.asm_2051a + ld [$d5b6], a + cp $18 + jr nz, .asm_20525 + xor a + ld [$d538], a +.asm_20525 + ld [$ff8a], a + ld a, Bank(Func_10184) + ld hl, Func_10184 + call BankSwitch + ld bc, $34d6 + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + ld bc, $0010 + ld de, $0000 + push bc + push de + call Func_30e8 + call Func_30db + ld hl, $d5e9 + ld de, $2a3d + call Func_3372 + pop de + pop bc + ld hl, $d5e4 + ld de, $2a30 + call Func_3357 +.asm_2055e + ld bc, $0001 + ld de, $0000 + call Func_3538 + scf + ret + +Func_20569: ; 0x20569 + ld bc, $0000 + ld de, $1000 + call Func_3538 + ret + +Func_20573: ; 0x20573 + ld bc, $0005 + ld de, $0000 + ret + +Func_2057a: ; 0x2057a + ld bc, $0005 + ld de, $0000 + ret + +Func_20581: ; 0x20581 + ld a, [$d54c] + cp $4 + jp z, Func_2080f + cp $3 + jp z, Func_20839 + cp $5 + jp z, Func_2085a + cp $6 + jp z, Func_20887 + cp $7 + jp z, Func_208a8 + cp $8 + jp z, Func_208c9 + cp $9 + jp z, Func_208ea + cp $a + jp z, Func_2090b + cp $b + jp z, Func_2092c + cp $c + jp z, Func_2094d + cp $d + jp z, Func_20b02 + cp $2 + jp z, Func_20a65 + cp $1 + jp z, Func_20a82 + cp $0 + jr z, .asm_205cb + scf + ret +.asm_205cb + call Func_2077b + ld a, [$d54d] + call CallInFollowingTable +PointerTable_205d4: ; 0x205d4 + dw Func_205e0 + db Bank(Func_205e0), $00 + + dw Func_2070b + db Bank(Func_2070b), $00 + + dw Func_20757 + db Bank(Func_20757), $00 + +Func_205e0: ; 0x205e0 + ld a, [wCurrentStage] + ld b, a + ld a, [$d578] + and a + ret z + dec a + bit 0, b + jr z, .asm_205f0 + add $c +.asm_205f0 + ld c, a + ld b, $0 + ld hl, $d566 + add hl, bc + ld a, [hl] + and a + ret z + xor a + ld [hl], a + ld [$d551], a + call Func_20651 + ld a, [$d558] + ld [$d531], a + ld a, [$d559] + ld [$d532], a + ld [$d539], a + ld a, [wCurrentStage] + bit 0, a + ld [$ff8a], a + ld a, Bank(Func_14135) + ld hl, Func_14135 + call nz, BankSwitch + ld bc, $34e8 + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + call Func_30e8 + call Func_30db + ld de, $2bd8 + ld hl, $d5cc + call Func_32aa + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_2064f + ld a, $37 + ld hl, $4af0 + ld de, $0070 + ld bc, $0008 + call Func_7dc +.asm_2064f + scf + ret + +Func_20651: ; 0x20651 + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_20681 + ld a, [$d553] + dec a + ld c, a + ld b, $0 + swap c + sla c + ld hl, $4e80 + add hl, bc + ld a, [$d554] + ld c, a + ld b, $0 + swap c + sla c + push hl + ld hl, $8ae0 + add hl, bc + ld d, h + ld e, l + pop hl + ld bc, $0020 + ld a, $36 + call LoadVRAMData +.asm_20681 + ld a, [$d554] + inc a + ld [$d554], a + cp $1 + jr nz, .asm_20693 + ld de, $0728 + call PlaySoundEffect + ret +.asm_20693 + cp $2 + jr nz, .asm_2069e + ld de, $0744 + call PlaySoundEffect + ret +.asm_2069e + cp $3 + ret nz + ld de, $0745 + call PlaySoundEffect + ld a, $1 + ld [$d604], a + ld a, $80 + ld [$d533], a + xor a + ld [$d538], a + ld [$d531], a + ld [$d532], a + ld [$d539], a + ld [$d537], a + ld [$d53c], a + ld [$d53d], a + ld [$d53a], a + ld [$d53b], a + ld [$d535], a + ld [$d536], a + ld [$d558], a + ld [$d559], a + ld a, [wCurrentStage] + bit 0, a + ret z + ld a, $36 + ld hl, $6c60 + ld de, $8200 + ld bc, $00e0 + call LoadVRAMData + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_20700 + ld a, $37 + ld hl, $4af8 + ld de, $0078 + ld bc, $0008 + call Func_7dc +.asm_20700 + ld [$ff8a], a + ld a, Bank(Func_16425) + ld hl, Func_16425 + call BankSwitch + ret + +Func_2070b: ; 0x2070b + ld [$ff8a], a + ld a, Bank(Func_dc00) + ld hl, Func_dc00 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10ca5) + ld hl, Func_10ca5 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10ac8) + ld hl, Func_10ac8 + call BankSwitch + ld de, $0001 + call Func_490 + ld hl, $d629 + call Func_e4a + ld [$ff8a], a + ld a, Bank(Func_1077c) + ld hl, Func_1077c + call BankSwitch + ld a, [$d624] + cp $3 + ret z + add $2 + cp $3 + jr c, .asm_2074d + ld a, $3 +.asm_2074d + ld [$d625], a + ld a, $80 + ld [$d626], a + scf + ret + +Func_20757: ; 0x20757 + ld a, [$d5ca] + and a + ret nz + call Func_30e8 + ld [$ff8a], a + ld a, Bank(Func_dc00) + ld hl, Func_dc00 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10ac8) + ld hl, Func_10ac8 + call BankSwitch + ld de, $0001 + call Func_490 + scf + ret + +Func_2077b: ; 0x2077b + ld hl, $d556 + ld a, [hli] + ld c, a + ld b, [hl] + or b + jr z, .asm_2078e + dec bc + ld a, b + ld [hld], a + ld [hl], c + or c + jr nz, .asm_2078e + call Func_20a55 +.asm_2078e + ld [$ff8a], a + ld a, Bank(Func_107f8) + ld hl, Func_107f8 + call BankSwitch + ld a, [$d57e] + and a + ret z + xor a + ld [$d57e], a + ld a, $2 + ld [$d54d], a + xor a + ld [$d604], a + ld hl, $d52f + ld [$d533], a + ld [$d538], a + ld [$d531], a + ld [$d532], a + ld [$d539], a + ld [$d537], a + ld [$d53c], a + ld [$d53d], a + ld [$d53a], a + ld [$d53b], a + ld [$d535], a + ld [$d536], a + ld [$d558], a + ld [$d559], a + ld [$d551], a + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_207f5 + ld [$ff8a], a + ld a, Bank(Func_14135) + ld hl, Func_14135 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_16425) + ld hl, Func_16425 + call BankSwitch +.asm_207f5 + ld [$ff8a], a + ld a, Bank(Func_86d2) + ld hl, Func_86d2 + call BankSwitch + call Func_30e8 + call Func_30db + ld hl, $d5cc + ld de, $2ad1 + call Func_32aa + ret + +Func_2080f: ; 0x2080f + ld bc, $0001 + ld de, $5000 + call Func_3538 + ld a, [$d551] + and a + jr nz, .asm_20837 + ld a, [$d538] + and a + jr z, .asm_20837 + xor a + ld [$d538], a + ld a, [$d55c] + and a + ld a, $0 + ld [$d55c], a + jp nz, Func_20977 + jp Func_209eb +.asm_20837 + scf + ret + +Func_20839: ; 0x20839 + ld a, [$d551] + and a + jr nz, .asm_20858 + ld a, [$d531] + and a + jr z, .asm_20858 + xor a + ld [$d531], a + ld a, [$d563] + and a + ld a, $0 + ld [$d563], a + jp nz, Func_20977 + jp Func_209eb +.asm_20858 + scf + ret + +Func_2085a: ; 0x2085a + ld bc, $0007 + ld de, $5000 + call Func_3538 + ld a, [$d551] + and a + jr nz, .asm_20885 + ld a, [$d532] + and a + jr z, .asm_20885 + xor a + ld [$d532], a + ld [$d539], a + ld a, [$d562] + and a + ld a, $0 + ld [$d562], a + jp nz, Func_20977 + jp Func_209eb +.asm_20885 + scf + ret + +Func_20887: ; 0x20887 + ld a, [$d551] + and a + jr nz, .asm_208a6 + ld a, [$d537] + and a + jr z, .asm_208a6 + xor a + ld [$d537], a + ld a, [$d561] + and a + ld a, $0 + ld [$d561], a + jp nz, Func_20977 + jp Func_209eb +.asm_208a6 + scf + ret + +Func_208a8: ; 0x208a8 + ld a, [$d551] + and a + jr nz, .asm_208c7 + ld a, [$d53c] + and a + jr z, .asm_208c7 + xor a + ld [$d53c], a + ld a, [$d55d] + and a + ld a, $0 + ld [$d55d], a + jp nz, Func_20977 + jp Func_209eb +.asm_208c7 + scf + ret + +Func_208c9: ; 0x208c9 + ld a, [$d551] + and a + jr nz, .asm_208e8 + ld a, [$d53d] + and a + jr z, .asm_208e8 + xor a + ld [$d53d], a + ld a, [$d55e] + and a + ld a, $0 + ld [$d55e], a + jp nz, Func_20977 + jp Func_209eb +.asm_208e8 + scf + ret + +Func_208ea: ; 0x208ea + ld a, [$d551] + and a + jr nz, .asm_20909 + ld a, [$d53a] + and a + jr z, .asm_20909 + xor a + ld [$d53a], a + ld a, [$d55f] + and a + ld a, $0 + ld [$d55f], a + jp nz, Func_20977 + jp Func_209eb +.asm_20909 + scf + ret + +Func_2090b: ; 0x2090b + ld a, [$d551] + and a + jr nz, .asm_2092a + ld a, [$d53b] + and a + jr z, .asm_2092a + xor a + ld [$d53b], a + ld a, [$d560] + and a + ld a, $0 + ld [$d560], a + jp nz, Func_20977 + jp Func_209eb +.asm_2092a + scf + ret + +Func_2092c: ; 0x2092c + ld a, [$d551] + and a + jr nz, .asm_2094b + ld a, [$d535] + and a + jr z, .asm_2094b + xor a + ld [$d535], a + ld a, [$d565] + and a + ld a, $0 + ld [$d565], a + jp nz, Func_20977 + jp Func_209eb +.asm_2094b + scf + ret + +Func_2094d: ; 0x2094d + ld bc, $0000 + ld de, $1500 + call Func_3538 + ld a, [$d551] + and a + jr nz, .asm_20975 + ld a, [$d536] + and a + jr z, .asm_20975 + xor a + ld [$d536], a + ld a, [$d564] + and a + ld a, $0 + ld [$d564], a + jp nz, Func_20977 + jp Func_209eb +.asm_20975 + scf + ret + +Func_20977: ; 0x20977 + ld de, $0746 + call PlaySoundEffect + call Func_20af5 + ld a, [$d553] + ld [hl], a + ld [$d551], a + ld a, [$d531] + ld [$d558], a + ld a, [$d532] + ld [$d559], a + xor a + ld [$d531], a + ld [$d532], a + ld [$d539], a + ld a, [wCurrentStage] + bit 0, a + ld [$ff8a], a + ld a, Bank(Func_14135) + ld hl, Func_14135 + call nz, BankSwitch + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_209bf + ld a, $37 + ld hl, $5188 + ld de, $0070 + ld bc, $0010 + call Func_7dc +.asm_209bf + ld bc, $34dc + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + call Func_30e8 + call Func_30db + ld a, [$d553] + dec a + ld c, a + ld b, $0 + sla c + ld hl, $2bf0 + add hl, bc + ld a, [hli] + ld e, a + ld a, [hl] + ld d, a + ld hl, $d5cc + call Func_32aa + scf + ret + +Func_209eb: ; 0x209eb + ld de, $0747 + call PlaySoundEffect + ld a, $1 + ld [$d551], a + ld a, $80 + ld [$d52f], a + ld [$d530], a + ld a, [$d531] + ld [$d558], a + ld a, [$d532] + ld [$d559], a + xor a + ld [$d531], a + ld [$d532], a + ld [$d539], a + ld a, [wCurrentStage] + bit 0, a + ld [$ff8a], a + ld a, Bank(Func_14135) + ld hl, Func_14135 + call nz, BankSwitch + ld a, $58 + ld [$d556], a + ld a, $2 + ld [$d557], a + ld bc, $34dc + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + call Func_30e8 + call Func_30db + ld hl, $d5cc + ld a, [$d553] + cp $7 + ld de, $2b7b + jr z, .asm_20a50 + ld de, $2b93 +.asm_20a50 + call Func_32aa + scf + ret + +Func_20a55: ; 0x20a55 + ld a, [$d551] + and a + jr z, .asm_20a63 + ld a, [$d530] + and a + jr z, .asm_20a63 + jr asm_20a9f +.asm_20a63 + scf + ret + +Func_20a65: ; 0x20a65 + ld a, [$d551] + and a + jr z, .asm_20a80 + ld a, [$d530] + and a + jr z, .asm_20a80 + ld bc, $34d0 + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + jr asm_20a9f +.asm_20a80 + scf + ret + +Func_20a82: ; 0x20a82 + ld a, [$d551] + and a + jr z, .asm_20a9d + ld a, [$d52f] + and a + jr z, .asm_20a9d + ld bc, $34d0 + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + jr asm_20a9f +.asm_20a9d + scf + ret +asm_20a9f: + xor a + ld [$d52f], a + ld [$d530], a + ld [$d551], a + ld a, [$d558] + ld [$d531], a + ld a, [$d559] + ld [$d532], a + ld [$d539], a + ld a, [$d4ac] + bit 0, a + ld [$ff8a], a + ld a, Bank(Func_14135) + ld hl, Func_14135 + call nz, BankSwitch + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_20ada + ld a, $37 + ld hl, $4af0 + ld de, $0070 + ld bc, $0008 + call Func_7dc +.asm_20ada + call Func_30e8 + call Func_30db + ld a, [$d553] + cp $7 + ld de, $2ba9 + jr z, .asm_20aed + ld de, $2bc2 +.asm_20aed + ld hl, $d5cc + call Func_32aa + scf + ret + +Func_20af5: ; 0x20af5 + ld a, $11 + call Func_a21 + ld c, a + ld b, $0 + ld hl, $d566 + add hl, bc + ret + +Func_20b02: ; 0x20b02 + ld a, [$d552] + cp $ff + jr nz, .asm_20b0c + ld a, [wCurrentMon] +.asm_20b0c + ld c, a + ld b, $0 + sla c + rl b + add c + ld c, a + jr nc, .asm_20b18 + inc b +.asm_20b18 + push bc + ld hl, $6b50 + add hl, bc + ld a, $4 + call Func_68f + inc hl + ld c, a + ld a, $4 + call Func_68f + inc hl + ld b, a + ld a, $4 + call Func_68f + ld h, b + ld l, c + ld de, $8900 + ld bc, $0180 + call Func_735 + pop bc + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_20b80 + push bc + ld hl, $6d15 + add hl, bc + ld a, $4 + call Func_68f + inc hl + ld e, a + ld a, $4 + call Func_68f + inc hl + ld d, a + ld a, $4 + call Func_68f + ld hl, $9887 + call Func_86f + pop bc + ld hl, $6eda + add hl, bc + ld a, $4 + call Func_68f + inc hl + ld e, a + ld a, $4 + call Func_68f + inc hl + ld d, a + ld a, $4 + call Func_68f + ld bc, $10b0 + ld hl, $ff68 + call Func_8e1 +.asm_20b80 + ld [$ff8a], a + ld a, Bank(Func_10e0a) + ld hl, Func_10e0a + call BankSwitch + call Func_3475 + ld de, $0000 + call Func_490 + rst $10 + ld de, $2d26 + call PlaySoundEffect + ld [$ff8a], a + ld a, Bank(Func_10825) + ld hl, Func_10825 + call BankSwitch + call Func_3475 + ld a, $1 + ld [$d54d], a + scf + ret + +Func_20bae: ; 0x20bae + ld a, [$d54c] + cp $4 + jp z, Func_20e34 + cp $1 + jp z, Func_21089 + cp $e + jp z, Func_20e5e + cp $f + jp z, Func_20e82 + cp $7 + jp z, Func_20ea6 + cp $8 + jp z, Func_20ec7 + cp $9 + jp z, Func_20ee8 + cp $a + jp z, Func_20f09 + cp $b + jp z, Func_20f2a + cp $c + jp z, Func_20f4b + cp $d + jp z, Func_2112a + cp $2 + jp z, Func_2105c + cp $0 + jr z, .asm_20bf3 + scf + ret +.asm_20bf3 + call Func_20da0 + ld a, [$d54d] + call CallInFollowingTable +PointerTable_20bfc: ; 0x20bfc + dw Func_20c08 + db Bank(Func_20c08), $00 + + dw Func_20d30 + db Bank(Func_20d30), $00 + + dw Func_20d7c + db Bank(Func_20d7c), $00 + +Func_20c08: ; 0x20c08 + ld a, [wCurrentStage] + ld b, a + ld a, [$d578] + and a + ret z + dec a + bit 0, b + jr z, .asm_20c18 + add $c +.asm_20c18 + ld c, a + ld b, $0 + ld hl, $d566 + add hl, bc + ld a, [hl] + and a + ret z + xor a + ld [hl], a + ld [$d551], a + call Func_20c76 + ld a, [$d558] + ld [$d52f], a + ld a, [$d559] + ld [$d532], a + ld a, [wCurrentStage] + bit 0, a + ld [$ff8a], a + ld a, Bank(Func_1c2cb) + ld hl, Func_1c2cb + call nz, BankSwitch + ld bc, $34e8 + ld [$ff8a], a + ld a, $2 + ld hl, $4588 +.asm_20c4f + call BankSwitch + call Func_30e8 + call Func_30db + ld de, $2bd8 + ld hl, $d5cc + call Func_32aa + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_20c74 + ld a, $37 + ld hl, $4bf0 + ld de, $0070 + ld bc, $0008 + call Func_7dc +.asm_20c74 + scf + ret + +Func_20c76: ; 0x20c76 + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_20ca6 + ld a, [$d553] + dec a + ld c, a + ld b, $0 + swap c + sla c + ld hl, $4e80 + add hl, bc + ld a, [$d554] + ld c, a + ld b, $0 + swap c + sla c + push hl + ld hl, $8ae0 + add hl, bc + ld d, h + ld e, l + pop hl + ld bc, $0020 + ld a, $36 + call LoadVRAMData +.asm_20ca6 + ld a, [$d554] + inc a + ld [$d554], a + cp $1 + jr nz, .asm_20cb8 + ld de, $0728 + call PlaySoundEffect + ret +.asm_20cb8 + cp $2 + jr nz, .asm_20cc3 + ld de, $0744 + call PlaySoundEffect + ret +.asm_20cc3 + cp $3 + ret nz + ld de, $0745 + call PlaySoundEffect + ld a, $1 + ld [$d604], a + ld a, $80 + ld [$d533], a + xor a + ld [$d538], a + ld [$d531], a + ld [$d532], a + ld [$d537], a + ld [$d53c], a + ld [$d53d], a + ld [$d53a], a + ld [$d53b], a + ld [$d539], a + ld [$d535], a + ld [$d536], a + ld [$d558], a + ld [$d559], a + ld a, [wCurrentStage] + bit 0, a + ret z + ld a, $36 + ld hl, $6c60 + ld de, $8200 + ld bc, $00e0 + call LoadVRAMData + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_20d25 + ld a, $37 + ld hl, $4bf8 + ld de, $0078 + ld bc, $0008 + call Func_7dc +.asm_20d25 + ld [$ff8a], a + ld a, Bank(Func_1e8f6) + ld hl, Func_1e8f6 + call BankSwitch + ret + +Func_20d30: ; 0x20d30 + ld [$ff8a], a + ld a, Bank(Func_dc00) + ld hl, Func_dc00 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10ca5) + ld hl, Func_10ca5 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10ac8) + ld hl, Func_10ac8 + call BankSwitch + ld de, $0001 + call Func_490 + ld hl, $d629 + call Func_e4a + ld [$ff8a], a + ld a, Bank(Func_1077c) + ld hl, Func_1077c + call BankSwitch + ld a, [$d624] + cp $3 + ret z + add $2 + cp $3 + jr c, .asm_20d72 + ld a, $3 +.asm_20d72 + ld [$d625], a + ld a, $80 + ld [$d626], a + scf + ret + +Func_20d7c: ; 0x20d7c + ld a, [$d5ca] + and a + ret nz + call Func_30e8 + ld [$ff8a], a + ld a, Bank(Func_dc00) + ld hl, Func_dc00 + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_10ac8) + ld hl, Func_10ac8 + call BankSwitch + ld de, $0001 + call Func_490 + scf + ret + +Func_20da0: ; 0x20da0 + ld hl, $d556 + ld a, [hli] + ld c, a + ld b, [hl] + or b + jr z, .asm_20db3 + dec bc + ld a, b + ld [hld], a + ld [hl], c + or c + jr nz, .asm_20db3 + call Func_21079 +.asm_20db3 + ld [$ff8a], a + ld a, Bank(Func_107f8) + ld hl, Func_107f8 + call BankSwitch + ld a, [$d57e] + and a + ret z + xor a + ld [$d57e], a + ld a, $2 + ld [$d54d], a + xor a + ld [$d604], a + ld hl, $d52f + ld [$d533], a + ld [$d538], a + ld [$d531], a + ld [$d532], a + ld [$d537], a + ld [$d53c], a + ld [$d53d], a + ld [$d53a], a + ld [$d53b], a + ld [$d539], a + ld [$d535], a + ld [$d536], a + ld [$d558], a + ld [$d559], a + ld [$d551], a + ld a, [wCurrentStage] + bit 0, a + jr z, .asm_20e1a + ld [$ff8a], a + ld a, Bank(Func_1c2cb) + ld hl, Func_1c2cb + call BankSwitch + ld [$ff8a], a + ld a, Bank(Func_1e8f6) + ld hl, Func_1e8f6 + call BankSwitch +.asm_20e1a + ld [$ff8a], a + ld a, Bank(Func_86d2) + ld hl, Func_86d2 + call BankSwitch + call Func_30e8 + call Func_30db + ld hl, $d5cc + ld de, $2ad1 + call Func_32aa + ret + +Func_20e34: ; 0x20e34 + ld bc, $0001 + ld de, $5000 + call Func_3538 + ld a, [$d551] + and a + jr nz, .asm_20e5c + ld a, [$d538] + and a + jr z, .asm_20e5c + xor a + ld [$d538], a + ld a, [$d55c] + and a + ld a, $0 + ld [$d55c], a + jp nz, Func_20f75 + jp Func_20fef +.asm_20e5c + scf + ret + +Func_20e5e: ; 0x20e5e + ld a, [$d551] + and a + jr nz, .asm_20e80 + ld a, [$d532] + and a + jr z, .asm_20e80 + xor a + ld [$d532], a + ld [$d539], a + ld a, [$d562] + and a + ld a, $0 + ld [$d562], a + jp nz, Func_20f75 + jp Func_20fef +.asm_20e80 + scf + ret + +Func_20e82: ; 0x20e82 + ld a, [$d551] + and a + jr nz, .asm_20ea4 + ld a, [$d537] + and a + jr z, .asm_20ea4 + xor a + ld [$d537], a + ld [$d531], a + ld a, [$d561] + and a + ld a, $0 + ld [$d561], a + jp nz, Func_20f75 + jp Func_20fef +.asm_20ea4 + scf + ret + +Func_20ea6: ; 0x20ea6 + ld a, [$d551] + and a + jr nz, .asm_20ec5 + ld a, [$d53c] + and a + jr z, .asm_20ec5 + xor a + ld [$d53c], a + ld a, [$d55d] + and a + ld a, $0 + ld [$d55d], a + jp nz, Func_20f75 + jp Func_20fef +.asm_20ec5 + scf + ret + +Func_20ec7: ; 0x20ec7 + ld a, [$d551] + and a + jr nz, .asm_20ee6 + ld a, [$d53d] + and a + jr z, .asm_20ee6 + xor a + ld [$d53d], a + ld a, [$d55e] + and a + ld a, $0 + ld [$d55e], a + jp nz, Func_20f75 + jp Func_20fef +.asm_20ee6 + scf + ret + +Func_20ee8: ; 0x20ee8 + ld a, [$d551] + and a + jr nz, .asm_20f07 + ld a, [$d53a] + and a + jr z, .asm_20f07 + xor a + ld [$d53a], a + ld a, [$d55f] + and a + ld a, $0 + ld [$d55f], a + jp nz, Func_20f75 + jp Func_20fef +.asm_20f07 + scf + ret + +Func_20f09: ; 0x20f09 + ld a, [$d551] + and a + jr nz, .asm_20f28 + ld a, [$d53b] + and a + jr z, .asm_20f28 + xor a + ld [$d53b], a + ld a, [$d560] + and a + ld a, $0 + ld [$d560], a + jp nz, Func_20f75 + jp Func_20fef +.asm_20f28 + scf + ret + +Func_20f2a: ; 0x20f2a + ld a, [$d551] + and a + jr nz, .asm_20f49 + ld a, [$d535] + and a + jr z, .asm_20f49 + xor a + ld [$d535], a + ld a, [$d565] + and a + ld a, $0 + ld [$d565], a + jp nz, Func_20f75 + jp Func_20fef +.asm_20f49 + scf + ret + +Func_20f4b: ; 0x20f4b + ld bc, $0000 + ld de, $1500 + call Func_3538 + ld a, [$d551] + and a + jr nz, .asm_20f73 + ld a, [$d536] + and a + jr z, .asm_20f73 + xor a + ld [$d536], a + ld a, [$d564] + and a + ld a, $0 + ld [$d564], a + jp nz, Func_20f75 + jp Func_20fef +.asm_20f73 + scf + ret + +Func_20f75: ; 0x20f75 + ld de, $0746 + call PlaySoundEffect + call Func_2111d + ld a, [$d553] + ld [hl], a + ld [$d551], a + ld a, [$d52f] + ld [$d558], a + ld a, [$d532] + ld [$d559], a + ld a, [$d531] + ld [$d63f], a + xor a + ld [$d52f], a + ld [$d531], a + ld [$d532], a + ld a, [wCurrentStage] + bit 0, a + ld [$ff8a], a + ld a, Bank(Func_1c2cb) + ld hl, Func_1c2cb + call nz, BankSwitch + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_20fc3 + ld a, $37 + ld hl, $5188 + ld de, $0070 + ld bc, $0010 + call Func_7dc +.asm_20fc3 + ld bc, $34dc + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + call Func_30e8 + call Func_30db + ld a, [$d553] + dec a + ld c, a + ld b, $0 + sla c + ld hl, $2bf0 + add hl, bc + ld a, [hli] + ld e, a + ld a, [hl] + ld d, a + ld hl, $d5cc + call Func_32aa + scf + ret + +Func_20fef: ; 0x20fef + ld de, $0747 + call PlaySoundEffect + ld a, $1 + ld [$d551], a + ld a, [$d52f] + ld [$d558], a + ld a, $80 + ld [$d52f], a + ld [$d530], a + ld a, [$d532] + ld [$d559], a + ld a, [$d531] + ld [$d63f], a + xor a + ld [$d531], a + ld [$d532], a + ld a, [wCurrentStage] + bit 0, a + ld [$ff8a], a + ld a, Bank(Func_1c2cb) + ld hl, Func_1c2cb + call nz, BankSwitch + ld a, $58 + ld [$d556], a + ld a, $2 + ld [$d557], a + ld bc, $34dc + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + call Func_30e8 + call Func_30db + ld hl, $d5cc + ld a, [$d553] + cp $7 + ld de, $2b7b + jr z, .asm_21057 + ld de, $2b93 +.asm_21057 + call Func_32aa + scf + ret + +Func_2105c: ; 0x2105c + ld a, [$d551] + and a + jr z, .asm_21077 + ld a, [$d530] + and a + jr z, .asm_21077 + ld bc, $34d0 + ld [$ff8a], a + ld a, $2 + ld hl, $4588 + call BankSwitch + jr asm_210c7 +.asm_21077 + scf + ret + +Func_21079: ; 0x21079 + ld a, [$d551] + and a + jr z, .asm_21087 + ld a, [$d530] + and a + jr z, .asm_21087 + jr asm_210c7 +.asm_21087 + scf + ret + +Func_21089: ; 0x21089 + ld a, [$d551] + and a + jr nz, .asm_210aa + ld a, [$d52f] + and a + jr z, .asm_210a8 + xor a + ld [$d52f], a + ld a, [$d563] + and a + ld a, $0 + ld [$d563], a + jp nz, Func_20f75 + jp Func_20fef +.asm_210a8 + scf + ret +.asm_210aa + ld a, [$d551] + and a + jr z, .asm_210c5 + ld a, [$d52f] + and a + jr z, .asm_210c5 + ld bc, $34d0 + ld [$ff8a], a + ld a, Bank(Func_8588) + ld hl, Func_8588 + call BankSwitch + jr asm_210c7 +.asm_210c5 + scf + ret +asm_210c7: + xor a + ld [$d530], a + ld [$d551], a + ld a, [$d558] + ld [$d52f], a + ld a, [$d559] + ld [$d532], a + ld a, [$d63f] + ld [$d531], a + ld a, [wCurrentStage] + bit 0, a + ld [$ff8a], a + ld a, Bank(Func_1c2cb) + ld hl, Func_1c2cb + call nz, BankSwitch + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_21102 + ld a, $37 + ld hl, $4bf0 + ld de, $0070 + ld bc, $0008 + call Func_7dc +.asm_21102 + call Func_30e8 + call Func_30db + ld a, [$d553] + cp $7 + ld de, $2ba9 + jr z, .asm_21115 + ld de, $2bc2 +.asm_21115 + ld hl, $d5cc + call Func_32aa + scf + ret + +Func_2111d: ; 0x2111d + ld a, $11 + call Func_a21 + ld c, a + ld b, $0 + ld hl, $d566 + add hl, bc + ret + +Func_2112a: ; 0x2112a + ld a, [$d552] + cp $ff + jr nz, .asm_21134 + ld a, [wCurrentMon] +.asm_21134 + ld c, a + ld b, $0 + sla c + rl b + add c + ld c, a + jr nc, .asm_21140 + inc b +.asm_21140 + push bc + ld hl, $6b50 + add hl, bc + ld a, $4 + call Func_68f + inc hl + ld c, a + ld a, $4 + call Func_68f + inc hl + ld b, a + ld a, $4 + call Func_68f + ld h, b + ld l, c + ld de, $8900 + ld bc, $0180 + call Func_735 + pop bc + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_211a8 + push bc + ld hl, $6d15 + add hl, bc + ld a, $4 + call Func_68f + inc hl + ld e, a + ld a, $4 + call Func_68f + inc hl + ld d, a + ld a, $4 + call Func_68f + ld hl, $9887 + call Func_86f + pop bc + ld hl, $6eda + add hl, bc + ld a, $4 + call Func_68f + inc hl + ld e, a + ld a, $4 + call Func_68f + inc hl + ld d, a + ld a, $4 + call Func_68f + ld bc, $10b0 + ld hl, $ff68 + call Func_8e1 +.asm_211a8 + ld [$ff8a], a + ld a, Bank(Func_10e0a) + ld hl, Func_10e0a + call BankSwitch + call Func_3475 + ld de, $0000 + call Func_490 + rst $10 + ld de, $2d26 + call PlaySoundEffect + ld [$ff8a], a + ld a, Bank(Func_10825) + ld hl, Func_10825 + call BankSwitch + call Func_3475 + ld a, $1 + ld [$d54d], a + scf + ret + +INCBIN "baserom.gbc",$211d6,$24000 - $211d6 SECTION "bank9", ROMX, BANK[$9] @@ -83,7 +83,13 @@ wTimerMinutes:: ; 0xd57b wTimerFrames:: ; 0xd57c ds 1 - ds $224 + ds $43 + +wNumMonHits:: ; 0xd5c0 +; Number of times the wild pokemon has been hit in Catch'em mode + ds 1 + + ds $1e0 wLeftTiltCounter:: ; 0xd7a1 ; Counts up to 3 and back down to time the left tilt animation |