diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-06-30 12:48:52 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-06-30 12:48:52 -0700 |
commit | 193da33375ecc37d2fd326deef4bc3b5720c49dd (patch) | |
tree | 5effe81bd09da3f7ed528e097838c01df8bfbde0 | |
parent | 8f69437b81bc9da2afc70d80275ee7ee378c1f39 (diff) |
Move ball initialization routines to engine/main/ball_init/
-rwxr-xr-x | engine/main/ball_init/ball_init.asm | 85 | ||||
-rwxr-xr-x | engine/main/ball_init/ball_init_blue_field.asm | 90 | ||||
-rwxr-xr-x | engine/main/ball_init/ball_init_diglett_bonus.asm | 32 | ||||
-rwxr-xr-x | engine/main/ball_init/ball_init_gengar_bonus.asm | 24 | ||||
-rwxr-xr-x | engine/main/ball_init/ball_init_meowth_bonus.asm | 85 | ||||
-rwxr-xr-x | engine/main/ball_init/ball_init_mewtwo_bonus.asm | 21 | ||||
-rwxr-xr-x | engine/main/ball_init/ball_init_red_field.asm | 95 | ||||
-rwxr-xr-x | engine/main/ball_init/ball_init_seel_bonus.asm | 65 | ||||
-rwxr-xr-x | engine/main/ball_init/ball_init_unused_stage.asm | 11 | ||||
-rwxr-xr-x | main.asm | 533 |
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
@@ -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] |