summaryrefslogtreecommitdiff
path: root/engine/main/ball_init/ball_init.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/main/ball_init/ball_init.asm')
-rwxr-xr-xengine/main/ball_init/ball_init.asm85
1 files changed, 85 insertions, 0 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