summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2015-03-28 20:02:27 -0700
committerMarcus Huderle <huderlem@gmail.com>2015-03-28 20:02:27 -0700
commit4bf3f337185b270dd5ceb705392ba7f0a0e58d37 (patch)
treea1ec2575420a5a93145901d7af1d94fb20cdc24a
parentd48cf75fb50249930d4140402deb27f443dded92 (diff)
Dump more stage routines.
-rwxr-xr-xmain.asm1383
1 files changed, 1342 insertions, 41 deletions
diff --git a/main.asm b/main.asm
index be2b57e..24c5c84 100755
--- a/main.asm
+++ b/main.asm
@@ -4631,68 +4631,187 @@ Func_272f: ; 0x272f
call CallInFollowingTable
CallTable_2735: ; 0x2735
; STAGE_RED_FIELD_TOP
- dw $43E1
- db $05, $00
+ dw Func_143e1
+ db Bank(Func_143e1), $00
; STAGE_RED_FIELD_BOTTOM
- dw $43F9
- db $05, $00
+ dw Func_143f9
+ db Bank(Func_143f9), $00
- dw $4061
- db $06, $00
+ dw Func_18061
+ db Bank(Func_18061), $00
- dw $4062
- db $06, $00
+ dw Func_18062
+ db Bank(Func_18062), $00
; STAGE_BLUE_FIELD_TOP
- dw $4520
- db $07, $00
+ dw Func_1c520
+ db Bank(Func_1c520), $00
; STAGE_BLUE_FIELD_BOTTOM
- dw $4536
- db $07, $00
+ dw Func_1c536
+ db Bank(Func_1c536), $00
; STAGE_GENGAR_BONUS
- dw $41B1
- db $06, $00
+ dw Func_181b1
+ db Bank(Func_181b1), $00
; STAGE_GENGAR_BONUS
- dw $41B1
- db $06, $00
+ dw Func_181b1
+ db Bank(Func_181b1), $00
; STAGE_MEWTWO_BONUS
- dw $5330
- db $06, $00
+ dw Func_19330
+ db Bank(Func_19330), $00
; STAGE_MEWTWO_BONUS
- dw $5330
- db $06, $00
+ dw Func_19330
+ db Bank(Func_19330), $00
; STAGE_MEOWTH_BONUS
- dw $414D
- db $09, $00
+ dw Func_2414d
+ db Bank(Func_2414d), $00
; STAGE_MEOWTH_BONUS
- dw $414D
- db $09, $00
+ dw Func_2414d
+ db Bank(Func_2414d), $00
; STAGE_DIGLETT_BONUS
- dw $5AB3
- db $06, $00
+ dw Func_19ab3
+ db Bank(Func_19ab3), $00
; STAGE_DIGLETT_BONUS
- dw $5AB3
- db $06, $00
+ dw Func_19ab3
+ db Bank(Func_19ab3), $00
; STAGE_SEEL_BONUS
- dw $5BBC
- db $09, $00
+ dw Func_25bbc
+ db Bank(Func_25bbc), $00
; STAGE_SEEL_BONUS
- dw $5BBC
- db $09, $00
+ dw Func_25bbc
+ db Bank(Func_25bbc), $00
+
+Func_2775: ; 0x2775
+ ld a, [$d4ea]
+ inc a
+ jr nz, .asm_27a2
+ ld a, [bc]
+ bit 7, a
+ jr nz, .asm_27a2
+ push bc
+ push de
+ call nc, Func_27da
+ pop hl
+ call c, Func_27a4
+ ld a, [$d4ea]
+ ld b, a
+ pop hl
+ ld [hl], $0
+ jr nc, .asm_27a2
+ ld a, [$d4ec]
+ cp b
+ jr z, .asm_27a2
+ ld a, [$d4eb]
+ ld [hli], a
+ ld a, [$d4ea]
+ ld [hl], a
+ scf
+ ret
+.asm_27a2
+ and a
+ ret
+
+Func_27a4: ; 0x27a4
+ xor a
+ ld [$d4eb], a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld e, a
+ ld a, [$d4b4]
+ ld b, a
+ ld a, [$d4b6]
+ ld c, a
+.asm_27b4
+ ld a, [$d4eb]
+ inc a
+ ld [$d4eb], a
+ ld a, [hli]
+ ld [$d4ea], a
+ cp $ff
+ ret z
+ ld a, [hli]
+ sub b
+ bit 7, a
+ jr z, .asm_27ca
+ cpl
+ inc a
+.asm_27ca
+ cp d
+ ld a, [hli]
+ jr nc, .asm_27b4
+ sub c
+ bit 7, a
+ jr z, .asm_27d5
+ cpl
+ inc a
+.asm_27d5
+ cp e
+ jr nc, .asm_27b4
+ scf
+ ret
+
+Func_27da: ; 0x27da
+ ld a, [hli]
+ and a
+ jr z, .asm_27e8
+ dec hl
+ ld a, [$d4af]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld c, [hl]
+ add hl, bc
+.asm_27e8
+ ld a, [$d7e9]
+ and a
+ ret z
+ ld a, [$d7f5]
+ ld b, a
+ ld c, $ff
+.asm_27f3
+ inc c
+ ld a, [hli]
+ cp $ff
+ ret z
+ cp b
+ jr nz, .asm_27f3
+ scf
+ ret
-INCBIN "baserom.gbc",$2775,$281c - $2775
+Func_27fd: ; 0x27fd
+ ld a, [$d4b4]
+ ld b, a
+ ld a, [$d4b6]
+ ld c, a
+ ld d, $0
+.asm_2807
+ ld a, [hli]
+ and a
+ ret z
+ inc d
+ ld a, [hli]
+ sub b
+ cp $e8
+ ld a, [hli]
+ jr c, .asm_2807
+ sub c
+ cp $e8
+ jr c, .asm_2807
+ ld a, d
+ ld [$d578], a
+ ret
Func_281c: ; 0x281c
ld a, [wCurrentStage]
@@ -15705,7 +15824,159 @@ Func_1404a: ; 0x1404a
call Func_1764f
ret
-INCBIN "baserom.gbc",$14091,$1659c - $14091
+INCBIN "baserom.gbc",$14091,$143e1 - $14091
+
+Func_143e1: ; 0x143e1
+ call Func_14474
+ call Func_14498
+ call Func_144b6
+ call Func_144c0
+ call Func_144da
+ call Func_14439
+ call Func_144ac
+ jp Func_1441e
+
+Func_143f9: ; 0x143f9
+ ld a, [$d4b6]
+ cp $56
+ jr nc, .asm_14412
+ call Func_1444d
+ call Func_144cd
+ call Func_14467
+ call Func_1445a
+ call Func_14443
+ jp Func_1441e
+.asm_14412
+ call Func_14481
+ call Func_144e4
+ call Func_144a2
+ jp Func_1448e
+
+Func_1441e: ; 0x1441e
+ xor a
+ ld [$d578], a
+ ld a, [$d551]
+ and a
+ ret z
+ ld a, [wCurrentStage]
+ ld hl, $45d2 ; todo
+ ld c, a
+ ld b, $0
+ sla c
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp Func_27fd
+
+INCBIN "baserom.gbc",$14439,$14439 - $14439
+
+Func_14439: ; 0x14439
+ ld de, $45b5
+ ld bc, $d5fe
+ scf
+ jp Func_2775
+
+Func_14443: ; 0x14443
+ ld de, $45bb
+ ld bc, $d601
+ scf
+ jp Func_2775
+
+Func_1444d: ; 0x1444d
+ ld de, $45af
+ ld hl, $459d
+ ld bc, $d5c7
+ and a
+ jp Func_2775
+
+Func_1445a: ; 0x1445a
+ ld de, $45c9
+ ld hl, $45c1
+ ld bc, $d60a
+ and a
+ jp Func_2775
+
+Func_14467: ; 0x14467
+ ld de, $44f4
+ ld hl, $44ee
+ ld bc, $d4ed
+ and a
+ jp Func_2775
+
+Func_14474: ; 0x14474
+ ld de, $4515 ; todo
+ ld hl, $44fd ; todo
+ ld bc, $d4cb
+ and a
+ jp Func_2775
+
+Func_14481: ; 0x14481
+ ld de, $452d
+ ld hl, $4521
+ ld bc, $d4d8
+ and a
+ jp Func_2775
+
+Func_1448e: ; 0x1448e
+ ld de, $4536
+ ld bc, $d4dc
+ scf
+ jp Func_2775
+
+Func_14498: ; 0x14498
+ ld de, $453c ; todo
+ ld bc, $d507
+ scf
+ jp Func_2775
+
+Func_144a2: ; 0x144a2
+ ld de, $4542
+ ld bc, $d50d
+ scf
+ jp Func_2775
+
+Func_144ac: ; 0x144ac
+ ld de, $4551
+ ld bc, $d5f7
+ scf
+ jp Func_2775
+
+Func_144b6: ; 0x144b6
+ ld de, $455d ; todo
+ ld bc, $d51f
+ scf
+ jp Func_2775
+
+Func_144c0: ; 0x144c0
+ ld de, $457d ; todo
+ ld hl, $4578 ; todo
+ ld bc, $d500
+ and a
+ jp Func_2775
+
+Func_144cd: ; 0x144cd
+ ld de, $4588
+ ld hl, $4583
+ ld bc, $d500
+ and a
+ jp Func_2775
+
+INCBIN "baserom.gbc",$144da,$144da - $144da
+
+Func_144da: ; 0x144da
+ ld de, $458e
+ ld bc, $d4fb
+ scf
+ jp Func_2775
+
+Func_144e4: ; 0x144e4
+ ld de, $4594
+ ld bc, $d515
+ scf
+ jp Func_2775
+
+INCBIN "baserom.gbc",$144ee,$1659c - $144ee
.showNextMap
ld a, [$d4e1]
@@ -15966,7 +16237,19 @@ Func_1804a: ; 0x1804a
ld [wBallYPos + 1], a
ret
-INCBIN "baserom.gbc",$1805f,$18099 - $1805f
+INCBIN "baserom.gbc",$1805f,$18061 - $1805f
+
+Func_18061: ; 0x18061
+ ret
+
+Func_18062: ; 0x18062
+ ld [$ff8a], a
+ ld a, Bank(Func_1448e)
+ ld hl, Func_1448e
+ call BankSwitch
+ ret
+
+INCBIN "baserom.gbc",$1806d,$18099 - $1806d
InitGengarBonusStage: ; 0x18099
ld a, [$d7c1]
@@ -16065,7 +16348,244 @@ StartBallGengarBonusStage: ; 0x18157
ld [$d4c9], a
ret
-INCBIN "baserom.gbc",$1818b,$1924f - $1818b
+INCBIN "baserom.gbc",$1818b,$181b1 - $1818b
+
+Func_181b1: ; 0x181b1
+ call Func_181be
+ call Func_18259
+ call Func_182e4
+ call Func_18350
+ ret
+
+Func_181be: ; 0x181be
+ ld a, [$d659]
+ and a
+ ret z
+ ld a, [$d65f]
+ ld b, a
+ ld a, [$d661]
+ add $10
+ ld c, a
+ ld a, [$d65b]
+ call Func_1820d
+ ld a, $1
+ jr c, .asm_181fe
+ ld a, [$d668]
+ ld b, a
+ ld a, [$d66a]
+ add $10
+ ld c, a
+ ld a, [$d664]
+ call Func_1820d
+ ld a, $2
+ jr c, .asm_181fe
+ ld a, [$d671]
+ ld b, a
+ ld a, [$d673]
+ add $10
+ ld c, a
+ ld a, [$d66d]
+ call Func_1820d
+ ld a, $3
+ ret nc
+.asm_181fe
+ ld [$d4eb], a
+ ld [$d657], a
+ add $4
+ ld [$d4ea], a
+ ld [$d658], a
+ ret
+
+Func_1820d: ; 0x1820d
+ cp $4
+ jr z, .asm_18257
+ ld a, [$d4b4]
+ sub b
+ cp $20
+ jr nc, .asm_18257
+ ld b, a
+ ld a, [$d4b6]
+ sub c
+ cp $20
+ jr nc, .asm_18257
+ ld c, a
+ ld e, c
+ ld d, $0
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ ld l, b
+ ld h, $0
+ add hl, de
+ ld de, $5100
+ add hl, de
+ ld a, $3a
+ call Func_68f
+ bit 7, a
+ jr nz, .asm_18257
+ sla a
+ ld [$d7ea], a
+ ld a, $1
+ ld [$d7e9], a
+ scf
+ ret
+.asm_18257
+ and a
+ ret
+
+Func_18259: ; 0x18259
+ ld a, [$d67e]
+ and a
+ ret z
+ ld a, [$d684]
+ add $fe
+ ld b, a
+ ld a, [$d686]
+ add $c
+ ld c, a
+ ld a, [$d680]
+ call Func_18298
+ ld a, $1
+ jr c, .asm_18289
+ ld a, [$d68d]
+ add $fe
+ ld b, a
+ ld a, [$d68f]
+ add $c
+ ld c, a
+ ld a, [$d689]
+ call Func_18298
+ ld a, $2
+ ret nc
+.asm_18289
+ ld [$d4eb], a
+ ld [$d67c], a
+ add $7
+ ld [$d4ea], a
+ ld [$d67d], a
+ ret
+
+Func_18298: ; 0x18298
+ cp $5
+ jr z, .asm_182e2
+ ld a, [$d4b4]
+ sub b
+ cp $20
+ jr nc, .asm_182e2
+ ld b, a
+ ld a, [$d4b6]
+ sub c
+ cp $28
+ jr nc, .asm_182e2
+ ld c, a
+ ld e, c
+ ld d, $0
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ ld l, b
+ ld h, $0
+ add hl, de
+ ld de, $4c00
+ add hl, de
+ ld a, $3a
+ call Func_68f
+ bit 7, a
+ jr nz, .asm_182e2
+ sla a
+ ld [$d7ea], a
+ ld a, $1
+ ld [$d7e9], a
+ scf
+ ret
+.asm_182e2
+ and a
+ ret
+
+Func_182e4: ; 0x182e4
+ ld a, [$d698]
+ and a
+ ret z
+ ld a, [$d69e]
+ ld b, a
+ ld a, [$d6a0]
+ add $c
+ ld c, a
+ call Func_18308
+ ld a, $1
+ ret nc
+ ld [$d4eb], a
+ ld [$d696], a
+ add $9
+ ld [$d4ea], a
+ ld [$d697], a
+ ret
+
+Func_18308: ; 0x18308
+ ld a, [$d4b4]
+ sub b
+ cp $30
+ jr nc, .asm_1834e
+ ld b, a
+ ld a, [$d4b6]
+ sub c
+ cp $40
+ jr nc, .asm_1834e
+ ld c, a
+ ld a, c
+ sla a
+ add c
+ ld e, a
+ ld d, $0
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ ld l, b
+ ld h, $0
+ add hl, de
+ ld de, $4000
+ add hl, de
+ ld a, $3a
+ call Func_68f
+ bit 7, a
+ jr nz, .asm_1834e
+ sla a
+ ld [$d7ea], a
+ ld a, $1
+ ld [$d7e9], a
+ scf
+ ret
+.asm_1834e
+ and a
+ ret
+
+Func_18350: ; 0x18350
+ ld de, $4368 ; todo
+ ld hl, $435d ; todo
+ ld bc, $d654
+ and a
+ jp Func_2775
+
+INCBIN "baserom.gbc",$1835d,$1924f - $1835d
InitMewtwoBonusStage: ; 0x1924f
ld a, [$d7c1]
@@ -16143,7 +16663,197 @@ StartBallMewtwoBonusStage: ; 0x192e3
ld [$d4c9], a
ret
-INCBIN "baserom.gbc",$19310,$199f2 - $19310
+INCBIN "baserom.gbc",$19310,$19330 - $19310
+
+Func_19330: ; 0x19330
+ call Func_19414
+ call Func_19337
+ ret
+
+Func_19337: ; 0x19337
+ ld hl, $d6bb
+ ld bc, $0601
+.asm_1933d
+ push bc
+ push hl
+ ld a, [hli]
+ add $f8
+ ld b, a
+ ld a, [hld]
+ add $8
+ ld c, a
+ dec hl
+ dec hl
+ dec hl
+ ld a, [hl]
+ dec hl
+ dec hl
+ bit 0, [hl]
+ call nz, Func_1936f
+ pop hl
+ pop bc
+ ld a, c
+ jr c, .asm_19360
+ ld de, $0008
+ add hl, de
+ inc c
+ dec b
+ jr nz, .asm_1933d
+ ret
+.asm_19360
+ ld [$d4eb], a
+ ld [$d6b4], a
+ add $0
+ ld [$d4ea], a
+ ld [$d6b5], a
+ ret
+
+Func_1936f: ; 0x1936f
+ cp $b
+ jp z, Func_19412
+ ld a, [$d4b4]
+ sub b
+ cp $20
+ jp nc, Func_19412
+ ld b, a
+ ld a, [$d4b6]
+ sub c
+ cp $20
+ jp nc, Func_19412
+ ld c, a
+ ld e, a
+ ld d, $0
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ ld l, b
+ ld h, $0
+ add hl, de
+ sla l
+ rl h
+ sla l
+ rl h
+ ld de, $4000
+ add hl, de
+ ld de, wBallXVelocity
+ ld a, $39
+ call Func_68f
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, $39
+ call Func_68f
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ push bc
+ ld a, $39
+ call Func_68f
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, $39
+ call Func_68f
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_193ea
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_193ea
+ pop hl
+ bit 7, h
+ jr z, .asm_193f6
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_193f6
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ jr c, .asm_19410
+ ld a, [$d804]
+ and a
+ jr nz, .asm_19410
+ ld a, $5
+ ld [$d803], a
+ ld a, $8
+ ld [$d804], a
+.asm_19410
+ scf
+ ret
+
+Func_19412: ; 0x19312
+ and a
+ ret
+
+Func_19414: ; 0x19414
+ ld a, [$d4ea]
+ inc a
+ jr nz, .asm_1944f
+ ld a, [$d6aa]
+ bit 7, a
+ jr nz, .asm_1944f
+ ld a, [$d7e9]
+ and a
+ ret z
+ ld a, [$d7f5]
+ sub $10
+ ret c
+ cp $c
+ ret nc
+ ld a, $1
+ ld [$d4eb], a
+ add $6
+ ld [$d4ea], a
+ ld b, a
+ ld hl, $d6aa
+ ld [hl], $0
+ ld a, [$d4ec]
+ cp b
+ jr z, .asm_1944f
+ ld a, [$d4eb]
+ ld [hli], a
+ ld a, [$d4ea]
+ ld [hl], a
+ scf
+ ret
+.asm_1944f
+ and a
+ ret
+
+INCBIN "baserom.gbc",$19451,$199f2 - $19451
InitDiglettBonusStage: ; 0x199f2
ld a, [$d7c1]
@@ -16212,7 +16922,107 @@ StartBallDiglettBonusStage: ; 0x19a38
ld [$d765], a
ret
-INCBIN "baserom.gbc",$19a76,$1c000 - $19a76
+INCBIN "baserom.gbc",$19a76,$19ab3 - $19a76
+
+Func_19ab3: ; 0x19ab3
+ call Func_19aba
+ call Func_19b4b
+ ret
+
+Func_19aba: ; 0x19aba
+ ld a, [$d4ea]
+ inc a
+ jr nz, .asm_19b16
+ ld a, [$d73b]
+ bit 7, a
+ jr nz, .asm_19b16
+ ld a, [$d7e9]
+ and a
+ ret z
+ ld a, [$d7f5]
+ sub $19
+ ret c
+ cp $33
+ ret nc
+ ld c, a
+ ld b, $0
+ ld hl, $5b18 ; todo
+ add hl, bc
+ ld a, [hl]
+ cp $a
+ jr nc, .asm_19aed
+ ld a, [$d4b4]
+ cp $48
+ ld a, $11
+ jr nc, .asm_19af7
+ xor a
+ jr .asm_19af7
+.asm_19aed
+ ld a, [$d4b4]
+ cp $68
+ ld a, $11
+ jr nc, .asm_19af7
+ xor a
+.asm_19af7
+ add [hl]
+ ld [$d4eb], a
+ add $0
+ ld [$d4ea], a
+ ld b, a
+ ld hl, $d73b
+ ld [hl], $0
+ ld a, [$d4ec]
+ cp b
+ jr z, .asm_19b16
+ ld a, [$d4eb]
+ ld [hli], a
+ ld a, [$d4ea]
+ ld [hl], a
+ scf
+ ret
+.asm_19b16
+ and a
+ ret
+
+INCBIN "baserom.gbc",$19b18,$19b4b - $19b18
+
+Func_19b4b: ; 0x19b4b
+ ld a, [$d4ea]
+ inc a
+ jr nz, .asm_19b86
+ ld a, [$d75f]
+ bit 7, a
+ jr nz, .asm_19b86
+ ld a, [$d7e9]
+ and a
+ ret z
+ ld a, [$d7f5]
+ sub $14
+ ret c
+ cp $5
+ ret nc
+ ld a, $1
+ ld [$d4eb], a
+ add $1f
+ ld [$d4ea], a
+ ld b, a
+ ld hl, $d75f
+ ld [hl], $0
+ ld a, [$d4ec]
+ cp b
+ jr z, .asm_19b86
+ ld a, [$d4eb]
+ ld [hli], a
+ ld a, [$d4ea]
+ ld [hl], a
+ scf
+ ret
+.asm_19b86
+ and a
+ ret
+
+INCBIN "baserom.gbc",$19b88,$1c000 - $19b88
+
SECTION "bank7", ROMX, BANK[$7]
@@ -16369,7 +17179,140 @@ Func_1c129: ; 0x1c129
call Func_490
ret
-INCBIN "baserom.gbc",$1c165,$1c7c7 - $1c165
+INCBIN "baserom.gbc",$1c165,$1c520 - $1c165
+
+Func_1c520: ; 0x1c520
+ call Func_1c55a ; shellders
+ call Func_1c567 ; spinner
+ call Func_1c57e
+ call Func_1c592
+ call Func_1c588
+ call Func_1c5c0
+ call Func_1c5eb
+ ret
+
+Func_1c536: ; 0x1c536
+ ld a, [$d4b6]
+ cp $56
+ jr nc, .asm_1c54d
+ call Func_1c5de
+ call Func_1c5b3
+ call Func_1c5a6
+ call Func_1c5d4
+ call Func_1c5eb
+ ret
+.asm_1c54d
+ call Func_1c571
+ call Func_1c59c
+ call Func_1c5ca
+ call Func_1c607
+ ret
+
+Func_1c55a: ; 0x1c55a
+ ld de, $4644
+ ld hl, $462e
+ ld bc, $d4cb
+ and a
+ jp Func_2775
+
+Func_1c567: ; 0x1c567
+ ld de, $4650
+ ld bc, $d507
+ scf
+ jp Func_2775
+
+Func_1c571: ; 0x1c571
+ ld de, $4625
+ ld hl, $4611
+ ld bc, $d4d8
+ and a
+ jp Func_2775
+
+Func_1c57e: ; 0x1c57e
+ ld de, $4656
+ ld bc, $d51f
+ scf
+ jp Func_2775
+
+Func_1c588: ; 0x1c588
+ ld de, $4665
+ ld bc, $d635
+ scf
+ jp Func_2775
+
+Func_1c592: ; 0x1c592
+ ld de, $466b
+ ld bc, $d630
+ scf
+ jp Func_2775
+
+Func_1c59c: ; 0x1c59c
+ ld de, $4671
+ ld bc, $d515
+ scf
+ jp Func_2775
+
+Func_1c5a6: ; 0x1c5a6
+ ld de, $4686
+ ld hl, $467a
+ ld bc, $d60a
+ and a
+ jp Func_2775
+
+Func_1c5b3: ; 0x1c5b3
+ ld de, $4695
+ ld hl, $468f
+ ld bc, $d4ed
+ and a
+ jp Func_2775
+
+Func_1c5c0: ; 0x1c5c0
+ ld de, $469e
+ ld bc, $d5f7
+ scf
+ jp Func_2775
+
+Func_1c5ca: ; 0x1c5ca
+ ld de, $46aa
+ ld bc, $d50d
+ scf
+ jp Func_2775
+
+Func_1c5d4: ; 0x1c5d4
+ ld de, $46b9
+ ld bc, $d601
+ scf
+ jp Func_2775
+
+Func_1c5de: ; 0x1c5de
+ ld de, $46d1
+ ld hl, $46bf
+ ld bc, $d5c7
+ and a
+ jp Func_2775
+
+Func_1c5eb: ; 0x1c5eb
+ xor a
+ ld [$d578], a
+ ld a, [$d551]
+ and a
+ ret z
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr nz, .asm_1c601
+ ld hl, $46d7 ; todo
+ jp Func_27fd
+.asm_1c601
+ ld hl, $46fc ; todo
+ jp Func_27fd
+
+Func_1c607: ; 0x1c607
+ ld de, $470f
+ ld bc, $d4dc
+ scf
+ jp Func_2775
+
+INCBIN "baserom.gbc",$1c611,$1c7c7 - $1c611
Func_1c7c7: ; 0x1c7c7
ld a, $0
@@ -16611,7 +17554,273 @@ StartBallMeowthBonusStage: ; 0x24059
ld [$d4c9], a
ret
-INCBIN "baserom.gbc",$24128,$25a7c - $24128
+INCBIN "baserom.gbc",$24128,$2414d - $24128
+
+Func_2414d: ; 0x2414d
+ call Func_24157
+ call Func_24214
+ call Func_242bb
+ ret
+
+Func_24157: ; 0x24157
+ ld a, [$d6e7]
+ cp $0
+ ret nz
+ ld a, [$d6ed]
+ add $f7
+ ld b, a
+ ld a, [$d6ee]
+ add $6
+ ld c, a
+ call Func_24170
+ ld a, $3
+ ret nc
+ ret
+
+Func_24170: ; 0x24170
+ ld a, [$d4b4]
+ sub b
+ cp $30
+ jp nc, .asm_24212
+ ld b, a
+ ld a, [$d4b6]
+ sub c
+ cp $28
+ jp nc, .asm_24212
+ ld c, a
+ ld e, c
+ ld d, $0
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ ld h, d
+ ld l, e
+ sla e
+ rl d
+ add hl, de
+ ld d, h
+ ld e, l
+ sla e
+ rl d
+ ld l, b
+ ld h, $0
+ add hl, de
+ ld de, $5500
+ add hl, de
+ ld a, $3a
+ call Func_68f
+ bit 7, a
+ jr nz, .asm_24212
+ sla a
+ ld [$d7ea], a
+ ld a, $1
+ ld [$d7e9], a
+ ld a, [$d6ec]
+ cp $2
+ ret z
+ cp $3
+ ret z
+ ld a, [$d713]
+ and a
+ ret nz
+ ld a, [$d6f1]
+ and a
+ jr z, .asm_241ed
+ ld a, [$d6f1]
+ cp $1
+ jr nz, .asm_241df
+ ld a, [$d70b]
+ cp $3
+ jr z, .asm_241eb
+ jr .asm_241e6
+.asm_241df
+ ld a, [$d70c]
+ cp $3
+ jr z, .asm_241eb
+.asm_241e6
+ ld a, $2
+ ld [$d6e7], a
+.asm_241eb
+ scf
+ ret
+.asm_241ed
+ ld a, [$d6ee]
+ cp $20
+ jr nz, .asm_241fd
+ ld a, [$d70b]
+ cp $3
+ jr z, .asm_24210
+ jr .asm_2420b
+.asm_241fd
+ ld a, [$d6ee]
+ cp $10
+ jr nz, .asm_24210
+ ld a, [$d70c]
+ cp $3
+ jr z, .asm_24210
+.asm_2420b
+ ld a, $1
+ ld [$d6e7], a
+.asm_24210
+ scf
+ ret
+.asm_24212
+ and a
+ ret
+
+Func_24214: ; 0x24214
+ ld a, [$d717]
+ cp $2
+ jr nz, .asm_2422e
+ ld a, [$d71a]
+ sub $4
+ ld b, a
+ ld a, [$d727]
+ add $c
+ ld c, a
+ call Func_24272
+ ld a, $0
+ jr c, .asm_24260
+.asm_2422e
+ ld a, [$d718]
+ cp $2
+ jr nz, .asm_24248
+ ld a, [$d71b]
+ sub $4
+ ld b, a
+ ld a, [$d728]
+ add $c
+ ld c, a
+ call Func_24272
+ ld a, $1
+ jr c, .asm_24260
+.asm_24248
+ ld a, [$d719]
+ cp $2
+ ret nz
+ ld a, [$d71c]
+ sub $4
+ ld b, a
+ ld a, [$d729]
+ add $c
+ ld c, a
+ call Func_24272
+ ld a, $2
+ ret nc
+.asm_24260
+ ld b, $0
+ ld c, a
+ ld hl, $d717
+ add hl, bc
+ ld a, $3
+ ld [hl], a
+ ld hl, $d714
+ add hl, bc
+ ld a, $0
+ ld [hl], a
+ ret
+
+Func_24272: ; 0x24272
+ ld a, [$d4b4]
+ sub b
+ cp $18
+ jr nc, .asm_242b9
+ ld b, a
+ ld a, [$d4b6]
+ sub c
+ cp $18
+ jr nc, .asm_242b9
+ ld c, a
+ ld e, c
+ ld d, $0
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ ld h, d
+ ld l, e
+ sla e
+ rl d
+ add hl, de
+ ld d, h
+ ld e, l
+ ld l, b
+ ld h, $0
+ add hl, de
+ ld de, $5c80 ; todo
+ add hl, de
+ ld a, $3a
+ call Func_68f
+ bit 7, a
+ jr nz, .asm_242b9
+ sla a
+ ld [$d7ea], a
+ ld a, $1
+ ld [$d7e9], a
+ scf
+ ret
+.asm_242b9
+ and a
+ ret
+
+Func_242bb: ; 0x242bb
+ ld a, [$d721]
+ cp $2
+ jr nz, .asm_242d5
+ ld a, [$d724]
+ sub $4
+ ld b, a
+ ld a, [$d731]
+ add $c
+ ld c, a
+ call Func_24272
+ ld a, $0
+ jr c, .asm_24307
+.asm_242d5
+ ld a, [$d722]
+ cp $2
+ jr nz, .asm_242ef
+ ld a, [$d725]
+ sub $4
+ ld b, a
+ ld a, [$d732]
+ add $c
+ ld c, a
+ call Func_24272
+ ld a, $1
+ jr c, .asm_24307
+.asm_242ef
+ ld a, [$d723]
+ cp $2
+ ret nz
+ ld a, [$d726]
+ sub $4
+ ld b, a
+ ld a, [$d733]
+ add $c
+ ld c, a
+ call Func_24272
+ ld a, $2
+ ret nc
+.asm_24307
+ ld b, $0
+ ld c, a
+ ld hl, $d721
+ add hl, bc
+ ld a, $3
+ ld [hl], a
+ ld hl, $d71e
+ add hl, bc
+ ld a, $0
+ ld [hl], a
+ ret
+
+INCBIN "baserom.gbc",$24319,$25a7c - $24319
InitSeelBonusStage: ; 0x25a7c
ld a, [$d7c1]
@@ -16734,7 +17943,99 @@ StartBallSeelBonusStage: ; 0x25af1
ld [$d4c9], a
ret
-INCBIN "baserom.gbc",$25b97,$26137 - $25b97
+INCBIN "baserom.gbc",$25b97,$25bbc - $25b97
+
+Func_25bbc: ; 0x25bbc
+ call Func_25bc0
+ ret
+
+Func_25bc0: ; 0x25bc0
+ ld a, [$d76c]
+ cp $0
+ jr nz, .asm_25bd8
+ ld a, [$d76e]
+ ld b, a
+ ld a, [$d770]
+ add $14
+ ld c, a
+ call Func_25c12
+ ld a, $0
+ jr c, .asm_25c09
+.asm_25bd8
+ ld a, [$d776]
+ cp $0
+ jr nz, .asm_25bf0
+ ld a, [$d778]
+ ld b, a
+ ld a, [$d77a]
+ add $14
+ ld c, a
+ call Func_25c12
+ ld a, $1
+ jr c, .asm_25c09
+.asm_25bf0
+ ld a, [$d780]
+ cp $0
+ jr nz, .asm_25c08
+ ld a, [$d782]
+ ld b, a
+ ld a, [$d784]
+ add $14
+ ld c, a
+ call Func_25c12
+ ld a, $2
+ jr c, .asm_25c09
+.asm_25c08
+ ret
+.asm_25c09
+ ld [$d768], a
+ ld a, $1
+ ld [$d767], a
+ ret
+
+Func_25c12: ; 0x25c12
+ ld a, [$d4b4]
+ sub b
+ cp $20
+ jr nc, .asm_25c58
+ ld b, a
+ ld a, [$d4b6]
+ sub c
+ cp $20
+ jr nc, .asm_25c58
+ ld c, a
+ ld e, c
+ ld d, $0
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ sla e
+ rl d
+ ld l, b
+ ld h, $0
+ add hl, de
+ ld de, $5100 ; todo
+ add hl, de
+ ld a, $3a
+ call Func_68f
+ bit 7, a
+ jr nz, .asm_25c58
+ sla a
+ ld [$d7ea], a
+ ld a, $1
+ ld [$d7e9], a
+ scf
+ ret
+.asm_25c58
+ and a
+ ret
+
+INCBIN "baserom.gbc",$25c5a,$26137 - $25c5a
Func_26137: ; 0x26137
push af