summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xengine/main/ball_init/ball_init.asm85
-rwxr-xr-xengine/main/ball_init/ball_init_blue_field.asm90
-rwxr-xr-xengine/main/ball_init/ball_init_diglett_bonus.asm32
-rwxr-xr-xengine/main/ball_init/ball_init_gengar_bonus.asm24
-rwxr-xr-xengine/main/ball_init/ball_init_meowth_bonus.asm85
-rwxr-xr-xengine/main/ball_init/ball_init_mewtwo_bonus.asm21
-rwxr-xr-xengine/main/ball_init/ball_init_red_field.asm95
-rwxr-xr-xengine/main/ball_init/ball_init_seel_bonus.asm65
-rwxr-xr-xengine/main/ball_init/ball_init_unused_stage.asm11
-rwxr-xr-xmain.asm533
10 files changed, 521 insertions, 520 deletions
diff --git a/engine/main/ball_init/ball_init.asm b/engine/main/ball_init/ball_init.asm
new file mode 100755
index 0000000..e938748
--- /dev/null
+++ b/engine/main/ball_init/ball_init.asm
@@ -0,0 +1,85 @@
+InitBallForStage: ; 0x83ba
+ ld a, [wd7c1]
+ and a
+ jr z, .asm_83c7
+ call TryLoadWildMonCollisionMask
+ call RestartStageMusic
+ ret
+
+.asm_83c7
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wd7ae], a
+ ld [wd7af], a
+ ld [wd7b2], a
+ ld [wd7b3], a
+ ld [wd7b0], a
+ ld [wd7b1], a
+ ld [wd7b4], a
+ ld [wd7b5], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ inc a
+ ld [wd548], a
+ ld [wd549], a
+ ld a, $20
+ ld [wSCX], a
+ ld a, [wCurrentStage]
+ call CallInFollowingTable
+CallTable_8404: ; 0x8404
+ ; STAGE_RED_FIELD_TOP
+ padded_dab InitBallRedField
+ ; STAGE_RED_FIELD_BOTTOM
+ padded_dab InitBallRedField
+ padded_dab Func_1804a
+ padded_dab Func_1804a
+ ; STAGE_BLUE_FIELD_TOP
+ padded_dab InitBallBlueField
+ ; STAGE_BLUE_FIELD_BOTTOM
+ padded_dab InitBallBlueField
+ ; STAGE_GENGAR_BONUS
+ padded_dab InitBallGengarBonusStage
+ ; STAGE_GENGAR_BONUS
+ padded_dab InitBallGengarBonusStage
+ ; STAGE_MEWTWO_BONUS
+ padded_dab InitBallMewtwoBonusStage
+ ; STAGE_MEWTWO_BONUS
+ padded_dab InitBallMewtwoBonusStage
+ ; STAGE_MEOWTH_BONUS
+ padded_dab InitBallMeowthBonusStage
+ ; STAGE_MEOWTH_BONUS
+ padded_dab InitBallMeowthBonusStage
+ ; STAGE_DIGLETT_BONUS
+ padded_dab InitBallDiglettBonusStage
+ ; STAGE_DIGLETT_BONUS
+ padded_dab InitBallDiglettBonusStage
+ ; STAGE_SEEL_BONUS
+ padded_dab InitBallSeelBonusStage
+ ; STAGE_SEEL_BONUS
+ padded_dab InitBallSeelBonusStage
+
+TryLoadWildMonCollisionMask: ; 0x8444
+ ld a, [wInSpecialMode]
+ and a
+ jr z, .done
+ ld a, [wSpecialMode]
+ and a ; Is the current special mode "Catch 'Em" mode?
+ jr nz, .done
+ ld a, [wWildMonIsHittable]
+ and a
+ jr z, .done
+ callba LoadWildMonCollisionMask
+.done
+ ret
+
+RestartStageMusic: ; 0x8461
+ ld a, [wStageSongBank]
+ call SetSongBank
+ ld a, [wStageSong]
+ ld e, a
+ ld d, $0
+ call PlaySong
+ ret
diff --git a/engine/main/ball_init/ball_init_blue_field.asm b/engine/main/ball_init/ball_init_blue_field.asm
new file mode 100755
index 0000000..6aa88c1
--- /dev/null
+++ b/engine/main/ball_init/ball_init_blue_field.asm
@@ -0,0 +1,90 @@
+InitBallBlueField: ; 0x1c08d
+ ld a, [wd496]
+ and a
+ jp nz, StartBallAfterBonusStageBlueField
+ ld a, $0
+ ld [wBallXPos], a
+ ld a, $a7
+ ld [wBallXPos + 1], a
+ ld a, $0
+ ld [wBallYPos], a
+ ld a, $98
+ ld [wBallYPos + 1], a
+ xor a
+ ld [wd549], a
+ ld [wd580], a
+ call Func_1c7c7
+ ld a, [wd4c9]
+ and a
+ ret z
+ xor a
+ ld [wd4c9], a
+ xor a
+ ld [wd50b], a
+ ld [wd50c], a
+ ld [wd51d], a
+ ld [wd51e], a
+ ld [wd517], a
+ ld hl, wd50f
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [wLeftMapMoveCounter], a
+ ld [wRightMapMoveCounter], a
+ ld hl, wd5f9
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [wBallType], a
+ ld [wd611], a
+ ld [wd612], a
+ ld [wd628], a
+ ld [wd629], a
+ ld [wd62a], a
+ ld [wd62b], a
+ ld [wd62c], a
+ ld [wd63a], a
+ ld [wd63b], a
+ ld [wd63d], a
+ ld [wd63c], a
+ ld [wd62d], a
+ ld [wd62e], a
+ ld [wd613], a
+ inc a
+ ld [wd482], a
+ ld [wd4ef], a
+ ld [wd4f1], a
+ ld a, $3
+ ld [wd610], a
+ call Func_1d65f
+ ld a, $10
+ call SetSongBank
+ ld de, $0001
+ call PlaySong
+ ret
+
+StartBallAfterBonusStageBlueField: ; 0x1c129
+ ld a, $0
+ ld [wBallXPos], a
+ ld a, $50
+ ld [wBallXPos + 1], a
+ ld a, $0
+ ld [wBallYPos], a
+ ld a, $16
+ ld [wBallYPos + 1], a
+ xor a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wd496], a
+ ld [wSCX], a
+ ld [wd7be], a
+ ld a, [wBallTypeBackup]
+ ld [wBallType], a
+ ld a, $10
+ call SetSongBank
+ ld de, $0001
+ call PlaySong
+ ret
diff --git a/engine/main/ball_init/ball_init_diglett_bonus.asm b/engine/main/ball_init/ball_init_diglett_bonus.asm
new file mode 100755
index 0000000..ef12950
--- /dev/null
+++ b/engine/main/ball_init/ball_init_diglett_bonus.asm
@@ -0,0 +1,32 @@
+InitBallDiglettBonusStage: ; 0x19a38
+ ld a, $0
+ ld [wBallXPos], a
+ ld a, $a6
+ ld [wBallXPos + 1], a
+ ld a, $0
+ ld [wBallYPos], a
+ ld a, $56
+ ld [wBallYPos + 1], a
+ ld a, $40
+ ld [wBallXVelocity], a
+ xor a
+ ld [wSCX], a
+ ld [wStageCollisionState], a
+ ld [wd73a], a
+ ld hl, wDiglettStates
+ ld b, NUM_DIGLETTS
+.asm_19a60
+ ld a, [hl]
+ and a
+ jr z, .asm_19a67
+ ld a, $1 ; hiding diglett state
+ ld [hl], a
+.asm_19a67
+ inc hl
+ dec b
+ jr nz, .asm_19a60
+ xor a
+ ld [wCurrentDiglett], a
+ ld [wDiglettsInitializedFlag], a
+ ld [wd765], a
+ ret
diff --git a/engine/main/ball_init/ball_init_gengar_bonus.asm b/engine/main/ball_init/ball_init_gengar_bonus.asm
new file mode 100755
index 0000000..065a1ca
--- /dev/null
+++ b/engine/main/ball_init/ball_init_gengar_bonus.asm
@@ -0,0 +1,24 @@
+InitBallGengarBonusStage: ; 0x18157
+ ld a, $0
+ ld [wBallXPos], a
+ ld a, $a6
+ ld [wBallXPos + 1], a
+ ld a, $0
+ ld [wBallYPos], a
+ ld a, $56
+ ld [wBallYPos + 1], a
+ xor a
+ ld [wSCX], a
+ ld [wStageCollisionState], a
+ ld [wd653], a
+ xor a
+ ld [wd674], a
+ ld a, $8
+ ld [wd690], a
+ ld [wd6a1], a
+ ld a, [wd4c9]
+ and a
+ ret z
+ xor a
+ ld [wd4c9], a
+ ret
diff --git a/engine/main/ball_init/ball_init_meowth_bonus.asm b/engine/main/ball_init/ball_init_meowth_bonus.asm
new file mode 100755
index 0000000..9747d42
--- /dev/null
+++ b/engine/main/ball_init/ball_init_meowth_bonus.asm
@@ -0,0 +1,85 @@
+InitBallMeowthBonusStage: ; 0x24059
+ ld a, $0
+ ld [wBallXPos], a
+ ld a, $a6
+ ld [wBallXPos + 1], a
+ ld a, $0
+ ld [wBallYPos], a
+ ld a, $56
+ ld [wBallYPos + 1], a
+ ld a, $40
+ ld [wBallXVelocity], a
+ xor a
+ ld [wSCX], a
+ ld [wStageCollisionState], a
+ ld [wd6e6], a
+ ld hl, wd6f3
+ ld b, $16
+.asm_24081
+ ld a, [hl]
+ and a
+ jr z, .asm_24088
+ ld a, $1
+ ld [hl], a
+.asm_24088
+ inc hl
+ dec b
+ jr nz, .asm_24081
+ ld a, $1
+ ld [wd7ac], a
+ ld a, $40
+ ld [wMeowthXPosition], a
+ ld a, $20
+ ld [wMeowthYPosition], a
+ ld a, $10
+ ld [wMeowthAnimationFrameCounter], a
+ ld a, $ff ; walk left
+ ld [wMeowthXMovement], a
+ xor a
+ ld [wMeowthAnimationFrame], a
+ ld [wd6ec], a
+ ld [wMeowthAnimationFrameIndex], a
+ ld [wd70b], a
+ ld [wd70c], a
+ ld a, $c8
+ ld [wd71a], a
+ ld [wd727], a
+ ld [wd71b], a
+ ld [wd728], a
+ ld [wd71c], a
+ ld [wd729], a
+ ld [wd724], a
+ ld [wd731], a
+ ld [wd725], a
+ ld [wd732], a
+ ld [wd726], a
+ ld [wd733], a
+ xor a
+ ld [wd717], a
+ ld [wd718], a
+ ld [wd719], a
+ ld [wd721], a
+ ld [wd722], a
+ ld [wd723], a
+ ld [wd714], a
+ ld [wd715], a
+ ld [wd716], a
+ ld [wd71e], a
+ ld [wd71f], a
+ ld [wd720], a
+ ld [wd64e], a
+ ld [wd64f], a
+ ld [wd650], a
+ ld [wd651], a
+ ld [wd795], a
+ ld [wd796], a
+ ld [wd797], a
+ ld [wd798], a
+ ld [wd799], a
+ ld [wd79a], a
+ ld a, [wd4c9]
+ and a
+ ret z
+ xor a
+ ld [wd4c9], a
+ ret
diff --git a/engine/main/ball_init/ball_init_mewtwo_bonus.asm b/engine/main/ball_init/ball_init_mewtwo_bonus.asm
new file mode 100755
index 0000000..c95d283
--- /dev/null
+++ b/engine/main/ball_init/ball_init_mewtwo_bonus.asm
@@ -0,0 +1,21 @@
+InitBallMewtwoBonusStage: ; 0x192e3
+ ld a, $0
+ ld [wBallXPos], a
+ ld a, $a6
+ ld [wBallXPos + 1], a
+ ld a, $0
+ ld [wBallYPos], a
+ ld a, $56
+ ld [wBallYPos + 1], a
+ ld a, $80
+ ld [wBallXVelocity], a
+ xor a
+ ld [wSCX], a
+ ld [wStageCollisionState], a
+ ld [wd6a9], a
+ ld a, [wd4c9]
+ and a
+ ret z
+ xor a
+ ld [wd4c9], a
+ ret
diff --git a/engine/main/ball_init/ball_init_red_field.asm b/engine/main/ball_init/ball_init_red_field.asm
new file mode 100755
index 0000000..78c3c8f
--- /dev/null
+++ b/engine/main/ball_init/ball_init_red_field.asm
@@ -0,0 +1,95 @@
+InitBallRedField: ; 0x3007d
+ ld a, [wd496]
+ and a
+ jp nz, StartBallAfterBonusStageRedField
+ ld a, $0
+ ld [wBallXPos], a
+ ld a, $a7
+ ld [wBallXPos + 1], a
+ ld a, $0
+ ld [wBallYPos], a
+ ld a, $98
+ ld [wBallYPos + 1], a
+ xor a
+ ld [wd549], a
+ ld [wd580], a
+ ld a, [wd7ad]
+ bit 7, a
+ jr z, .asm_300ae
+ ld a, [wStageCollisionState]
+ res 0, a
+ ld [wd7ad], a
+.asm_300ae
+ ld a, [wStageCollisionState]
+ and $1
+ ld [wStageCollisionState], a
+ ld a, [wd4c9]
+ and a
+ ret z
+ xor a
+ ld [wd4c9], a
+ xor a
+ ld [wd50b], a
+ ld [wd50c], a
+ ld [wd51d], a
+ ld [wd517], a
+ ld [wd51e], a
+ ld hl, wd50f
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [wLeftMapMoveCounter], a
+ ld [wRightMapMoveCounter], a
+ ld hl, wd5f9
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [wBallType], a
+ ld [wd611], a
+ ld [wd612], a
+ ld [wd628], a
+ ld [wd629], a
+ ld [wd62a], a
+ ld [wd62b], a
+ ld [wd62c], a
+ ld [wd62d], a
+ ld [wd62e], a
+ ld [wd613], a
+ inc a
+ ld [wd482], a
+ ld [wd4ef], a
+ ld [wd4f1], a
+ ld a, $3
+ ld [wd610], a
+ callba Func_16f95
+ ld a, $f
+ call SetSongBank
+ ld de, $0001
+ call PlaySong
+ ret
+
+StartBallAfterBonusStageRedField: ; 0x30128
+ ld a, $0
+ ld [wBallXPos], a
+ ld a, $50
+ ld [wBallXPos + 1], a
+ ld a, $0
+ ld [wBallYPos], a
+ ld a, $16
+ ld [wBallYPos + 1], a
+ xor a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wd496], a
+ ld [wSCX], a
+ ld [wd7be], a
+ ld a, [wBallTypeBackup]
+ ld [wBallType], a
+ ld a, $f
+ call SetSongBank
+ ld de, $0001
+ call PlaySong
+ ret
diff --git a/engine/main/ball_init/ball_init_seel_bonus.asm b/engine/main/ball_init/ball_init_seel_bonus.asm
new file mode 100755
index 0000000..84343d1
--- /dev/null
+++ b/engine/main/ball_init/ball_init_seel_bonus.asm
@@ -0,0 +1,65 @@
+InitBallSeelBonusStage: ; 0x25af1
+ ld a, $0
+ ld [wBallXPos], a
+ ld a, $a6
+ ld [wBallXPos + 1], a
+ ld a, $0
+ ld [wBallYPos], a
+ ld a, $56
+ ld [wBallYPos + 1], a
+ ld a, $80
+ ld [wBallXVelocity], a
+ xor a
+ ld [wSCX], a
+ ld [wStageCollisionState], a
+ ld [wd766], a
+ ld a, $0
+ ld [wd772], a
+ ld a, $1
+ ld [wd77c], a
+ ld a, $0
+ ld [wd786], a
+ ld a, $4
+ ld [wd775], a
+ ld [wd77f], a
+ ld [wd76b], a
+ ld a, $1
+ ld [wd76c], a
+ ld a, $4
+ ld [wd776], a
+ ld a, $1
+ ld [wd780], a
+ ld a, $5
+ ld [wd771], a
+ ld [wd77b], a
+ ld [wd785], a
+ ld a, $ff
+ ld [wd79a], a
+ xor a
+ ld [wd792], a
+ ld [wd791], a
+ ld [wd64e], a
+ ld [wd64f], a
+ ld [wd650], a
+ ld [wd651], a
+ ld [wd795], a
+ ld [wd796], a
+ ld [wd797], a
+ ld [wd798], a
+ ld [wd799], a
+ ld [wd79a], a
+ ld de, wd76b
+ ld a, [wd76c]
+ call Func_26137
+ ld de, wd775
+ ld a, [wd776]
+ call Func_26137
+ ld de, wd77f
+ ld a, [wd780]
+ call Func_26137
+ ld a, [wd4c9]
+ and a
+ ret z
+ xor a
+ ld [wd4c9], a
+ ret
diff --git a/engine/main/ball_init/ball_init_unused_stage.asm b/engine/main/ball_init/ball_init_unused_stage.asm
new file mode 100755
index 0000000..656ce44
--- /dev/null
+++ b/engine/main/ball_init/ball_init_unused_stage.asm
@@ -0,0 +1,11 @@
+Func_1804a: ; 0x1804a
+; Unused -- Init ball routine for unused stage.
+ ld a, $0
+ ld [wBallXPos], a
+ ld a, $b0
+ ld [wBallXPos + 1], a
+ ld a, $0
+ ld [wBallYPos], a
+ ld a, $98
+ ld [wBallYPos + 1], a
+ ret
diff --git a/main.asm b/main.asm
index 37f1edb..5d3a57f 100755
--- a/main.asm
+++ b/main.asm
@@ -13,92 +13,7 @@ INCLUDE "engine/select_gameboy_target_menu.asm"
INCLUDE "engine/erase_all_data_menu.asm"
INCLUDE "engine/copyright_screen.asm"
INCLUDE "engine/main/stage_init/init_stages.asm"
-
-StartBallForStage: ; 0x83ba
- ld a, [wd7c1]
- and a
- jr z, .asm_83c7
- call Func_8444
- call RestartStageMusic
- ret
-
-.asm_83c7
- xor a
- ld [wBallXVelocity], a
- ld [wBallXVelocity + 1], a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- ld [wd7ae], a
- ld [wd7af], a
- ld [wd7b2], a
- ld [wd7b3], a
- ld [wd7b0], a
- ld [wd7b1], a
- ld [wd7b4], a
- ld [wd7b5], a
- ld [wBallSpin], a
- ld [wBallRotation], a
- inc a
- ld [wd548], a
- ld [wd549], a
- ld a, $20
- ld [wSCX], a
- ld a, [wCurrentStage]
- call CallInFollowingTable
-CallTable_8404: ; 0x8404
- ; STAGE_RED_FIELD_TOP
- padded_dab StartBallRedField
- ; STAGE_RED_FIELD_BOTTOM
- padded_dab StartBallRedField
- padded_dab Func_1804a
- padded_dab Func_1804a
- ; STAGE_BLUE_FIELD_TOP
- padded_dab StartBallBlueField
- ; STAGE_BLUE_FIELD_BOTTOM
- padded_dab StartBallBlueField
- ; STAGE_GENGAR_BONUS
- padded_dab StartBallGengarBonusStage
- ; STAGE_GENGAR_BONUS
- padded_dab StartBallGengarBonusStage
- ; STAGE_MEWTWO_BONUS
- padded_dab StartBallMewtwoBonusStage
- ; STAGE_MEWTWO_BONUS
- padded_dab StartBallMewtwoBonusStage
- ; STAGE_MEOWTH_BONUS
- padded_dab StartBallMeowthBonusStage
- ; STAGE_MEOWTH_BONUS
- padded_dab StartBallMeowthBonusStage
- ; STAGE_DIGLETT_BONUS
- padded_dab StartBallDiglettBonusStage
- ; STAGE_DIGLETT_BONUS
- padded_dab StartBallDiglettBonusStage
- ; STAGE_SEEL_BONUS
- padded_dab StartBallSeelBonusStage
- ; STAGE_SEEL_BONUS
- padded_dab StartBallSeelBonusStage
-
-Func_8444: ; 0x8444
- ld a, [wInSpecialMode]
- and a
- jr z, .asm_8460
- ld a, [wSpecialMode]
- and a
- jr nz, .asm_8460
- ld a, [wWildMonIsHittable]
- and a
- jr z, .asm_8460
- callba Func_10464
-.asm_8460
- ret
-
-RestartStageMusic: ; 0x8461
- ld a, [wStageSongBank]
- call SetSongBank
- ld a, [wStageSong]
- ld e, a
- ld d, $0
- call PlaySong
- ret
+INCLUDE "engine/main/ball_init/ball_init.asm"
Func_8471: ; 0x8471
ld a, [wCurrentStage]
@@ -1874,7 +1789,7 @@ GameScreenFunction_StartBall: ; 0xd87f
set 1, [hl]
ld a, $1
ld [hHBlankRoutine], a
- callba StartBallForStage
+ callba InitBallForStage
callba LoadStageCollisionAttributes
callba Func_e6c2
callba Func_ed5e
@@ -6443,7 +6358,7 @@ Data_1043e:
db $a2, $a3, $a4, $a5, $a6, $a7
db $00
-Func_10464: ; 0x10464
+LoadWildMonCollisionMask: ; 0x10464
ld a, [wCurrentCatchEmMon]
ld c, a
ld b, $0
@@ -18405,17 +18320,7 @@ Func_17fca: ; 0x17fca
SECTION "bank6", ROMX, BANK[$6]
INCLUDE "engine/main/stage_init/init_unused_stage.asm"
-
-Func_1804a: ; 0x1804a
- ld a, $0
- ld [wBallXPos], a
- ld a, $b0
- ld [wBallXPos + 1], a
- ld a, $0
- ld [wBallYPos], a
- ld a, $98
- ld [wBallYPos + 1], a
- ret
+INCLUDE "engine/main/ball_init/ball_init_unused_stage.asm"
DoNothing_1805f: ; 0x1805f
ret
@@ -18447,31 +18352,7 @@ Func_18084: ; 0x18084
ret
INCLUDE "engine/main/stage_init/init_gengar_bonus.asm"
-
-StartBallGengarBonusStage: ; 0x18157
- ld a, $0
- ld [wBallXPos], a
- ld a, $a6
- ld [wBallXPos + 1], a
- ld a, $0
- ld [wBallYPos], a
- ld a, $56
- ld [wBallYPos + 1], a
- xor a
- ld [wSCX], a
- ld [wStageCollisionState], a
- ld [wd653], a
- xor a
- ld [wd674], a
- ld a, $8
- ld [wd690], a
- ld [wd6a1], a
- ld a, [wd4c9]
- and a
- ret z
- xor a
- ld [wd4c9], a
- ret
+INCLUDE "engine/main/ball_init/ball_init_gengar_bonus.asm"
Func_1818b: ; 0x1818b
callba Func_142fc
@@ -20984,28 +20865,7 @@ GengarBonusStageGengarGfxTable:
dw $60, vTilesOB tile $24, GengarBonusGengarGfx + $240, $0000
INCLUDE "engine/main/stage_init/init_mewtwo_bonus.asm"
-
-StartBallMewtwoBonusStage: ; 0x192e3
- ld a, $0
- ld [wBallXPos], a
- ld a, $a6
- ld [wBallXPos + 1], a
- ld a, $0
- ld [wBallYPos], a
- ld a, $56
- ld [wBallYPos + 1], a
- ld a, $80
- ld [wBallXVelocity], a
- xor a
- ld [wSCX], a
- ld [wStageCollisionState], a
- ld [wd6a9], a
- ld a, [wd4c9]
- and a
- ret z
- xor a
- ld [wd4c9], a
- ret
+INCLUDE "engine/main/ball_init/ball_init_mewtwo_bonus.asm"
Func_19310: ; 0x19310
callba Func_142fc
@@ -22041,39 +21901,7 @@ OAMIds_199e6:
db $FF
INCLUDE "engine/main/stage_init/init_diglett_bonus.asm"
-
-StartBallDiglettBonusStage: ; 0x19a38
- ld a, $0
- ld [wBallXPos], a
- ld a, $a6
- ld [wBallXPos + 1], a
- ld a, $0
- ld [wBallYPos], a
- ld a, $56
- ld [wBallYPos + 1], a
- ld a, $40
- ld [wBallXVelocity], a
- xor a
- ld [wSCX], a
- ld [wStageCollisionState], a
- ld [wd73a], a
- ld hl, wDiglettStates
- ld b, NUM_DIGLETTS
-.asm_19a60
- ld a, [hl]
- and a
- jr z, .asm_19a67
- ld a, $1 ; hiding diglett state
- ld [hl], a
-.asm_19a67
- inc hl
- dec b
- jr nz, .asm_19a60
- xor a
- ld [wCurrentDiglett], a
- ld [wDiglettsInitializedFlag], a
- ld [wd765], a
- ret
+INCLUDE "engine/main/ball_init/ball_init_diglett_bonus.asm"
Func_19a76: ; 0x19a76
callba Func_142fc
@@ -23043,97 +22871,7 @@ OAMIds_1accf:
SECTION "bank7", ROMX, BANK[$7]
INCLUDE "engine/main/stage_init/init_blue_field.asm"
-
-StartBallBlueField: ; 0x1c08d
- ld a, [wd496]
- and a
- jp nz, StartBallAfterBonusStageBlueField
- ld a, $0
- ld [wBallXPos], a
- ld a, $a7
- ld [wBallXPos + 1], a
- ld a, $0
- ld [wBallYPos], a
- ld a, $98
- ld [wBallYPos + 1], a
- xor a
- ld [wd549], a
- ld [wd580], a
- call Func_1c7c7
- ld a, [wd4c9]
- and a
- ret z
- xor a
- ld [wd4c9], a
- xor a
- ld [wd50b], a
- ld [wd50c], a
- ld [wd51d], a
- ld [wd51e], a
- ld [wd517], a
- ld hl, wd50f
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [wLeftMapMoveCounter], a
- ld [wRightMapMoveCounter], a
- ld hl, wd5f9
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [wBallType], a
- ld [wd611], a
- ld [wd612], a
- ld [wd628], a
- ld [wd629], a
- ld [wd62a], a
- ld [wd62b], a
- ld [wd62c], a
- ld [wd63a], a
- ld [wd63b], a
- ld [wd63d], a
- ld [wd63c], a
- ld [wd62d], a
- ld [wd62e], a
- ld [wd613], a
- inc a
- ld [wd482], a
- ld [wd4ef], a
- ld [wd4f1], a
- ld a, $3
- ld [wd610], a
- call Func_1d65f
- ld a, $10
- call SetSongBank
- ld de, $0001
- call PlaySong
- ret
-
-StartBallAfterBonusStageBlueField: ; 0x1c129
- ld a, $0
- ld [wBallXPos], a
- ld a, $50
- ld [wBallXPos + 1], a
- ld a, $0
- ld [wBallYPos], a
- ld a, $16
- ld [wBallYPos + 1], a
- xor a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- ld [wBallXVelocity], a
- ld [wBallXVelocity + 1], a
- ld [wd496], a
- ld [wSCX], a
- ld [wd7be], a
- ld a, [wBallTypeBackup]
- ld [wBallType], a
- ld a, $10
- call SetSongBank
- ld de, $0001
- call PlaySong
- ret
+INCLUDE "engine/main/ball_init/ball_init_blue_field.asm"
Func_1c165: ; 0x1c165
call asm_1e475
@@ -32200,7 +31938,7 @@ Func_200a3: ; 0x200a3
.asm_200af
callba ShowAnimatedWildMon
callba Func_10732
- callba Func_10464
+ callba LoadWildMonCollisionMask
ld hl, wd54d
inc [hl]
.asm_200d1
@@ -32500,7 +32238,7 @@ Func_20364: ; 0x20364
.asm_20370
callba ShowAnimatedWildMon
callba Func_10732
- callba Func_10464
+ callba LoadWildMonCollisionMask
ld hl, wd54d
inc [hl]
.asm_20392
@@ -34189,92 +33927,7 @@ Func_2112a: ; 0x2112a
SECTION "bank9", ROMX, BANK[$9]
INCLUDE "engine/main/stage_init/init_meowth_bonus.asm"
-
-StartBallMeowthBonusStage: ; 0x24059
- ld a, $0
- ld [wBallXPos], a
- ld a, $a6
- ld [wBallXPos + 1], a
- ld a, $0
- ld [wBallYPos], a
- ld a, $56
- ld [wBallYPos + 1], a
- ld a, $40
- ld [wBallXVelocity], a
- xor a
- ld [wSCX], a
- ld [wStageCollisionState], a
- ld [wd6e6], a
- ld hl, wd6f3
- ld b, $16
-.asm_24081
- ld a, [hl]
- and a
- jr z, .asm_24088
- ld a, $1
- ld [hl], a
-.asm_24088
- inc hl
- dec b
- jr nz, .asm_24081
- ld a, $1
- ld [wd7ac], a
- ld a, $40
- ld [wMeowthXPosition], a
- ld a, $20
- ld [wMeowthYPosition], a
- ld a, $10
- ld [wMeowthAnimationFrameCounter], a
- ld a, $ff ; walk left
- ld [wMeowthXMovement], a
- xor a
- ld [wMeowthAnimationFrame], a
- ld [wd6ec], a
- ld [wMeowthAnimationFrameIndex], a
- ld [wd70b], a
- ld [wd70c], a
- ld a, $c8
- ld [wd71a], a
- ld [wd727], a
- ld [wd71b], a
- ld [wd728], a
- ld [wd71c], a
- ld [wd729], a
- ld [wd724], a
- ld [wd731], a
- ld [wd725], a
- ld [wd732], a
- ld [wd726], a
- ld [wd733], a
- xor a
- ld [wd717], a
- ld [wd718], a
- ld [wd719], a
- ld [wd721], a
- ld [wd722], a
- ld [wd723], a
- ld [wd714], a
- ld [wd715], a
- ld [wd716], a
- ld [wd71e], a
- ld [wd71f], a
- ld [wd720], a
- ld [wd64e], a
- ld [wd64f], a
- ld [wd650], a
- ld [wd651], a
- ld [wd795], a
- ld [wd796], a
- ld [wd797], a
- ld [wd798], a
- ld [wd799], a
- ld [wd79a], a
- ld a, [wd4c9]
- and a
- ret z
- xor a
- ld [wd4c9], a
- ret
+INCLUDE "engine/main/ball_init/ball_init_meowth_bonus.asm"
Func_24128: ; 0x24128
callba Func_142fc
@@ -38401,72 +38054,7 @@ OAMIds_25a7a: ; 0x25a7a
db $44, $45
INCLUDE "engine/main/stage_init/init_seel_bonus.asm"
-
-StartBallSeelBonusStage: ; 0x25af1
- ld a, $0
- ld [wBallXPos], a
- ld a, $a6
- ld [wBallXPos + 1], a
- ld a, $0
- ld [wBallYPos], a
- ld a, $56
- ld [wBallYPos + 1], a
- ld a, $80
- ld [wBallXVelocity], a
- xor a
- ld [wSCX], a
- ld [wStageCollisionState], a
- ld [wd766], a
- ld a, $0
- ld [wd772], a
- ld a, $1
- ld [wd77c], a
- ld a, $0
- ld [wd786], a
- ld a, $4
- ld [wd775], a
- ld [wd77f], a
- ld [wd76b], a
- ld a, $1
- ld [wd76c], a
- ld a, $4
- ld [wd776], a
- ld a, $1
- ld [wd780], a
- ld a, $5
- ld [wd771], a
- ld [wd77b], a
- ld [wd785], a
- ld a, $ff
- ld [wd79a], a
- xor a
- ld [wd792], a
- ld [wd791], a
- ld [wd64e], a
- ld [wd64f], a
- ld [wd650], a
- ld [wd651], a
- ld [wd795], a
- ld [wd796], a
- ld [wd797], a
- ld [wd798], a
- ld [wd799], a
- ld [wd79a], a
- ld de, wd76b
- ld a, [wd76c]
- call Func_26137
- ld de, wd775
- ld a, [wd776]
- call Func_26137
- ld de, wd77f
- ld a, [wd780]
- call Func_26137
- ld a, [wd4c9]
- and a
- ret z
- xor a
- ld [wd4c9], a
- ret
+INCLUDE "engine/main/ball_init/ball_init_seel_bonus.asm"
Func_25b97: ; 0x25b97
callba Func_142fc
@@ -43914,102 +43502,7 @@ INCLUDE "text/pokedex_descriptions.asm"
SECTION "bankc", ROMX, BANK[$c]
INCLUDE "engine/main/stage_init/init_red_field.asm"
-
-StartBallRedField: ; 0x3007d
- ld a, [wd496]
- and a
- jp nz, StartBallAfterBonusStageRedField
- ld a, $0
- ld [wBallXPos], a
- ld a, $a7
- ld [wBallXPos + 1], a
- ld a, $0
- ld [wBallYPos], a
- ld a, $98
- ld [wBallYPos + 1], a
- xor a
- ld [wd549], a
- ld [wd580], a
- ld a, [wd7ad]
- bit 7, a
- jr z, .asm_300ae
- ld a, [wStageCollisionState]
- res 0, a
- ld [wd7ad], a
-.asm_300ae
- ld a, [wStageCollisionState]
- and $1
- ld [wStageCollisionState], a
- ld a, [wd4c9]
- and a
- ret z
- xor a
- ld [wd4c9], a
- xor a
- ld [wd50b], a
- ld [wd50c], a
- ld [wd51d], a
- ld [wd517], a
- ld [wd51e], a
- ld hl, wd50f
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [wLeftMapMoveCounter], a
- ld [wRightMapMoveCounter], a
- ld hl, wd5f9
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [wBallType], a
- ld [wd611], a
- ld [wd612], a
- ld [wd628], a
- ld [wd629], a
- ld [wd62a], a
- ld [wd62b], a
- ld [wd62c], a
- ld [wd62d], a
- ld [wd62e], a
- ld [wd613], a
- inc a
- ld [wd482], a
- ld [wd4ef], a
- ld [wd4f1], a
- ld a, $3
- ld [wd610], a
- callba Func_16f95
- ld a, $f
- call SetSongBank
- ld de, $0001
- call PlaySong
- ret
-
-StartBallAfterBonusStageRedField: ; 0x30128
- ld a, $0
- ld [wBallXPos], a
- ld a, $50
- ld [wBallXPos + 1], a
- ld a, $0
- ld [wBallYPos], a
- ld a, $16
- ld [wBallYPos + 1], a
- xor a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- ld [wBallXVelocity], a
- ld [wBallXVelocity + 1], a
- ld [wd496], a
- ld [wSCX], a
- ld [wd7be], a
- ld a, [wBallTypeBackup]
- ld [wBallType], a
- ld a, $f
- call SetSongBank
- ld de, $0001
- call PlaySong
- ret
+INCLUDE "engine/main/ball_init/ball_init_red_field.asm"
Func_30164: ; 0x30164
ld a, [wd49b]