From be488b67709c44227d151fdbf6e0adf323e91f0c Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 30 Jun 2017 15:59:00 -0700 Subject: Rename engine/main -> engine/pinball_game --- engine/main/ball_init/ball_init.asm | 85 --- engine/main/ball_init/ball_init_blue_field.asm | 90 --- engine/main/ball_init/ball_init_diglett_bonus.asm | 32 - engine/main/ball_init/ball_init_gengar_bonus.asm | 24 - engine/main/ball_init/ball_init_meowth_bonus.asm | 85 --- engine/main/ball_init/ball_init_mewtwo_bonus.asm | 21 - engine/main/ball_init/ball_init_red_field.asm | 95 --- engine/main/ball_init/ball_init_seel_bonus.asm | 65 -- engine/main/ball_init/ball_init_unused_stage.asm | 11 - .../main/draw_sprites/draw_blue_field_sprites.asm | 401 ----------- .../draw_sprites/draw_diglett_bonus_sprites.asm | 28 - .../draw_sprites/draw_gengar_bonus_sprites.asm | 363 ---------- .../draw_sprites/draw_meowth_bonus_sprites.asm | 305 --------- .../draw_sprites/draw_mewtwo_bonus_sprites.asm | 81 --- .../main/draw_sprites/draw_red_field_sprites.asm | 759 --------------------- .../main/draw_sprites/draw_seel_bonus_sprites.asm | 129 ---- engine/main/draw_sprites/draw_sprites.asm | 35 - .../draw_sprites/draw_unused_stage_sprites.asm | 8 - engine/main/load_stage_data/load_blue_field.asm | 474 ------------- engine/main/load_stage_data/load_diglett_bonus.asm | 34 - engine/main/load_stage_data/load_gengar_bonus.asm | 11 - engine/main/load_stage_data/load_meowth_bonus.asm | 7 - engine/main/load_stage_data/load_mewtwo_bonus.asm | 9 - engine/main/load_stage_data/load_red_field.asm | 480 ------------- engine/main/load_stage_data/load_seel_bonus.asm | 7 - engine/main/load_stage_data/load_stage_data.asm | 35 - engine/main/load_stage_data/load_unused_stage.asm | 6 - engine/main/stage_init/init_blue_field.asm | 55 -- engine/main/stage_init/init_diglett_bonus.asm | 34 - engine/main/stage_init/init_gengar_bonus.asm | 107 --- engine/main/stage_init/init_meowth_bonus.asm | 34 - engine/main/stage_init/init_mewtwo_bonus.asm | 65 -- engine/main/stage_init/init_red_field.asm | 49 -- engine/main/stage_init/init_seel_bonus.asm | 60 -- engine/main/stage_init/init_stages.asm | 81 --- engine/main/stage_init/init_unused_stage.asm | 32 - engine/pinball_game.asm | 9 + engine/pinball_game/ball_init/ball_init.asm | 85 +++ .../ball_init/ball_init_blue_field.asm | 90 +++ .../ball_init/ball_init_diglett_bonus.asm | 32 + .../ball_init/ball_init_gengar_bonus.asm | 24 + .../ball_init/ball_init_meowth_bonus.asm | 85 +++ .../ball_init/ball_init_mewtwo_bonus.asm | 21 + .../pinball_game/ball_init/ball_init_red_field.asm | 95 +++ .../ball_init/ball_init_seel_bonus.asm | 65 ++ .../ball_init/ball_init_unused_stage.asm | 11 + .../draw_sprites/draw_blue_field_sprites.asm | 401 +++++++++++ .../draw_sprites/draw_diglett_bonus_sprites.asm | 28 + .../draw_sprites/draw_gengar_bonus_sprites.asm | 363 ++++++++++ .../draw_sprites/draw_meowth_bonus_sprites.asm | 305 +++++++++ .../draw_sprites/draw_mewtwo_bonus_sprites.asm | 81 +++ .../draw_sprites/draw_red_field_sprites.asm | 759 +++++++++++++++++++++ .../draw_sprites/draw_seel_bonus_sprites.asm | 129 ++++ engine/pinball_game/draw_sprites/draw_sprites.asm | 35 + .../draw_sprites/draw_unused_stage_sprites.asm | 8 + .../load_stage_data/load_blue_field.asm | 474 +++++++++++++ .../load_stage_data/load_diglett_bonus.asm | 34 + .../load_stage_data/load_gengar_bonus.asm | 11 + .../load_stage_data/load_meowth_bonus.asm | 7 + .../load_stage_data/load_mewtwo_bonus.asm | 9 + .../load_stage_data/load_red_field.asm | 480 +++++++++++++ .../load_stage_data/load_seel_bonus.asm | 7 + .../load_stage_data/load_stage_data.asm | 35 + .../load_stage_data/load_unused_stage.asm | 6 + engine/pinball_game/stage_init/init_blue_field.asm | 55 ++ .../pinball_game/stage_init/init_diglett_bonus.asm | 34 + .../pinball_game/stage_init/init_gengar_bonus.asm | 107 +++ .../pinball_game/stage_init/init_meowth_bonus.asm | 34 + .../pinball_game/stage_init/init_mewtwo_bonus.asm | 65 ++ engine/pinball_game/stage_init/init_red_field.asm | 49 ++ engine/pinball_game/stage_init/init_seel_bonus.asm | 60 ++ engine/pinball_game/stage_init/init_stages.asm | 81 +++ .../pinball_game/stage_init/init_unused_stage.asm | 32 + main.asm | 84 ++- 74 files changed, 4244 insertions(+), 4243 deletions(-) delete mode 100755 engine/main/ball_init/ball_init.asm delete mode 100755 engine/main/ball_init/ball_init_blue_field.asm delete mode 100755 engine/main/ball_init/ball_init_diglett_bonus.asm delete mode 100755 engine/main/ball_init/ball_init_gengar_bonus.asm delete mode 100755 engine/main/ball_init/ball_init_meowth_bonus.asm delete mode 100755 engine/main/ball_init/ball_init_mewtwo_bonus.asm delete mode 100755 engine/main/ball_init/ball_init_red_field.asm delete mode 100755 engine/main/ball_init/ball_init_seel_bonus.asm delete mode 100755 engine/main/ball_init/ball_init_unused_stage.asm delete mode 100755 engine/main/draw_sprites/draw_blue_field_sprites.asm delete mode 100755 engine/main/draw_sprites/draw_diglett_bonus_sprites.asm delete mode 100755 engine/main/draw_sprites/draw_gengar_bonus_sprites.asm delete mode 100755 engine/main/draw_sprites/draw_meowth_bonus_sprites.asm delete mode 100755 engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm delete mode 100755 engine/main/draw_sprites/draw_red_field_sprites.asm delete mode 100755 engine/main/draw_sprites/draw_seel_bonus_sprites.asm delete mode 100755 engine/main/draw_sprites/draw_sprites.asm delete mode 100755 engine/main/draw_sprites/draw_unused_stage_sprites.asm delete mode 100755 engine/main/load_stage_data/load_blue_field.asm delete mode 100755 engine/main/load_stage_data/load_diglett_bonus.asm delete mode 100755 engine/main/load_stage_data/load_gengar_bonus.asm delete mode 100755 engine/main/load_stage_data/load_meowth_bonus.asm delete mode 100755 engine/main/load_stage_data/load_mewtwo_bonus.asm delete mode 100755 engine/main/load_stage_data/load_red_field.asm delete mode 100755 engine/main/load_stage_data/load_seel_bonus.asm delete mode 100755 engine/main/load_stage_data/load_stage_data.asm delete mode 100755 engine/main/load_stage_data/load_unused_stage.asm delete mode 100755 engine/main/stage_init/init_blue_field.asm delete mode 100755 engine/main/stage_init/init_diglett_bonus.asm delete mode 100755 engine/main/stage_init/init_gengar_bonus.asm delete mode 100755 engine/main/stage_init/init_meowth_bonus.asm delete mode 100755 engine/main/stage_init/init_mewtwo_bonus.asm delete mode 100755 engine/main/stage_init/init_red_field.asm delete mode 100755 engine/main/stage_init/init_seel_bonus.asm delete mode 100755 engine/main/stage_init/init_stages.asm delete mode 100755 engine/main/stage_init/init_unused_stage.asm create mode 100755 engine/pinball_game.asm create mode 100755 engine/pinball_game/ball_init/ball_init.asm create mode 100755 engine/pinball_game/ball_init/ball_init_blue_field.asm create mode 100755 engine/pinball_game/ball_init/ball_init_diglett_bonus.asm create mode 100755 engine/pinball_game/ball_init/ball_init_gengar_bonus.asm create mode 100755 engine/pinball_game/ball_init/ball_init_meowth_bonus.asm create mode 100755 engine/pinball_game/ball_init/ball_init_mewtwo_bonus.asm create mode 100755 engine/pinball_game/ball_init/ball_init_red_field.asm create mode 100755 engine/pinball_game/ball_init/ball_init_seel_bonus.asm create mode 100755 engine/pinball_game/ball_init/ball_init_unused_stage.asm create mode 100755 engine/pinball_game/draw_sprites/draw_blue_field_sprites.asm create mode 100755 engine/pinball_game/draw_sprites/draw_diglett_bonus_sprites.asm create mode 100755 engine/pinball_game/draw_sprites/draw_gengar_bonus_sprites.asm create mode 100755 engine/pinball_game/draw_sprites/draw_meowth_bonus_sprites.asm create mode 100755 engine/pinball_game/draw_sprites/draw_mewtwo_bonus_sprites.asm create mode 100755 engine/pinball_game/draw_sprites/draw_red_field_sprites.asm create mode 100755 engine/pinball_game/draw_sprites/draw_seel_bonus_sprites.asm create mode 100755 engine/pinball_game/draw_sprites/draw_sprites.asm create mode 100755 engine/pinball_game/draw_sprites/draw_unused_stage_sprites.asm create mode 100755 engine/pinball_game/load_stage_data/load_blue_field.asm create mode 100755 engine/pinball_game/load_stage_data/load_diglett_bonus.asm create mode 100755 engine/pinball_game/load_stage_data/load_gengar_bonus.asm create mode 100755 engine/pinball_game/load_stage_data/load_meowth_bonus.asm create mode 100755 engine/pinball_game/load_stage_data/load_mewtwo_bonus.asm create mode 100755 engine/pinball_game/load_stage_data/load_red_field.asm create mode 100755 engine/pinball_game/load_stage_data/load_seel_bonus.asm create mode 100755 engine/pinball_game/load_stage_data/load_stage_data.asm create mode 100755 engine/pinball_game/load_stage_data/load_unused_stage.asm create mode 100755 engine/pinball_game/stage_init/init_blue_field.asm create mode 100755 engine/pinball_game/stage_init/init_diglett_bonus.asm create mode 100755 engine/pinball_game/stage_init/init_gengar_bonus.asm create mode 100755 engine/pinball_game/stage_init/init_meowth_bonus.asm create mode 100755 engine/pinball_game/stage_init/init_mewtwo_bonus.asm create mode 100755 engine/pinball_game/stage_init/init_red_field.asm create mode 100755 engine/pinball_game/stage_init/init_seel_bonus.asm create mode 100755 engine/pinball_game/stage_init/init_stages.asm create mode 100755 engine/pinball_game/stage_init/init_unused_stage.asm diff --git a/engine/main/ball_init/ball_init.asm b/engine/main/ball_init/ball_init.asm deleted file mode 100755 index e938748..0000000 --- a/engine/main/ball_init/ball_init.asm +++ /dev/null @@ -1,85 +0,0 @@ -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 deleted file mode 100755 index 6aa88c1..0000000 --- a/engine/main/ball_init/ball_init_blue_field.asm +++ /dev/null @@ -1,90 +0,0 @@ -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 deleted file mode 100755 index ef12950..0000000 --- a/engine/main/ball_init/ball_init_diglett_bonus.asm +++ /dev/null @@ -1,32 +0,0 @@ -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 deleted file mode 100755 index 065a1ca..0000000 --- a/engine/main/ball_init/ball_init_gengar_bonus.asm +++ /dev/null @@ -1,24 +0,0 @@ -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 deleted file mode 100755 index 9747d42..0000000 --- a/engine/main/ball_init/ball_init_meowth_bonus.asm +++ /dev/null @@ -1,85 +0,0 @@ -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 deleted file mode 100755 index c95d283..0000000 --- a/engine/main/ball_init/ball_init_mewtwo_bonus.asm +++ /dev/null @@ -1,21 +0,0 @@ -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 deleted file mode 100755 index 78c3c8f..0000000 --- a/engine/main/ball_init/ball_init_red_field.asm +++ /dev/null @@ -1,95 +0,0 @@ -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 deleted file mode 100755 index 84343d1..0000000 --- a/engine/main/ball_init/ball_init_seel_bonus.asm +++ /dev/null @@ -1,65 +0,0 @@ -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 deleted file mode 100755 index 656ce44..0000000 --- a/engine/main/ball_init/ball_init_unused_stage.asm +++ /dev/null @@ -1,11 +0,0 @@ -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/engine/main/draw_sprites/draw_blue_field_sprites.asm b/engine/main/draw_sprites/draw_blue_field_sprites.asm deleted file mode 100755 index 756971a..0000000 --- a/engine/main/draw_sprites/draw_blue_field_sprites.asm +++ /dev/null @@ -1,401 +0,0 @@ -DrawSpritesBlueFieldTop: ; 0x1f330 - ld bc, $7f00 - callba DrawTimer - call Func_1f395 - call Func_1f3e1 - call Func_1f408 - call Func_1f428 - callba DrawPinball - call Func_1f48f - call Func_1f4f8 - ret - -DrawSpritesBlueFieldBottom: ; 0x1f35a - ld bc, $7f00 - callba DrawTimer - callba DrawMonCaptureAnimation - call DrawAnimatedMon_BlueStage - call DrawPikachuSavers_BlueStage - callba DrawFlippers - callba DrawPinball - call Func_1f4a3 - call Func_1f509 - call Func_1f55e - ret - -Func_1f395: ; 0x1f395 - ld de, wd4cd - ld hl, Data_1f3cf - call Func_1f3ad - ld de, wd4d0 - ld hl, Data_1f3d5 - call Func_1f3ad - ld de, wd4d3 - ld hl, Data_1f3db - ; fall through - -Func_1f3ad: ; 0x1f3ad - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [wd4d7] - sub [hl] - inc hl - jr z, .asm_1f3c4 - ld a, $0 - jr .asm_1f3c6 - -.asm_1f3c4 - ld a, $1 -.asm_1f3c6 - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -Data_1f3cf: - db $48, $2D ; background scroll offsets (x, y) - db $01 - db $E0, $E1, $E0 ; OAM ids - -Data_1f3d5: - db $33, $3E ; background scroll offsets (x, y) - db $00 - db $E0, $E1, $E0 ; OAM ids - -Data_1f3db: - db $5D, $3E ; background scroll offsets (x, y) - db $02 - db $E0, $E1, $E0 ; OAM ids - -Func_1f3e1: ; 0x1f3e1 - ld a, $8a - ld hl, hSCX - sub [hl] - ld b, a - ld a, $53 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd50a] - srl a - srl a - ld e, a - ld d, $0 - ld hl, OAMIds_1f402 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_1f402: - db $E8, $E9, $EA, $EB, $EC, $ED - -Func_1f408: ; 0x1f408 - ld a, $18 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $5f - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd633] - ld e, a - ld d, $0 - ld hl, OAMIds_1f425 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_1f425: - db $E2, $E3, $E4 - -Func_1f428: ; 0x1f428 - ld a, $70 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $59 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd638] - ld e, a - ld d, $0 - ld hl, OAMIds_1f445 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_1f445: - db $E5, $E6, $E7 - -DrawPikachuSavers_BlueStage: ; 0x1f448 - ld a, [hSCX] - ld d, a - ld a, [hSCY] - ld e, a - ld a, [wd51d] - and a - ld a, [wd518] - jr z, .asm_1f473 - ld a, [wd51c] - and a - jr nz, .asm_1f469 - ld a, [hNumFramesDropped] - srl a - srl a - srl a - and $1 - jr .asm_1f473 - -.asm_1f469 - ld a, [wd4b4] - cp $50 - ld a, $1 - jr nc, .asm_1f473 - xor a -.asm_1f473 - sla a - ld c, a - ld b, $0 - ld hl, PikachuSaverOAMOffsets_BlueStage - add hl, bc - ld a, [hli] - sub d - ld b, a - ld a, [hli] - sub e - ld c, a - ld a, [wPikachuSaverAnimationFrame] - add $e - call LoadOAMData - ret - -PikachuSaverOAMOffsets_BlueStage: - dw $7E0F - dw $7E92 - -Func_1f48f: ; 0x1f48f - ld a, [wd551] - and a - ret nz - ld a, [hNumFramesDropped] - bit 4, a - ret z - ld de, wIndicatorStates + 5 - ld hl, OAMDataTable_1f4ce - ld b, $6 - jr asm_1f4b5 - -Func_1f4a3: ; 0x1f4a3 - ld a, [wd551] - and a - ret nz - ld a, [hNumFramesDropped] - bit 4, a - ret z - ld de, wIndicatorStates + 11 - ld hl, OAMDataTable_1f4e0 - ld b, $8 -asm_1f4b5: - push bc - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [de] - and a - ld a, [hli] - call nz, LoadOAMData - pop bc - inc de - dec b - jr nz, asm_1f4b5 - ret - -OAMDataTable_1f4ce: ; 0x1f4ce - ; Each entry is: - ; [OAM x/y Offsets],[OAM Id] - db $0D, $37 - db $EE - - db $35, $0D - db $F1 - - db $8E, $4E - db $F4 - - db $36, $64 - db $EF - - db $4C, $49 - db $EE - - db $61, $64 - db $F0 - -OAMDataTable_1f4e0: ; 0x1f4e0 - ; Each entry is 3 bytes: - ; [OAM x/y Offsets],[OAM Id] - db $2D, $13 - db $32 - - db $6A, $13 - db $33 - - db $25, $2D - db $34 - - db $73, $2D - db $35 - - db $38, $14 - db $36 - - db $66, $14 - db $36 - - db $79, $40 - db $37 - - db $89, $40 - db $37 - -Func_1f4f8: ; 0x1f4f8 - ld a, [wd551] - and a - ret z - ld de, wd566 - ld hl, OAMOffsetsTable_1f53a - ld b, $c - ld c, $47 - jr asm_1f518 - -Func_1f509: ; 0x1f509 - ld a, [wd551] - and a - ret z - ld de, wd572 - ld hl, OAMOffsetsTable_1f552 - ld b, $6 - ld c, $40 -asm_1f518: ; 0x1f518 - push bc - ld a, [de] - add c - cp c - push af - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [hNumFramesDropped] - and $e - jr nz, .asm_1f530 - dec c -.asm_1f530 - pop af - call nz, LoadOAMData - pop bc - inc de - dec b - jr nz, asm_1f518 - ret - -OAMOffsetsTable_1f53a: ; 0x1f53a -; OAM data x, y offsets - db $4C, $08 - db $2B, $12 - db $6D, $12 - db $15, $25 - db $82, $25 - db $0D, $3F - db $4C, $7F - db $8B, $3F - db $0A, $65 - db $36, $7F - db $61, $7F - db $8D, $65 - -OAMOffsetsTable_1f552: ; 0x1f552 -; OAM data x, y offsets - db $3B, $12 - db $5D, $12 - db $31, $16 - db $67, $16 - db $25, $2C - db $73, $2C - -Func_1f55e: ; 0x1f55e - ld a, [wd604] - and a - ret z - ld a, [wd606] - inc a - ld [wd606], a - ld a, $40 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $1 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd606] - srl a - srl a - srl a - and $3 - add $4f - cp $52 - call nz, LoadOAMData - ret - -DrawAnimatedMon_BlueStage: ; 0x1f58b - ld a, [wWildMonIsHittable] - and a - ret z - ld a, $50 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $3e - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd5bd] - ld e, a - ld d, $0 - ld hl, AnimatedMonOAMIds_BlueStage - add hl, de - ld a, [hl] - call LoadOAMData - ret - -AnimatedMonOAMIds_BlueStage: - db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31 diff --git a/engine/main/draw_sprites/draw_diglett_bonus_sprites.asm b/engine/main/draw_sprites/draw_diglett_bonus_sprites.asm deleted file mode 100755 index a0dded5..0000000 --- a/engine/main/draw_sprites/draw_diglett_bonus_sprites.asm +++ /dev/null @@ -1,28 +0,0 @@ -DrawSpritesDiglettBonus: ; 0x1ac98 - callba DrawFlippers - callba DrawPinball - call Func_1acb0 - ret - -Func_1acb0: ; 0x1acb0 - ld a, $40 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $0 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wDugtrioAnimationFrame] - ld e, a - ld d, $0 - ld hl, OAMIds_1accf - add hl, de - ld a, [hl] - bit 7, a - call z, LoadOAMData2 - ret - -OAMIds_1accf: - db $46, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53 - db $FF diff --git a/engine/main/draw_sprites/draw_gengar_bonus_sprites.asm b/engine/main/draw_sprites/draw_gengar_bonus_sprites.asm deleted file mode 100755 index 212279d..0000000 --- a/engine/main/draw_sprites/draw_gengar_bonus_sprites.asm +++ /dev/null @@ -1,363 +0,0 @@ -DrawSpritesGengarBonus: ; 0x18faf - ld bc, $7f00 - callba DrawTimer - call Func_19020 - call Func_190b9 - call Func_19185 - callba DrawFlippers - callba DrawPinball - ret - -Func_18fda: -; unused - ld a, [hNewlyPressedButtons] - bit 6, a - ret z - ld a, [wd659] - and a - jr z, .asm_18ff8 - ld a, $1 - ld [wd67e], a - ld [wd687], a - xor a - ld [wd659], a - ld [wd662], a - ld [wd66b], a - ret - -.asm_18ff8 - ld a, [wd67e] - and a - jr z, .asm_1900b - ld a, $1 - ld [wd698], a - xor a - ld [wd67e], a - ld [wd687], a - ret - -.asm_1900b - ld a, [wd698] - and a - ret z - ld a, $1 - ld [wd659], a - ld [wd662], a - ld [wd66b], a - xor a - ld [wd698], a - ret - -Func_19020: ; 0x19020 - ld de, wd659 - call Func_19033 - ld de, wd662 - call Func_19033 - ld de, wd66b - call Func_19033 - ret - -Func_19033: ; 0x19033 - ld a, [de] - and a - ret z -.asm_19036 - call Func_19070 - jr nc, .asm_19042 - ld a, [rLCDC] - bit 7, a - jr z, .asm_19036 - ret - -.asm_19042 - inc de - inc de - inc de - inc de - inc de - inc de - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_1906b - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_1906b: - db $00, $01, $02, $03 - db $FF - -Func_19070: ; 0x19070 - ld a, [wd674] - and a - ret z - push de - dec a - ld [wd674], a - sla a - sla a - ld c, a - ld b, $0 - ld hl, GastlyVideoData_190a9 - add hl, bc - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(GengarBonusGastlyGfx) - ld bc, $0060 - call LoadOrCopyVRAMData - ld a, $8 - ld [wd690], a - ld [wd6a1], a - xor a - ld [wd67e], a - ld [wd687], a - ld [wd698], a - pop de - scf - ret - -GastlyVideoData_190a9: - dw vTilesSH tile $10, GengarBonusGastlyGfx - dw vTilesSH tile $16, GengarBonusGastlyGfx + $60 - dw vTilesSH tile $1c, GengarBonusGastlyGfx + $c0 - dw vTilesSH tile $22, GengarBonusGastlyGfx + $120 - -Func_190b9: ; 0x190b9 - ld de, wd67e - call Func_190c6 - ld de, wd687 - call Func_190c6 - ret - -Func_190c6: ; 0x190c6 - ld a, [de] - and a - ret z -.asm_190c9 - call Func_19104 - jr nc, .asm_190d5 - ld a, [rLCDC] - bit 7, a - jr z, .asm_190c9 - ret - -.asm_190d5 - inc de - inc de - inc de - inc de - inc de - inc de - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_190fe - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_190fe: - db $04, $05, $06, $07, $08 - db $FF - -Func_19104: ; 0x19104 - ld a, [wd690] - and a - ret z - push de - dec a - ld [wd690], a - sla a - sla a - sla a - ld c, a - ld b, $0 - ld hl, GengarBonusStageHaunterGfxTable - add hl, bc - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(GengarBonusHaunterGfx) - call LoadOrCopyVRAMData - ld a, $4 - ld [wd674], a - ld a, $8 - ld [wd6a1], a - xor a - ld [wd659], a - ld [wd662], a - ld [wd66b], a - ld [wd698], a - pop de - scf - ret - -GengarBonusStageHaunterGfxTable: ; 0x19145 -; Graphics data for Haunter. -; First word: length in bytes -; Second word: destination VRAM address -; Third word: graphics data -; Fourth word: unused - dw $60, vTilesSH tile $10, GengarBonusHaunterGfx, $0000 - dw $60, vTilesSH tile $16, GengarBonusHaunterGfx + $60, $0000 - dw $60, vTilesSH tile $1c, GengarBonusHaunterGfx + $c0, $0000 - dw $60, vTilesSH tile $22, GengarBonusHaunterGfx + $120, $0000 - dw $20, vTilesSH tile $28, GengarBonusHaunterGfx + $180, $0000 - dw $40, vTilesOB tile $1a, GengarBonusHaunterGfx + $1a0, $0000 - dw $60, vTilesOB tile $1e, GengarBonusHaunterGfx + $1e0, $0000 - dw $60, vTilesOB tile $24, GengarBonusHaunterGfx + $240, $0000 - -Func_19185: ; 0x19185 - ld de, wd698 - call Func_1918c - ret - -Func_1918c: ; 0x1918c - ld a, [de] - and a - ret z -.asm_1918f - call Func_191cb - jr nc, .asm_1919b - ld a, [rLCDC] - bit 7, a - jr z, .asm_1918f - ret - -.asm_1919b - inc de - inc de - inc de - inc de - inc de - inc de - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_191c4 - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_191c4: - db $09, $0A, $0B, $0C, $0D, $0E - db $FF - -Func_191cb: ; 0x191cb - ld a, [wd6a1] - and a - ret z - push de - dec a - ld [wd6a1], a - sla a - sla a - sla a - ld c, a - ld b, $0 - ld hl, GengarBonusStageGengarGfxTable - add hl, bc - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld h, [hl] - ld l, a - ld a, $26 - call LoadOrCopyVRAMData - ld a, $4 - ld [wd674], a - ld a, $8 - ld [wd690], a - xor a - ld [wd659], a - ld [wd662], a - ld [wd66b], a - ld [wd67e], a - ld [wd687], a - pop de - scf - ret - -GengarBonusStageGengarGfxTable: - dw $60, vTilesSH tile $10, GengarBonusGengarGfx, $0000 - dw $60, vTilesSH tile $16, GengarBonusGengarGfx + $60, $0000 - dw $60, vTilesSH tile $1c, GengarBonusGengarGfx + $c0, $0000 - dw $60, vTilesSH tile $22, GengarBonusGengarGfx + $120, $0000 - dw $20, vTilesSH tile $28, GengarBonusGengarGfx + $180, $0000 - dw $40, vTilesOB tile $1a, GengarBonusGengarGfx + $1a0, $0000 - dw $60, vTilesOB tile $1e, GengarBonusGengarGfx + $1e0, $0000 - dw $60, vTilesOB tile $24, GengarBonusGengarGfx + $240, $0000 diff --git a/engine/main/draw_sprites/draw_meowth_bonus_sprites.asm b/engine/main/draw_sprites/draw_meowth_bonus_sprites.asm deleted file mode 100755 index 5d54a08..0000000 --- a/engine/main/draw_sprites/draw_meowth_bonus_sprites.asm +++ /dev/null @@ -1,305 +0,0 @@ -DrawSpritesMeowthBonus: ; 0x2583b - ld bc, $7f65 - callba DrawTimer - callba DrawFlippers - call Func_259fe - call Func_25895 - call Func_2595e - call Func_2586c - callba DrawPinball - call Func_25a39 - ret - -Func_2586c: ; 0x2586c - ld a, [wMeowthXPosition] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wMeowthYPosition] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wMeowthAnimationFrame] - ld e, a - ld d, $0 - ld hl, OAMIds_2588b - add hl, de - ld a, [hl] - call LoadOAMData2 - ret - -OAMIds_2588b: - db $21, $22, $23, $24, $25, $26, $27, $28, $33, $34 - -Func_25895: ; 0x25895 - ld a, [wd714] - cp $b - jr nz, .asm_258a0 - xor a - ld [wd714], a -.asm_258a0 - ld a, [wd715] - cp $b - jr nz, .asm_258ab - xor a - ld [wd715], a -.asm_258ab - ld a, [wd716] - cp $b - jr nz, .asm_258b6 - xor a - ld [wd716], a -.asm_258b6 - ld a, [wd71a] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd727] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd717] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd714] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ld a, [wd71b] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd728] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd718] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd715] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ld a, [wd71c] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd729] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd719] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd716] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ret - -OAMPointers_25935: - dw OAMIds_2593d - dw OAMIds_2593d - dw OAMIds_25948 - dw OAMIds_25953 - -OAMIds_2593d: - db $29, $29, $29, $29, $2A, $2A, $2A, $2A, $2A, $2A, $2A - -OAMIds_25948: - db $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2C, $2C, $2C, $2C - -OAMIds_25953: - db $2D, $32, $31, $30, $2F, $2E, $2F, $30, $31, $32, $32 - -Func_2595e: ; 0x2595e - ld a, [wd71e] - cp $b - jr nz, .asm_25969 - xor a - ld [wd71e], a -.asm_25969 - ld a, [wd71f] - cp $b - jr nz, .asm_25974 - xor a - ld [wd71f], a -.asm_25974 - ld a, [wd720] - cp $b - jr nz, .asm_2597f - xor a - ld [wd720], a -.asm_2597f - ld a, [wd724] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd731] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd721] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd71e] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ld a, [wd725] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd732] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd722] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd71f] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ld a, [wd726] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd733] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd723] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd720] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ret - -Func_259fe: ; 0x259fe - ld a, [wd795] - and a - ret z - ld de, wd79c - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_25a29 - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_25a29: - db $35, $36, $37, $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $42, $43 - db $FF - -Func_25a39: ; 0x25a39 - ld a, [wd64e] - and a - ret z - ld a, [wd652] - ld hl, hSCX - sub [hl] - ld b, a - xor a - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd64f] - cp $a - jr c, .asm_25a58 - ld de, $0000 - jr .asm_25a5b - -.asm_25a58 - ld de, $0001 -.asm_25a5b - ld hl, OAMIds_25a7a - add hl, de - ld a, [hl] - call LoadOAMData2 - ld hl, wd64f - inc [hl] - ld a, [hl] - cp $14 - ret c - ld [hl], $0 - ld hl, wd650 - inc [hl] - ld a, [hl] - cp $a - ret nz - xor a - ld [wd64e], a - ret - -OAMIds_25a7a: ; 0x25a7a - db $44, $45 diff --git a/engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm b/engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm deleted file mode 100755 index a4397a0..0000000 --- a/engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm +++ /dev/null @@ -1,81 +0,0 @@ -DrawSpritesMewtwoBonus: ; 0x1994e - ld bc, $7f65 - callba DrawTimer - call Func_1999d - callba DrawFlippers - callba DrawPinball - call Func_19976 - ret - -Func_19976: ; 0x19976 - ld a, $40 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $0 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd6ad] - ld e, a - ld d, $0 - ld hl, OAMIds_19995 - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_19995: - db $0F, $10, $11, $12, $17, $18, $19 - db $FF - -Func_1999d: ; 0x1999d - ld de, wd6b6 - call Func_199be - ld de, wd6be - call Func_199be - ld de, wd6c6 - call Func_199be - ld de, wd6ce - call Func_199be - ld de, wd6d6 - call Func_199be - ld de, wd6de - ; fall through - -Func_199be: ; 0x199be - ld a, [de] - and a - ret z - inc de - inc de - inc de - inc de - inc de - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_199e6 - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_199e6: - db $13, $14, $15, $16, $1A, $1B, $1C, $1D, $1E, $1F, $20 - db $FF diff --git a/engine/main/draw_sprites/draw_red_field_sprites.asm b/engine/main/draw_sprites/draw_red_field_sprites.asm deleted file mode 100755 index d56e840..0000000 --- a/engine/main/draw_sprites/draw_red_field_sprites.asm +++ /dev/null @@ -1,759 +0,0 @@ -DrawSpritesRedFieldTop: ; 0x1755c - ld bc, $7f00 - call DrawTimer - call Func_17cc4 - call Func_17d34 - call Func_17d59 - call Func_17d7a - call Func_17d92 - call Func_17de1 - call DrawPinball - call Func_17efb - call Func_17f64 - ret - -DrawSpritesRedFieldBottom: ; 0x1757e - ld bc, $7f00 - call DrawTimer - call DrawMonCaptureAnimation - call DrawAnimatedMon_RedStage - call DrawPikachuSavers_RedStage - callba DrawFlippers - call DrawPinball - call Func_17f0f - call Func_17f75 - call Func_17fca - ret - -DrawTimer: ; 0x175a4 - ld a, [wd57d] - and a - ret z - ld a, [hGameBoyColorFlag] - and a - jr nz, DrawTimer_GameBoyColor - ld a, [wd580] - and a - ret z - ld a, [wd581] - and a - jr z, .DrawTimer_GameBoy - dec a - ld [wd581], a - ret - -.DrawTimer_GameBoy - call Func_1762f - ld hl, wTimerDigits - ld a, [wTimerMinutes] - and $f - call LoadTimerDigitTiles - ld a, [wTimerSeconds] - swap a - and $f - call LoadTimerDigitTiles - ld a, [wTimerSeconds] - and $f - call LoadTimerDigitTiles - ld d, $0 - ld hl, TimerOAMIds - add hl, de - ld a, [hli] - call DrawTimerDigit - ld a, [hli] - call DrawTimerDigit - ld a, [hli] - call DrawTimerDigit - ld a, [hli] - call DrawTimerDigit - ret - -DrawTimer_GameBoyColor: ; 0x175f5 -; Loads the OAM data for the timer in the top-right corner of the screen. - ld a, [wTimerMinutes] - and $f - call DrawTimerDigit_GameBoyColor - ld a, $a ; colon - call DrawTimerDigit_GameBoyColor - ld a, [wTimerSeconds] - swap a - and $f - call DrawTimerDigit_GameBoyColor ; tens digit of the minutes - ld a, [wTimerSeconds] - and $f - call DrawTimerDigit_GameBoyColor ; ones digit of the minutes - ret - -TimerOAMIds: - db $d7, $da, $d8, $d9 - db $dc, $df, $dd, $de - db $dc, $db, $dd, $de - db $f5, $f8, $f6, $f7 - -DrawTimerDigit_GameBoyColor: ; 0x17625 - add $b1 ; the timer digits' OAM ids start at $b1 -DrawTimerDigit: ; 0x17627 - call LoadOAMData - ld a, b - add $8 - ld b, a - ret - -Func_1762f: ; 0x1762f - lb de, $60, $0c - ld a, [wCurrentStage] - cp $6 - ret nc - lb de, $00, $00 - bit 0, a - ret z - lb de, $30, $04 - ld a, [wInSpecialMode] - and a - ret z - ld a, [wSpecialMode] - and a - ret nz - lb de, $30, $08 - ret - -LoadTimerDigitTiles: ; 0x1764f - push bc - push de - cp [hl] - jr z, .skip - push af - push hl - add d - call Func_17665 - pop hl - pop af - ld [hl], a -.skip - inc hl - pop de - ld a, d - add $10 - ld d, a - pop bc - ret - -Func_17665: ; 0x17665 - ld c, a - ld b, $0 - sla c - rl b - ld hl, TimerDigitsTileData - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TimerDigitsTileData) - call Func_10aa - ret - -INCLUDE "data/timer_digits_tiledata.asm" - -DrawMonCaptureAnimation: ; 0x17c67 - ld a, [wCapturingMon] - and a - ret z - ld a, $50 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $38 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wBallCaptureAnimationFrame] - ld e, a - ld d, $0 - ld hl, BallCaptureAnimationOAMIds - add hl, de - ld a, [hl] - call LoadOAMData - ret - -BallCaptureAnimationOAMIds: - db $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $21, $22, $23, $24, $25 - -DrawAnimatedMon_RedStage: ; 0x17c96 - ld a, [wWildMonIsHittable] - and a - ret z - ld a, $50 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $3e - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd5bd] - ld e, a - ld d, $0 - ld hl, AnimatedMonOAMIds_RedStage - add hl, de - ld a, [hl] - call LoadOAMData - ret - -AnimatedMonOAMIds_RedStage: - db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31 - -Func_17cc4: ; 0x17cc4 - ld de, wd4cd - ld hl, OAMData_17d15 - call Func_17cdc - ld de, wd4d0 - ld hl, OAMData_17d1b - call Func_17cdc - ld de, wd4d3 - ld hl, OAMData_17d21 - ; fall through - -Func_17cdc: ; 0x17cdc - push hl - ld hl, AnimationData_17d27 - call UpdateAnimation - ld h, d - ld l, e - ld a, [hl] - and a - jr nz, .asm_17cf6 - call GenRandom - and $7 - add $1e - ld [hli], a - ld a, $1 - ld [hli], a - xor a - ld [hl], a -.asm_17cf6 - pop hl - inc de - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [wd4d7] - sub [hl] - inc hl - jr z, .asm_17d0c - ld a, [de] -.asm_17d0c - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMData_17d15: - db $3A, $4E ; x, y offsets - db $00 ; ??? - db $BD, $BC, $CE ; oam ids - -OAMData_17d1b: - db $53, $44 ; x, y offsets - db $01 ; ??? - db $BD, $BC, $CD ; oam ids - -OAMData_17d21: - db $4D, $60 ; x, y offsets - db $02 ; ??? - db $BD, $BC, $CF ; oam ids - -AnimationData_17d27: -; Each entry is [duration][OAM id] - db $1E, $01 - db $02, $02 - db $03, $01 - db $02, $02 - db $03, $01 - db $02, $02 - db $00 ; terminator - -Func_17d34: ; 0x17d34 - ld a, $0 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $10 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wStageCollisionState] - ld e, a - ld d, $0 - ld hl, OAMIds_17d51 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_17d51: - db $C9 - db $C9 - db $C9 - db $C9 - db $C8 - db $C8 - db $CA - db $CA - -Func_17d59: ; 0x17d59 - ld a, $74 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $52 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wBellsproutAnimationFrame] - ld e, a - ld d, $0 - ld hl, BellsproutAnimationOAMIds - add hl, de - ld a, [hl] - call LoadOAMData - ret - -BellsproutAnimationOAMIds: ; 0x17d76 - db $BE - db $BF - db $C0 - db $C1 - -Func_17d7a: ; 0x17d7a - ld a, [hGameBoyColorFlag] - and a - ret z - ld a, $67 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $54 - ld hl, hSCY - sub [hl] - ld c, a - ld a, $cc - call LoadOAMData - ret - -Func_17d92: ; 0x17d92 - ld a, [hGameBoyColorFlag] - and a - ret z - ld hl, AnimationData_17dd0 - ld de, wd504 - call UpdateAnimation - ld a, [wd504] - and a - jr nz, .asm_17db1 - ld a, $13 - ld [wd504], a - xor a - ld [wd505], a - ld [wd506], a -.asm_17db1 - ld a, $2b - ld hl, hSCX - sub [hl] - ld b, a - ld a, $69 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd505] - ld e, a - ld d, $0 - ld hl, OAMIds_17dce - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_17dce: ; 0x17dce - db $CB - db $D0 - -AnimationData_17dd0: -; Each entry is [duration][OAM id] - db $14, $00 - db $13, $01 - db $15, $00 - db $12, $01 - db $14, $00 - db $13, $01 - db $16, $00 - db $13, $01 - db $0 ; terminator - -Func_17de1: ; 0x17de1 - ld a, $88 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $5a - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd50a] - srl a - srl a - ld e, a - ld d, $0 - ld hl, OAMIds_17e02 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_17e02: ; 0x17e02 - db $C2 - db $C3 - db $C4 - db $C5 - db $C6 - db $C7 - -DrawPikachuSavers_RedStage: ; 0x17e08 - ld a, [hSCX] - ld d, a - ld a, [hSCY] - ld e, a - ld a, [wd51d] - and a - ld a, [wd518] - jr z, .asm_17e33 - ld a, [wd51c] - and a - jr nz, .asm_17e29 - ld a, [hNumFramesDropped] - srl a - srl a - srl a - and $1 - jr .asm_17e33 - -.asm_17e29 - ld a, [wd4b4] - cp $50 - ld a, $1 - jr nc, .asm_17e33 - xor a -.asm_17e33 - sla a - ld c, a - ld b, $0 - ld hl, PikachuSaverOAMOffsets_RedStage - add hl, bc - ld a, [hli] - sub d - ld b, a - ld a, [hli] - sub e - ld c, a - ld a, [wPikachuSaverAnimationFrame] - add $e - call LoadOAMData - ret - -PikachuSaverOAMOffsets_RedStage: - dw $7E0F - dw $7E92 - -Func_17e4f: ; 0x17e4f -; unused - ld hl, UnusedData_7e55 - jp Func_17e5e - -UnusedData_7e55: ; 0x17e55 - db $00, $2B, $69, $CB, $00, $67, $54, $CC - db $FF - -Func_17e5e: ; 0x17e5e -; unused - ld a, [hGameBoyColorFlag] - ld e, a - ld a, [hSCX] - ld d, a -.asm_17e64 - ld a, [hli] - cp $ff - ret z - or e - jr nz, .asm_17e70 - inc hl - inc hl - inc hl - jr .asm_17e64 -.asm_17e70 - ld a, [hli] - sub d - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [hli] - bit 0, e - call nz, LoadOAMData - jr .asm_17e64 - -DrawPinball: ; 0x17e81 - ld a, [wd548] - and a - ret z - ld hl, wBallSpin - ld a, [wBallRotation] - add [hl] - ld [wBallRotation], a - ld a, [wBallXPos + 1] - inc a - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wBallYPos + 1] - inc a - sub $10 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wBallRotation] - srl a - srl a - srl a ; divide wBallRotation by 8 because - srl a ; there are 8 frames of the ball spinning - and $7 - add $0 - call LoadOAMData - ld a, [hGameBoyColorFlag] - and a - ret nz - ld a, [hGameBoyColorFlag] - and a - ret nz - ld a, [hSGBFlag] - and a - ret nz - ld a, [wd4c5] - inc a - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd4c6] - inc a - sub $10 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd4c7] - srl a - srl a - srl a - srl a - and $7 - add $0 - call LoadOAMData - ld a, [wBallXPos + 1] - ld [wd4c5], a - ld a, [wBallYPos + 1] - ld [wd4c6], a - ld a, [wBallRotation] - ld [wd4c7], a - ret - -Func_17efb: ; 0x17efb - ld a, [wd551] - and a - ret nz - ld a, [hNumFramesDropped] - bit 4, a - ret z - ld de, wIndicatorStates + 5 - ld hl, OAMData_17f3a - ld b, $6 - jr asm_17f21 - -Func_17f0f: ; 0x17f0f - ld a, [wd551] - and a - ret nz - ld a, [hNumFramesDropped] - bit 4, a - ret z - ld de, wIndicatorStates + 11 - ld hl, OAMData_17f4c - ld b, $8 -asm_17f21: ; 0x17f21 - push bc - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [de] - and a - ld a, [hli] - call nz, LoadOAMData - pop bc - inc de - dec b - jr nz, asm_17f21 - ret - -OAMData_17f3a: - db $0D, $37 ; x, y offsets - db $D1 ; oam id - - db $46, $22 ; x, y offsets - db $D6 ; oam id - - db $8A, $4A ; x, y offsets - db $D2 ; oam id - - db $41, $81 ; x, y offsets - db $D3 ; oam id - - db $3D, $65 ; x, y offsets - db $D5 ; oam id - - db $73, $74 ; x, y offsets - db $D4 ; oam id - -OAMData_17f4c: - db $2D, $13 ; x, y offsets - db $32 ; oam id - - db $6A, $13 ; x, y offsets - db $33 ; oam id - - db $25, $2D ; x, y offsets - db $34 ; oam id - - db $73, $2D ; x, y offsets - db $35 ; oam id - - db $0F, $40 ; x, y offsets - db $36 ; oam id - - db $1F, $40 ; x, y offsets - db $36 ; oam id - - db $79, $40 ; x, y offsets - db $37 ; oam id - - db $89, $40 ; x, y offsets - db $37 ; oam id - -Func_17f64: ; 0x17f64 - ld a, [wd551] - and a - ret z - ld de, wd566 - ld hl, OAMOffsets_17fa6 - ld b, $c - ld c, $39 - jr asm_17f84 - -Func_17f75: ; 0x17f75 - ld a, [wd551] - and a - ret z - ld de, wd572 - ld hl, OAMOffsets_17fbe - ld b, $6 - ld c, $40 -asm_17f84: ; 0x17f84 - push bc - ld a, [de] - add c - cp c - push af - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [hNumFramesDropped] - and $e - jr nz, .asm_17f9c - dec c -.asm_17f9c - pop af - call nz, LoadOAMData - pop bc - inc de - dec b - jr nz, asm_17f84 - ret - -OAMOffsets_17fa6: -; x, y offsets - db $4C, $0C - db $32, $12 - db $66, $12 - db $19, $25 - db $7F, $25 - db $1E, $36 - db $7F, $36 - db $0E, $65 - db $8B, $65 - db $49, $7A - db $59, $7A - db $71, $7A - -OAMOffsets_17fbe: -; x, y offsets - db $3D, $13 - db $5B, $13 - db $31, $17 - db $67, $17 - db $2E, $2C - db $6A, $2C - -Func_17fca: ; 0x17fca - ld a, [wd604] - and a - ret z - ld a, [wd606] - inc a - ld [wd606], a - ld a, $40 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $1 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd606] - srl a - srl a - srl a - and $3 - add $4f - cp $52 - call nz, LoadOAMData - ret diff --git a/engine/main/draw_sprites/draw_seel_bonus_sprites.asm b/engine/main/draw_sprites/draw_seel_bonus_sprites.asm deleted file mode 100755 index 261de5b..0000000 --- a/engine/main/draw_sprites/draw_seel_bonus_sprites.asm +++ /dev/null @@ -1,129 +0,0 @@ -DrawSpritesSeelBonus: ; 0x26b7e - ld bc, $7f65 - callba DrawTimer - call Func_26bf7 - callba DrawFlippers - callba DrawPinball - call Func_26ba9 - call Func_26c3c - ret - -Func_26ba9: ; 0x26ba9 - ld de, wd76e - call Func_26bbc - ld de, wd778 - call Func_26bbc - ld de, wd782 - call Func_26bbc - ret - -Func_26bbc: ; 0x26bbc - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_26bdf - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_26bdf: - db $54, $55, $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E, $5F, $60, $61, $62, $63 - db $64, $65, $66, $67, $68, $69, $6A - db $FF - -Func_26bf7: ; 0x26bf7: ; 0x26bf7 - ld a, [wd795] - cp $0 - ret z - ld de, wd79c - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_26c23 - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_26c23: - db $6B, $6C, $6D, $6E, $6F, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $7A - db $7B, $7C, $7D, $7E, $7F, $80, $81, $82 - db $FF - -Func_26c3c: ; 0x26c3c - ld a, [wd64e] - and a - ret z - ld a, [wd652] - ld hl, hSCX - sub [hl] - ld b, a - xor a - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd64f] - cp $a - jr c, .asm_26c5b - ld de, $0000 - jr .asm_26c5e - -.asm_26c5b - ld de, $0001 -.asm_26c5e - ld hl, OAMIds_26c7d - add hl, de - ld a, [hl] - call LoadOAMData2 - ld hl, wd64f - inc [hl] - ld a, [hl] - cp $14 - ret c - ld [hl], $0 - ld hl, wd650 - inc [hl] - ld a, [hl] - cp $a - ret nz - xor a - ld [wd64e], a - ret - -OAMIds_26c7d: - db $83, $84 diff --git a/engine/main/draw_sprites/draw_sprites.asm b/engine/main/draw_sprites/draw_sprites.asm deleted file mode 100755 index 8e653bf..0000000 --- a/engine/main/draw_sprites/draw_sprites.asm +++ /dev/null @@ -1,35 +0,0 @@ -DrawSpritesForStage: ; 0x84b7 -; Draw sprites (OAM data) for the current stage. - ld a, [wCurrentStage] - call CallInFollowingTable -CallTable_84bd: ; 0x84bd - ; STAGE_RED_FIELD_TOP - padded_dab DrawSpritesRedFieldTop - ; STAGE_RED_FIELD_BOTTOM - padded_dab DrawSpritesRedFieldBottom - padded_dab Func_18079 - padded_dab Func_18084 - ; STAGE_BLUE_FIELD_TOP - padded_dab DrawSpritesBlueFieldTop - ; STAGE_BLUE_FIELD_BOTTOM - padded_dab DrawSpritesBlueFieldBottom - ; STAGE_GENGAR_BONUS - padded_dab DrawSpritesGengarBonus - ; STAGE_GENGAR_BONUS - padded_dab DrawSpritesGengarBonus - ; STAGE_MEWTWO_BONUS - padded_dab DrawSpritesMewtwoBonus - ; STAGE_MEWTWO_BONUS - padded_dab DrawSpritesMewtwoBonus - ; STAGE_MEOWTH_BONUS - padded_dab DrawSpritesMeowthBonus - ; STAGE_MEOWTH_BONUS - padded_dab DrawSpritesMeowthBonus - ; STAGE_DIGLETT_BONUS - padded_dab DrawSpritesDiglettBonus - ; STAGE_DIGLETT_BONUS - padded_dab DrawSpritesDiglettBonus - ; STAGE_SEEL_BONUS - padded_dab DrawSpritesSeelBonus - ; STAGE_SEEL_BONUS - padded_dab DrawSpritesSeelBonus diff --git a/engine/main/draw_sprites/draw_unused_stage_sprites.asm b/engine/main/draw_sprites/draw_unused_stage_sprites.asm deleted file mode 100755 index 473a8c2..0000000 --- a/engine/main/draw_sprites/draw_unused_stage_sprites.asm +++ /dev/null @@ -1,8 +0,0 @@ -Func_18079: ; 0x18079 - callba DrawPinball - ret - -Func_18084: ; 0x18084 - callba DrawFlippers - callba DrawPinball - ret diff --git a/engine/main/load_stage_data/load_blue_field.asm b/engine/main/load_stage_data/load_blue_field.asm deleted file mode 100755 index f6e2f2f..0000000 --- a/engine/main/load_stage_data/load_blue_field.asm +++ /dev/null @@ -1,474 +0,0 @@ -_LoadStageDataBlueFieldTop: ; 0x1c165 - call asm_1e475 - call Func_1cb43 - call Func_1c3ee - call Func_1e8f6 - callba Func_142fc - ld a, $1 - ld [wd640], a - call Func_1f18a - callba Func_1404a - call Func_1c203 - ret - -_LoadStageDataBlueFieldBottom: ; 0x1c191 - call Func_1c1db - call Func_1c4b6 - call Func_1c2cb - call Func_1e627 - call Func_1c43c - call Func_1c305 - call Func_1c3ee - callba Func_14746 - callba Func_14707 - call Func_1c235 - call Func_1c21e - call Func_1e8f6 - callba Func_142fc - callba Func_1404a - call Func_1c203 - ret - -Func_1c1db: ; 0x1c1db - ld a, [wd641] - cp $0 - ret z - ld a, $1 - ld [wd640], a - ld a, $0 - ld [wd641], a - ld a, [wBlueStageForceFieldDirection] - cp $2 ; down direction - ret nz - ld a, $0 - ld [wBlueStageForceFieldDirection], a - ld a, $1 ; right direction - ld [wd64a], a - xor a - ld [wd649], a - ld [wd648], a - ret - -Func_1c203: ; 0x1c203 - ld a, $ff - ld [wd4d7], a - ld [wd4db], a - ld a, [wd4b4] - ld [wd4c5], a - ld a, [wd4b6] - ld [wd4c6], a - ld a, [wBallRotation] - ld [wd4c7], a - ret - -Func_1c21e: ; 0x1c21e - ld a, $ff - ld [wd60e], a - ld [wd60f], a - ld a, [wd60c] - call Func_1d5f2 - ld a, [wd60d] - add $14 - call Func_1d5f2 - ret - -Func_1c235: ; 0x1c235 - ld a, [wLeftMapMoveDiglettAnimationCounter] - and a - jr z, .asm_1c249 - ld a, $54 - ld [wc7e3], a - ld a, $55 - ld [wc803], a - ld a, $1 - jr .asm_1c24a - -.asm_1c249 - xor a -.asm_1c24a - call Func_1de4b - ld a, [wLeftMapMoveCounter] - call Func_1de6f - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1c267 - ld a, [wLeftMapMoveCounter] - cp $0 - jr z, .asm_1c264 - ld b, $7 - add b - jr .asm_1c269 - -.asm_1c264 - xor a - jr .asm_1c269 - -.asm_1c267 - ld a, $8 -.asm_1c269 - call Func_1de6f - ld a, [wRightMapMoveDiglettFrame] - and a - jr z, .asm_1c295 - ld a, $52 - ld [wc7f0], a - ld a, $53 - ld [wc810], a - ld a, [wd644] - and a - jr z, .asm_1c28a - ld a, [wd55a] - and a - jr nz, .asm_1c2bd - jr .asm_1c291 - -.asm_1c28a - ld a, [wRightMapMoveCounter] - add $3 - jr .asm_1c297 - -.asm_1c291 - ld a, $3 - jr .asm_1c297 - -.asm_1c295 - ld a, $2 -.asm_1c297 - call Func_1de4b - ld a, [wRightMapMoveCounter] - add $4 - call Func_1de6f - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1c2b7 - ld a, [wRightMapMoveCounter] - cp $0 - jr z, .asm_1c2b3 - ld b, $a - add b - jr .asm_1c2b9 - -.asm_1c2b3 - ld a, $4 - jr .asm_1c2b9 - -.asm_1c2b7 - ld a, $9 -.asm_1c2b9 - call Func_1de6f - ret - -.asm_1c2bd - ld a, $6 - call Func_1de4b - ld a, [wRightMapMoveCounter] - add $4 - call Func_1de6f - ret - -Func_1c2cb: ; 0x1c2cb - ld a, [wCurrentStage] - bit 0, a - ret z - ld bc, $0000 -.asm_1c2d4 - push bc - ld hl, wIndicatorStates - add hl, bc - ld a, [hl] - res 7, a - call Func_1eb41 - pop bc - inc c - ld a, c - cp $2 - jr nz, .asm_1c2d4 - ld bc, $0002 -.asm_1c2e9 - push bc - ld hl, wIndicatorStates - add hl, bc - ld a, [hl] - push af - ld hl, wd648 - add hl, bc - dec hl - dec hl - ld a, [hl] - ld d, a - pop af - add d - call Func_1eb41 - pop bc - inc c - ld a, c - cp $5 - jr nz, .asm_1c2e9 - ret - -Func_1c305: ; 0x1c305 - ld a, [wInSpecialMode] - and a - ret z - ld a, [wSpecialMode] - cp $2 - ret z - ld a, [wd5c6] - and a - jr nz, .asm_1c31f - ld a, [wCapturingMon] - and a - jr nz, .asm_1c31f - jp Func_1c3ca - -.asm_1c31f - callba Func_1c3ac - callba Func_10362 - ld a, [hGameBoyColorFlag] - and a - callba nz, Func_10301 - ld a, [wCapturingMon] - and a - ret z - ld a, BANK(PikachuSaverGfx) - ld hl, PikachuSaverGfx + $c0 - ld de, vTilesOB tile $7e - ld bc, $0020 - call FarCopyData - ld a, BANK(StageSharedPikaBoltGfx) - ld hl, BallCaptureSmokeGfx - ld de, vTilesSH tile $10 - ld bc, $0180 - call FarCopyData - ld a, [wBallType] - cp GREAT_BALL - jr nc, .notPokeball - ld a, Bank(PinballPokeballShakeGfx) - ld hl, PinballPokeballShakeGfx - ld de, vTilesOB tile $38 - ld bc, $0040 - call FarCopyData - ret - -.notPokeball - cp ULTRA_BALL - jr nc, .notGreatball - ld a, Bank(PinballGreatballShakeGfx) - ld hl, PinballGreatballShakeGfx - ld de, vTilesOB tile $38 - ld bc, $0040 - call FarCopyData - ret - -.notGreatball - cp MASTER_BALL - jr nc, .notUltraBall - ld a, Bank(PinballUltraballShakeGfx) - ld hl, PinballUltraballShakeGfx - ld de, vTilesOB tile $38 - ld bc, $0040 - call FarCopyData - ret - -.notUltraBall - ld a, Bank(PinballMasterballShakeGfx) - ld hl, PinballMasterballShakeGfx - ld de, vTilesOB tile $38 - ld bc, $0040 - call FarCopyData - ret - -Func_1c3ac: ; 0x1c3ac - ld a, $80 - hlCoord 7, 4, vBGMap - call Func_1c3c3 - hlCoord 7, 5, vBGMap - call Func_1c3c3 - hlCoord 7, 6, vBGMap - call Func_1c3c3 - hlCoord 7, 7, vBGMap - ; fall through - -Func_1c3c3: ; 0x1c3c3 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ret - -Func_1c3ca: ; 0x1c3ca - ld hl, wd586 - ld b, $18 -.asm_1c3cf - ld a, [hli] - xor $1 - ld [hli], a - dec b - jr nz, .asm_1c3cf - callba Func_10184 - ld a, [hGameBoyColorFlag] - and a - callba nz, Func_102bc - ret - -Func_1c3ee: ; 0x1c3ee - ld a, [wInSpecialMode] - and a - ret z - ld a, [wSpecialMode] - cp $1 - ret nz - ld a, [wd554] - cp $3 - ret z - ld a, [wCurrentStage] - bit 0, a - jr nz, .asm_1c416 - ld a, BANK(EvolutionTrinketsGfx) - ld hl, EvolutionTrinketsGfx - ld de, vTilesOB tile $60 - ld bc, $00e0 - call FarCopyData - jr .asm_1c424 - -.asm_1c416 - ld a, BANK(EvolutionTrinketsGfx) - ld hl, EvolutionTrinketsGfx - ld de, vTilesOB tile $20 - ld bc, $00e0 - call FarCopyData -.asm_1c424 - ld a, [wd551] - and a - ret z - ld a, [hGameBoyColorFlag] - and a - ret z - ld a, BANK(PaletteData_dd188) - ld hl, PaletteData_dd188 - ld de, $0070 - ld bc, $0010 - call Func_6fd - ret - -Func_1c43c: ; 0x1c43c - ld a, [wInSpecialMode] - and a - jr z, .asm_1c458 - ld a, [wSpecialMode] - and a - jr nz, .asm_1c450 - ld a, [wNumMonHits] - and a - call nz, Func_1c46d - ret - -.asm_1c450 - cp $1 - jr nz, .asm_1c458 - call Func_1c47d - ret - -.asm_1c458 - ld a, [wd624] - call Func_1f265 - ld a, BANK(CaughtPokeballGfx) - ld hl, CaughtPokeballGfx - ld de, vTilesSH tile $2e - ld bc, $0020 - call FarCopyData - ret - -Func_1c46d: ; 0x1c46d - push af - callba Func_10611 - pop af - dec a - jr nz, Func_1c46d - ret - -Func_1c47d: ; 0x1c47d - ld de, $0000 - ld a, [wd554] - and a - ret z - ld b, a -.asm_1c486 - ld a, [wCurrentEvolutionType] - call Func_1c491 - inc de - dec b - jr nz, .asm_1c486 - ret - -Func_1c491: ; 0x1c491 - push bc - push de - dec a - ld c, a - ld b, $0 - swap c - sla c - ld hl, EvolutionProgressIconsGfx - add hl, bc - swap e - sla e - push hl - ld hl, vTilesSH tile $2e - add hl, de - ld d, h - ld e, l - pop hl - ld bc, $0020 - ld a, BANK(EvolutionProgressIconsGfx) - call FarCopyData - pop de - pop bc - ret - -Func_1c4b6: ; 0x1c4b6 - ld a, [wInSpecialMode] - and a - jr nz, .asm_1c4f0 - ld a, [wd609] - and a - jr z, .asm_1c4d2 - ld a, [wd498] - add $15 - callba Func_30256 - ret - -.asm_1c4d2 - ld a, [wd608] - and a - jr z, .asm_1c4e5 - ld a, $1a - callba Func_30256 - ret - -.asm_1c4e5 - callba Func_30253 - ret - -.asm_1c4f0 - ld a, [wSpecialMode] - cp $2 - ret nz - ld a, [wd54d] - cp $3 - jr nz, .asm_1c508 - callba Func_30253 - ret - -.asm_1c508 - ld a, [wd604] - and a - ld a, $14 - jr nz, .asm_1c515 - ld a, [wd55a] - add $12 -.asm_1c515 - callba Func_30256 - ret diff --git a/engine/main/load_stage_data/load_diglett_bonus.asm b/engine/main/load_stage_data/load_diglett_bonus.asm deleted file mode 100755 index 6be87a9..0000000 --- a/engine/main/load_stage_data/load_diglett_bonus.asm +++ /dev/null @@ -1,34 +0,0 @@ -_LoadStageDataDiglettBonus: ; 0x19a76 - callba Func_142fc - call Func_2862 - ld a, [wd7c1] - and a - ret z - call Func_19bbd - call Func_19a96 - ld a, [wDugrioState] - and a - call nz, Func_1ac2c - ret - -Func_19a96: ; 0x19a96 - ld hl, wDiglettStates - ld bc, NUM_DIGLETTS << 8 -.asm_19a9c - ld a, [hli] - and a - jr z, .asm_19aae - push bc - push hl - push af - call Func_19da8 - pop af - cp $6 - call c, Func_19dcd - pop hl - pop bc -.asm_19aae - inc c - dec b - jr nz, .asm_19a9c - ret diff --git a/engine/main/load_stage_data/load_gengar_bonus.asm b/engine/main/load_stage_data/load_gengar_bonus.asm deleted file mode 100755 index 767d37d..0000000 --- a/engine/main/load_stage_data/load_gengar_bonus.asm +++ /dev/null @@ -1,11 +0,0 @@ -_LoadStageDataGengarBonus: ; 0x1818b - callba Func_142fc - call Func_2862 - call Func_18d72 - ld a, [wd7c1] - callba Func_1404a - and a - ret z - call Func_183db - call Func_18d91 - ret diff --git a/engine/main/load_stage_data/load_meowth_bonus.asm b/engine/main/load_stage_data/load_meowth_bonus.asm deleted file mode 100755 index 01a49ba..0000000 --- a/engine/main/load_stage_data/load_meowth_bonus.asm +++ /dev/null @@ -1,7 +0,0 @@ -_LoadStageDataMeowthBonus: ; 0x24128 - callba Func_142fc - call Func_2862 - callba Func_24fa3 - call Func_24516 - callba Func_1404a - ret diff --git a/engine/main/load_stage_data/load_mewtwo_bonus.asm b/engine/main/load_stage_data/load_mewtwo_bonus.asm deleted file mode 100755 index 47bbfc4..0000000 --- a/engine/main/load_stage_data/load_mewtwo_bonus.asm +++ /dev/null @@ -1,9 +0,0 @@ -_LoadStageDataMewtwoBonus: ; 0x19310 - callba Func_142fc - call Func_2862 - callba Func_1404a - ld a, [wd7c1] - and a - ret z - call Func_194ac - ret diff --git a/engine/main/load_stage_data/load_red_field.asm b/engine/main/load_stage_data/load_red_field.asm deleted file mode 100755 index 5a58a75..0000000 --- a/engine/main/load_stage_data/load_red_field.asm +++ /dev/null @@ -1,480 +0,0 @@ -_LoadStageDataRedFieldTop: ; 0x14000 - call Func_14091 - call Func_159f4 - call Func_15450 - call Func_16859 - call Func_14ece - call Func_14234 - call Func_16425 - call Func_142fc - call Func_1404a - ret - -_LoadStageDataRedFieldBottom: ; 0x1401c - call Func_14091 - call Func_14377 - call Func_14135 - call Func_asm_1522d - call Func_14282 - call Func_1414b - call Func_14234 - call Func_14746 - call Func_14707 - call Func_140f9 - call Func_16878 - call Func_140e2 - call Func_16425 - call Func_142fc - call Func_1404a - ret - -Func_1404a: ; 0x1404a - ld a, [wd57d] - and a - ret z - ld a, [hGameBoyColorFlag] - and a - ret nz - ld a, [wd580] - and a - ret z - ld a, $f - ld [wd581], a - call Func_1762f - ld hl, wTimerDigits - ld a, $ff - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld hl, wTimerDigits - ld a, [wTimerMinutes] - and $f - call LoadTimerDigitTiles - ld a, [wTimerSeconds] - swap a - and $f - call LoadTimerDigitTiles - ld a, [wTimerSeconds] - and $f - call LoadTimerDigitTiles - ld a, e - srl a - srl a - ld d, $90 ; colon - call LoadTimerDigitTiles - ret - -Func_14091: ; 0x14091 - ld a, $ff - ld [wd4d7], a - ld [wd4db], a - ld a, [wd4b4] - ld [wd4c5], a - ld a, [wd4b6] - ld [wd4c6], a - ld a, [wBallRotation] - ld [wd4c7], a - ld a, [wd503] - and a - ret z - xor a - ld [wd503], a - ld a, [wd502] - res 1, a - ld [wd502], a - and $1 - ld c, a - ld a, [wStageCollisionState] - and $fe - or c - ld [wStageCollisionState], a - lb de, $00, $07 - call PlaySoundEffect - ld a, [wCurrentStage] - bit 0, a - ret nz - callba LoadStageCollisionAttributes - call Func_159f4 - ret - -Func_140e2: ; 0x140e2 - ld a, $ff - ld [wd60e], a - ld [wd60f], a - ld a, [wd60c] - call Func_16f28 - ld a, [wd60d] - add $14 - call Func_16f28 - ret - -Func_140f9: ; 0x140f9 - ld a, [wd4ef] - and a - jr z, .asm_1410c - xor a - ld a, $66 - ld [wc7e3], a - ld a, $67 - ld [wc803], a - ld a, $2 -.asm_1410c - call Func_149d9 - ld a, [wLeftMapMoveCounter] - call Func_149f5 - ld a, [wd4f1] - and a - jr z, .asm_14127 - ld a, $6a - ld [wc7f0], a - ld a, $6b - ld [wc810], a - ld a, $2 -.asm_14127 - add $3 - call Func_149d9 - ld a, [wRightMapMoveCounter] - add $4 - call Func_149f5 - ret - -Func_14135: ; 0x14135 - ld bc, $0000 -.asm_14138 - push bc - ld hl, wIndicatorStates - add hl, bc - ld a, [hl] - res 7, a - call Func_169cd - pop bc - inc c - ld a, c - cp $5 - jr nz, .asm_14138 - ret - -Func_1414b: ; 0x1414b - ld a, [wInSpecialMode] - and a - ret z - ld a, [wSpecialMode] - cp $2 - ret z - ld a, [wd5c6] - and a - jr nz, .asm_14165 - ld a, [wCapturingMon] - and a - jr nz, .asm_14165 - jp Func_14210 - -.asm_14165 - callba Func_141f2 - callba Func_10362 - ld a, [hGameBoyColorFlag] - and a - callba nz, Func_10301 - ld a, [wCapturingMon] - and a - ret z - ld a, BANK(PikachuSaverGfx) - ld hl, PikachuSaverGfx + $c0 - ld de, vTilesOB tile $7e - ld bc, $0020 - call FarCopyData - ld a, BANK(BallCaptureSmokeGfx) - ld hl, BallCaptureSmokeGfx - ld de, vTilesSH tile $10 - ld bc, $0180 - call FarCopyData - ld a, [wBallType] - cp GREAT_BALL - jr nc, .notPokeball - ld a, Bank(PinballPokeballShakeGfx) - ld hl, PinballPokeballShakeGfx - ld de, vTilesOB tile $38 - ld bc, $0040 - call FarCopyData - ret - -.notPokeball - cp ULTRA_BALL - jr nc, .notGreatball - ld a, Bank(PinballGreatballShakeGfx) - ld hl, PinballGreatballShakeGfx - ld de, vTilesOB tile $38 - ld bc, $0040 - call FarCopyData - ret - -.notGreatball - cp MASTER_BALL - jr nc, .notUltraball - ld a, Bank(PinballUltraballShakeGfx) - ld hl, PinballUltraballShakeGfx - ld de, vTilesOB tile $38 - ld bc, $0040 - call FarCopyData - ret - -.notUltraball - ld a, Bank(PinballMasterballShakeGfx) - ld hl, PinballMasterballShakeGfx - ld de, vTilesOB tile $38 - ld bc, $0040 - call FarCopyData - ret - -Func_141f2: ; 0x141f2 - ld a, $80 - hlCoord 7, 4, vBGMap - call Func_14209 - hlCoord 7, 5, vBGMap - call Func_14209 - hlCoord 7, 6, vBGMap - call Func_14209 - hlCoord 7, 7, vBGMap - ; fall through - -Func_14209: ; 0x14209 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ret - -Func_14210: ; 0x14210 - ld hl, wd586 - ld b, $18 -.asm_14215 - ld a, [hli] - xor $1 - ld [hli], a - dec b - jr nz, .asm_14215 - callba Func_10184 - ld a, [hGameBoyColorFlag] - and a - callba nz, Func_102bc - ret - -Func_14234: ; 0x14234 - ld a, [wInSpecialMode] - and a - ret z - ld a, [wSpecialMode] - cp $1 - ret nz - ld a, [wd554] - cp $3 - ret z - ld a, [wCurrentStage] - bit 0, a - jr nz, .asm_1425c - ld a, BANK(EvolutionTrinketsGfx) - ld hl, EvolutionTrinketsGfx - ld de, vTilesSH tile $10 - ld bc, $00e0 - call FarCopyData - jr .asm_1426a - -.asm_1425c - ld a, BANK(EvolutionTrinketsGfx) - ld hl, EvolutionTrinketsGfx - ld de, vTilesOB tile $20 - ld bc, $00e0 - call FarCopyData -.asm_1426a - ld a, [wd551] - and a - ret z - ld a, [hGameBoyColorFlag] - and a - ret z - ld a, BANK(PaletteData_dd188) - ld hl, PaletteData_dd188 - ld de, $0070 - ld bc, $0010 - call Func_6fd - ret - -Func_14282: ; 0x14282 - ld a, [wInSpecialMode] - and a - jr z, .asm_1429e - ld a, [wSpecialMode] - and a - jr nz, .asm_14296 - ld a, [wNumMonHits] - and a - call nz, Func_142b3 - ret - -.asm_14296 - cp $1 - jr nz, .asm_1429e - call Func_142c3 - ret - -.asm_1429e - ld a, [wd624] - call Func_174d4 - ld a, BANK(CaughtPokeballGfx) - ld hl, CaughtPokeballGfx - ld de, vTilesSH tile $2e - ld bc, $0020 - call FarCopyData - ret - -Func_142b3: ; 0x142b3 - push af - callba Func_10611 - pop af - dec a - jr nz, Func_142b3 - ret - -Func_142c3: ; 0x142c3 - ld de, $0000 - ld a, [wd554] - and a - ret z - ld b, a -.asm_142cc - ld a, [wCurrentEvolutionType] - call Func_142d7 - inc de - dec b - jr nz, .asm_142cc - ret - -Func_142d7: ; 0x142d7 - push bc - push de - dec a - ld c, a - ld b, $0 - swap c - sla c - ld hl, EvolutionProgressIconsGfx - add hl, bc - swap e - sla e - push hl - ld hl, vTilesSH tile $2e - add hl, de - ld d, h - ld e, l - pop hl - ld bc, $0020 - ld a, BANK(EvolutionProgressIconsGfx) - call FarCopyData - pop de - pop bc - ret - -Func_142fc: ; 0x142fc - ld a, [wd4c8] - and a - jr nz, .asm_1430e - callba LoadBallGfx - jr .asm_14328 - -.asm_1430e - cp $1 - jr nz, .asm_1431e - callba LoadMiniBallGfx - jr .asm_14328 - -.asm_1431e - callba Func_dd62 -.asm_14328 - ld a, [hGameBoyColorFlag] - and a - ret z - ld a, [wBallType] - cp GREAT_BALL - jr nc, .notPokeball - ld a, BANK(PokeBallObjPalette) - ld hl, PokeBallObjPalette - ld de, $0040 - ld bc, $0008 - call Func_6fd - ret - -.notPokeball - cp ULTRA_BALL - jr nc, .notGreatball - ld a, BANK(GreatBallObjPalette) - ld hl, GreatBallObjPalette - ld de, $0040 - ld bc, $0008 - call Func_6fd - ret - -.notGreatball - cp MASTER_BALL - jr nc, .notUltraball - ld a, BANK(UltraBallObjPalette) - ld hl, UltraBallObjPalette - ld de, $0040 - ld bc, $0008 - call Func_6fd - ret - -.notUltraball - ld a, BANK(MasterBallObjPalette) - ld hl, MasterBallObjPalette - ld de, $0040 - ld bc, $0008 - call Func_6fd - ret - -Func_14377: ; 0x14377 - ld a, [wInSpecialMode] - and a - jr nz, .asm_143b1 - ld a, [wd609] - and a - jr z, .asm_14393 - ld a, [wd498] - add $15 - callba Func_30256 - ret - -.asm_14393 - ld a, [wd608] - and a - jr z, .asm_143a6 - ld a, $1a - callba Func_30256 - ret - -.asm_143a6 - callba Func_30253 - ret - -.asm_143b1 - ld a, [wSpecialMode] - cp $2 - ret nz - ld a, [wd54d] - cp $3 - jr nz, .asm_143c9 - callba Func_30253 - ret - -.asm_143c9 - ld a, [wd604] - and a - ld a, $14 - jr nz, .asm_143d6 - ld a, [wd55a] - add $12 -.asm_143d6 - callba Func_30256 - ret diff --git a/engine/main/load_stage_data/load_seel_bonus.asm b/engine/main/load_stage_data/load_seel_bonus.asm deleted file mode 100755 index e72b9a7..0000000 --- a/engine/main/load_stage_data/load_seel_bonus.asm +++ /dev/null @@ -1,7 +0,0 @@ -_LoadStageDataSeelBonus: ; 0x25b97 - callba Func_142fc - call Func_2862 - callba Func_262f4 - call Func_25d0e - callba Func_1404a - ret diff --git a/engine/main/load_stage_data/load_stage_data.asm b/engine/main/load_stage_data/load_stage_data.asm deleted file mode 100755 index 4922289..0000000 --- a/engine/main/load_stage_data/load_stage_data.asm +++ /dev/null @@ -1,35 +0,0 @@ -_LoadStageData: ; 0x8471 -; Loads stage data such as additional graphics, collision attributes, etc. - ld a, [wCurrentStage] - call CallInFollowingTable -CallTable_8477: ; 0x8477 - ; STAGE_RED_FIELD_TOP - padded_dab _LoadStageDataRedFieldTop - ; STAGE_RED_FIELD_BOTTOM - padded_dab _LoadStageDataRedFieldBottom - padded_dab DoNothing_1805f - padded_dab DoNothing_18060 - ; STAGE_BLUE_FIELD_TOP - padded_dab _LoadStageDataBlueFieldTop - ; STAGE_BLUE_FIELD_BOTTOM - padded_dab _LoadStageDataBlueFieldBottom - ; STAGE_GENGAR_BONUS - padded_dab _LoadStageDataGengarBonus - ; STAGE_GENGAR_BONUS - padded_dab _LoadStageDataGengarBonus - ; STAGE_MEWTWO_BONUS - padded_dab _LoadStageDataMewtwoBonus - ; STAGE_MEWTWO_BONUS - padded_dab _LoadStageDataMewtwoBonus - ; STAGE_MEOWTH_BONUS - padded_dab _LoadStageDataMeowthBonus - ; STAGE_MEOWTH_BONUS - padded_dab _LoadStageDataMeowthBonus - ; STAGE_DIGLETT_BONUS - padded_dab _LoadStageDataDiglettBonus - ; STAGE_DIGLETT_BONUS - padded_dab _LoadStageDataDiglettBonus - ; STAGE_SEEL_BONUS - padded_dab _LoadStageDataSeelBonus - ; STAGE_SEEL_BONUS - padded_dab _LoadStageDataSeelBonus diff --git a/engine/main/load_stage_data/load_unused_stage.asm b/engine/main/load_stage_data/load_unused_stage.asm deleted file mode 100755 index 8f4dadf..0000000 --- a/engine/main/load_stage_data/load_unused_stage.asm +++ /dev/null @@ -1,6 +0,0 @@ -; Unused -- load stage data for unused stage. -DoNothing_1805f: ; 0x1805f - ret - -DoNothing_18060: ; 0x18060 - ret diff --git a/engine/main/stage_init/init_blue_field.asm b/engine/main/stage_init/init_blue_field.asm deleted file mode 100755 index 62d2e8b..0000000 --- a/engine/main/stage_init/init_blue_field.asm +++ /dev/null @@ -1,55 +0,0 @@ -InitBlueField: ; 0x1c000 - ld a, [wd7c1] - and a - ret nz - xor a - ld hl, wScore + $5 - ld [hld], a - ld [hld], a - ld [hld], a - ld [hld], a - ld [hld], a - ld [hl], a - ld [wNumPartyMons], a - ld [wd49b], a - ld [wd4c9], a - ld [wBallType], a - ld [wd4c8], a - ld hl, wd624 - ld [hli], a - ld [hli], a - ld [hli], a - ld [wd7ac], a - ld [wd7be], a - ld [wCurrentMap], a ; PALLET_TOWN - ld a, $1 - ld [wd49d], a - ld [wd482], a - ld a, $2 - ld [wRightAlleyCount], a - ld a, $3 - ld [wd49e], a - ld [wd610], a - ld a, $2 - ld [wd498], a - ld [wd499], a - ld a, $80 - ld [wIndicatorStates], a - ld [wIndicatorStates + 3], a - ld a, $82 - ld [wIndicatorStates + 1], a - xor a - ld [wd648], a - ld [wd649], a - ld [wd64a], a - ld [wd643], a - ld [wd644], a - ld [wd645], a - ld [wd646], a - callba Start20SecondSaverTimer - callba Func_1d65f - ld a, $10 - call SetSongBank - ld de, $0001 - call PlaySong - ret diff --git a/engine/main/stage_init/init_diglett_bonus.asm b/engine/main/stage_init/init_diglett_bonus.asm deleted file mode 100755 index b68501c..0000000 --- a/engine/main/stage_init/init_diglett_bonus.asm +++ /dev/null @@ -1,34 +0,0 @@ -InitDiglettBonusStage: ; 0x199f2 - ld a, [wd7c1] - and a - ret nz - xor a - ld [wStageCollisionState], a - ld a, $1 - ld [wd7ac], a - ld a, [wBallType] - ld [wBallTypeBackup], a - xor a - ld [wd4c8], a - ld [wBallType], a - ld [wd49a], a - ; initialize all digletts to hiding - ld a, $1 ; hiding diglett state - ld hl, wDiglettStates - ld b, NUM_DIGLETTS -.initDiglettsLoop - ld [hli], a - dec b - jr nz, .initDiglettsLoop - ld a, $1 - ld [wDugtrioAnimationFrameCounter], a - ld a, $c - ld [wDugtrioAnimationFrame], a - xor a - ld [wDugtrioAnimationFrameIndex], a - ld [wDugrioState], a - ld a, $11 - call SetSongBank - ld de, $0001 - call PlaySong - ret diff --git a/engine/main/stage_init/init_gengar_bonus.asm b/engine/main/stage_init/init_gengar_bonus.asm deleted file mode 100755 index 4f7da3b..0000000 --- a/engine/main/stage_init/init_gengar_bonus.asm +++ /dev/null @@ -1,107 +0,0 @@ -InitGengarBonusStage: ; 0x18099 - ld a, [wd7c1] - and a - jr z, .asm_180ac - xor a - ld [wd674], a - ld a, $8 - ld [wd690], a - ld [wd6a1], a - ret -.asm_180ac - ld a, $1 - ld [wd7ac], a - ld a, [wBallType] - ld [wBallTypeBackup], a - xor a - ld [wd4c8], a - ld [wBallType], a - ld [wd49a], a - ld hl, GastlyInitialData - ld de, wd659 - call Copy9BytesToDE - call Copy9BytesToDE - call Copy9BytesToDE - ld hl, HaunterInitialData - ld de, wd67e - call Copy9BytesToDE - call Copy9BytesToDE - ld hl, GengarInitialData - ld de, wd698 - call Copy9BytesToDE - xor a - ld [wd67b], a - ld [wd695], a - ld hl, wd6a2 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [wd656], a - ld bc, $0130 ; 1 minute 30 seconds - callba StartTimer - ld a, $f - call SetSongBank - ld de, $0005 - call PlaySong - ret - -Copy9BytesToDE: ; 0x18112 - ld b, $3 -.loop - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - dec b - jr nz, .loop - ret - -GastlyInitialData: ; 0x18121 -; Gastly 1 - db $01, $01 - db $00, $00 ; wGastly1AnimationState - db $00 - db $00, $08 ; wGastly1XPos - db $00, $08 ; wGastly1YPos -; Gastly 2 - db $01, $01 - db $00, $00 ; wGastly2AnimationState - db $00 - db $00, $50 ; wGastly2XPos - db $00, $20 ; wGastly2YPos -; Gastly 3 - db $01, $01 - db $00, $00 ; wGastly2AnimationState - db $00 - db $00, $30 ; wGastly3XPos - db $00, $38 ; wGastly3YPos - -HaunterInitialData: ; 0x1813c -; Haunter 1 - db $00, $01 - db $00, $00 ; wHaunter1AnimationState - db $00 - db $00, $50 ; wHaunter1XPos - db $00, $10 ; wHaunter1YPos -; Haunter 2 - db $00, $01 - db $00, $00 ; wHaunter2AnimationState - db $00 - db $00, $10 ; wHaunter2XPos - db $00, $34 ; wHaunter2YPos - -GengarInitialData: ; 0x1814e - db $00, $01 - db $00, $00 ; wGengarAnimationState - db $04 - db $00, $38 ; wGengarXPos - db $00, $F8 ; wGengarYPos diff --git a/engine/main/stage_init/init_meowth_bonus.asm b/engine/main/stage_init/init_meowth_bonus.asm deleted file mode 100755 index c001b20..0000000 --- a/engine/main/stage_init/init_meowth_bonus.asm +++ /dev/null @@ -1,34 +0,0 @@ -InitMeowthBonusStage: ; 0x24000 - ld a, [wd7c1] - and a - ret nz - xor a - ld [wd4c8], a - ld [wStageCollisionState], a - ld a, [wBallType] - ld [wBallTypeBackup], a - xor a - ld [wd4c8], a - ld [wBallType], a - ld [wd49a], a - ld a, $1 - ld [wd7ac], a - ld a, $40 - ld [wMeowthXPosition], a - ld a, $20 - ld [wMeowthYPosition], a - ld a, $10 - ld [wMeowthAnimationFrameCounter], a - xor a - ld [wMeowthStageScore], a - ld [wd70b], a - ld [wMeowthStageBonusCounter], a - ld [wd713], a - ld [wd739], a - ld bc, $0100 ; 1 minute 0 seconds - callba StartTimer - ld a, $12 - call SetSongBank - ld de, $0004 - call PlaySong - ret diff --git a/engine/main/stage_init/init_mewtwo_bonus.asm b/engine/main/stage_init/init_mewtwo_bonus.asm deleted file mode 100755 index 44d7417..0000000 --- a/engine/main/stage_init/init_mewtwo_bonus.asm +++ /dev/null @@ -1,65 +0,0 @@ -InitMewtwoBonusStage: ; 0x1924f - ld a, [wd7c1] - and a - ret nz - xor a - ld [wStageCollisionState], a - ld a, $1 - ld [wd7ac], a - ld a, [wBallType] - ld [wBallTypeBackup], a - xor a - ld [wd4c8], a - ld [wBallType], a - ld [wd49a], a - ld hl, Data_192ab - ld de, wd6b6 - ld b, $c -.loop - 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 - dec b - jr nz, .loop - ld hl, Data_192db - ld de, wd6ac - ld b, $8 -.loop2 - ld a, [hli] - ld [de], a - inc de - dec b - jr nz, .loop2 - ld bc, $0200 ; 2 minutes 0 seconds - callba StartTimer - ld a, $12 - call SetSongBank - ld de, $0001 - call PlaySong - ret - -Data_192ab: - db $01, $01, $00, $00 - db $00, $62, $08, $00 - db $01, $01, $00, $00 - db $00, $55, $1F, $0C - db $01, $01, $00, $00 - db $00, $3B, $1F, $18 - db $01, $01, $00, $00 - db $00, $2E, $08, $24 - db $01, $01, $00, $00 - db $00, $3B, $F1, $30 - db $01, $01, $00, $00 - db $00, $55, $F1, $3C - -Data_192db: - db $01, $00, $00, $00, $00, $00, $00, $00 diff --git a/engine/main/stage_init/init_red_field.asm b/engine/main/stage_init/init_red_field.asm deleted file mode 100755 index d92d54e..0000000 --- a/engine/main/stage_init/init_red_field.asm +++ /dev/null @@ -1,49 +0,0 @@ -InitRedField: ; 0x30000 - ld a, [wd7c1] - and a - ret nz - xor a - ld hl, wScore + $5 - ld [hld], a - ld [hld], a - ld [hld], a - ld [hld], a - ld [hld], a - ld [hl], a - ld [wNumPartyMons], a - ld [wd49b], a - ld [wd4c9], a - ld [wBallType], a - ld [wd4c8], a - ld hl, wd624 - ld [hli], a - ld [hli], a - ld [hli], a - ld [wd7ac], a - ld [wd7be], a - ld [wCurrentMap], a ; PALLET_TOWN - ld a, $1 - ld [wd49d], a - ld [wd482], a - ld a, $2 - ld [wRightAlleyCount], a - ld a, $3 - ld [wd49e], a - ld [wd610], a - ld [wd498], a - ld [wd499], a - ld a, $4 - ld [wStageCollisionState], a - ld [wd7ad], a - ld a, $80 - ld [wIndicatorStates], a - ld [wIndicatorStates + 3], a - ld a, $82 - ld [wIndicatorStates + 1], a - callba Start20SecondSaverTimer - callba Func_16f95 - ld a, $f - call SetSongBank - ld de, $0001 - call PlaySong - ret diff --git a/engine/main/stage_init/init_seel_bonus.asm b/engine/main/stage_init/init_seel_bonus.asm deleted file mode 100755 index 50a25b8..0000000 --- a/engine/main/stage_init/init_seel_bonus.asm +++ /dev/null @@ -1,60 +0,0 @@ -InitSeelBonusStage: ; 0x25a7c - ld a, [wd7c1] - and a - ret nz - xor a - ld [wd4c8], a - ld [wStageCollisionState], a - ld a, $1 - ld [wd7ac], a - ld a, [wBallType] - ld [wBallTypeBackup], a - xor a - ld [wd4c8], a - ld [wBallType], a - ld [wd49a], a - ld hl, InitialSeelCoords - ld de, wd76d - call InitSeelPosition - ld de, wd777 - call InitSeelPosition - ld de, wd781 - call InitSeelPosition - xor a - ld [wd793], a - ld [wd791], a - ld [wd792], a - ld [wd739], a - ld bc, $0130 ; 1 minute 30 seconds - callba StartTimer - ld a, $11 - call SetSongBank - ld de, $0003 - call PlaySong - ret - -InitSeelPosition: ; 0x25ad8 - 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 - ret - -InitialSeelCoords: -; Seel 1 - db $00, $60 ; x coordinate - db $00, $00 ; y coordinate -; Seel 2 - db $00, $20 ; x coordinate - db $00, $1A ; y coordinate -; Seel 3 - db $00, $40 ; x coordinate - db $00, $34 ; y coordinate diff --git a/engine/main/stage_init/init_stages.asm b/engine/main/stage_init/init_stages.asm deleted file mode 100755 index 948919f..0000000 --- a/engine/main/stage_init/init_stages.asm +++ /dev/null @@ -1,81 +0,0 @@ -InitializeStage: ; 0x8311 - ld hl, wc000 - ld bc, $0a00 - call ClearData - ld a, $1 - ld [rVBK], a - ld a, [wd805] - and a - jr nz, .asm_8331 - ld hl, vBGWin - ld bc, $0400 - ld a, $0 - call Func_63e - jr .asm_833c - -.asm_8331 - ld hl, vBGWin - ld bc, $0400 - ld a, $8 - call Func_63e -.asm_833c - xor a - ld [rVBK], a - call ResetDataForStageInitialization - ld a, [wCurrentStage] - call CallInFollowingTable -CallTable_8348: ; 0x8348 - ; STAGE_RED_FIELD_TOP - padded_dab InitRedField - ; STAGE_RED_FIELD_BOTTOM - padded_dab InitRedField - padded_dab Func_18000 - padded_dab Func_18000 - ; STAGE_BLUE_FIELD_TOP - padded_dab InitBlueField - ; STAGE_BLUE_FIELD_BOTTOM - padded_dab InitBlueField - ; STAGE_GENGAR_BONUS - padded_dab InitGengarBonusStage - ; STAGE_GENGAR_BONUS - padded_dab InitGengarBonusStage - ; STAGE_MEWTWO_BONUS - padded_dab InitMewtwoBonusStage - ; STAGE_MEWTWO_BONUS - padded_dab InitMewtwoBonusStage - ; STAGE_MEOWTH_BONUS - padded_dab InitMeowthBonusStage - ; STAGE_MEOWTH_BONUS - padded_dab InitMeowthBonusStage - ; STAGE_DIGLETT_BONUS - padded_dab InitDiglettBonusStage - ; STAGE_DIGLETT_BONUS - padded_dab InitDiglettBonusStage - ; STAGE_SEEL_BONUS - padded_dab InitSeelBonusStage - ; STAGE_SEEL_BONUS - padded_dab InitSeelBonusStage - -ResetDataForStageInitialization: ; 0x8388 -; Resets some game data, depending on which stage is being initialized. - ld a, [wd7c1] - and a - jr z, .asm_8398 - ld hl, wSubTileBallXPos - ld bc, $0037 - call ClearData - ret -.asm_8398 - ld a, [wCurrentStage] - cp STAGE_BLUE_FIELD_BOTTOM + 1 - ret nc ; Check if bonus stage - ld hl, wPartyMons - ld bc, $0170 - call ClearData - ld hl, wd473 - ld bc, $0039 - call ClearData - ld hl, wd4ad - ld bc, $034d - call ClearData - ret diff --git a/engine/main/stage_init/init_unused_stage.asm b/engine/main/stage_init/init_unused_stage.asm deleted file mode 100755 index 4fac82d..0000000 --- a/engine/main/stage_init/init_unused_stage.asm +++ /dev/null @@ -1,32 +0,0 @@ -Func_18000: ; 0x18000 -; unused -- Stage init function for unused stage. - ld hl, wc000 - ld bc, $0a00 - call ClearData - ld a, $1 - ld [rVBK], a - hlCoord 0, 0, vBGWin - ld bc, $0400 - call ClearData - xor a - ld [rVBK], a - ld hl, wWhichVoltorb - ld bc, $032e - call ClearData - xor a - ld hl, wScore + $5 - ld [hld], a - ld [hld], a - ld [hld], a - ld [hld], a - ld [hld], a - ld [hl], a - ld [wNumPartyMons], a - ld [wd49b], a - ld [wd4c9], a - ld a, $1 - ld [wd49d], a - ld a, $3 - ld [wd49e], a - callba Start20SecondSaverTimer - ret diff --git a/engine/pinball_game.asm b/engine/pinball_game.asm new file mode 100755 index 0000000..8915818 --- /dev/null +++ b/engine/pinball_game.asm @@ -0,0 +1,9 @@ +HandlePinballGame: ; 0xd853 + ld a, [wScreenState] + rst JumpTable ; calls JumpToFuncInTable +PinballGameScreenFunctions: ; 0xd857 + dw GameScreenFunction_LoadGFX + dw GameScreenFunction_StartBall + dw GameScreenFunction_HandleBallPhysics + dw GameScreenFunction_HandleBallLoss + dw GameScreenFunction_EndBall diff --git a/engine/pinball_game/ball_init/ball_init.asm b/engine/pinball_game/ball_init/ball_init.asm new file mode 100755 index 0000000..e938748 --- /dev/null +++ b/engine/pinball_game/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/pinball_game/ball_init/ball_init_blue_field.asm b/engine/pinball_game/ball_init/ball_init_blue_field.asm new file mode 100755 index 0000000..6aa88c1 --- /dev/null +++ b/engine/pinball_game/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/pinball_game/ball_init/ball_init_diglett_bonus.asm b/engine/pinball_game/ball_init/ball_init_diglett_bonus.asm new file mode 100755 index 0000000..ef12950 --- /dev/null +++ b/engine/pinball_game/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/pinball_game/ball_init/ball_init_gengar_bonus.asm b/engine/pinball_game/ball_init/ball_init_gengar_bonus.asm new file mode 100755 index 0000000..065a1ca --- /dev/null +++ b/engine/pinball_game/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/pinball_game/ball_init/ball_init_meowth_bonus.asm b/engine/pinball_game/ball_init/ball_init_meowth_bonus.asm new file mode 100755 index 0000000..9747d42 --- /dev/null +++ b/engine/pinball_game/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/pinball_game/ball_init/ball_init_mewtwo_bonus.asm b/engine/pinball_game/ball_init/ball_init_mewtwo_bonus.asm new file mode 100755 index 0000000..c95d283 --- /dev/null +++ b/engine/pinball_game/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/pinball_game/ball_init/ball_init_red_field.asm b/engine/pinball_game/ball_init/ball_init_red_field.asm new file mode 100755 index 0000000..78c3c8f --- /dev/null +++ b/engine/pinball_game/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/pinball_game/ball_init/ball_init_seel_bonus.asm b/engine/pinball_game/ball_init/ball_init_seel_bonus.asm new file mode 100755 index 0000000..84343d1 --- /dev/null +++ b/engine/pinball_game/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/pinball_game/ball_init/ball_init_unused_stage.asm b/engine/pinball_game/ball_init/ball_init_unused_stage.asm new file mode 100755 index 0000000..656ce44 --- /dev/null +++ b/engine/pinball_game/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/engine/pinball_game/draw_sprites/draw_blue_field_sprites.asm b/engine/pinball_game/draw_sprites/draw_blue_field_sprites.asm new file mode 100755 index 0000000..756971a --- /dev/null +++ b/engine/pinball_game/draw_sprites/draw_blue_field_sprites.asm @@ -0,0 +1,401 @@ +DrawSpritesBlueFieldTop: ; 0x1f330 + ld bc, $7f00 + callba DrawTimer + call Func_1f395 + call Func_1f3e1 + call Func_1f408 + call Func_1f428 + callba DrawPinball + call Func_1f48f + call Func_1f4f8 + ret + +DrawSpritesBlueFieldBottom: ; 0x1f35a + ld bc, $7f00 + callba DrawTimer + callba DrawMonCaptureAnimation + call DrawAnimatedMon_BlueStage + call DrawPikachuSavers_BlueStage + callba DrawFlippers + callba DrawPinball + call Func_1f4a3 + call Func_1f509 + call Func_1f55e + ret + +Func_1f395: ; 0x1f395 + ld de, wd4cd + ld hl, Data_1f3cf + call Func_1f3ad + ld de, wd4d0 + ld hl, Data_1f3d5 + call Func_1f3ad + ld de, wd4d3 + ld hl, Data_1f3db + ; fall through + +Func_1f3ad: ; 0x1f3ad + ld a, [hSCX] + ld b, a + ld a, [hli] + sub b + ld b, a + ld a, [hSCY] + ld c, a + ld a, [hli] + sub c + ld c, a + ld a, [wd4d7] + sub [hl] + inc hl + jr z, .asm_1f3c4 + ld a, $0 + jr .asm_1f3c6 + +.asm_1f3c4 + ld a, $1 +.asm_1f3c6 + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call LoadOAMData + ret + +Data_1f3cf: + db $48, $2D ; background scroll offsets (x, y) + db $01 + db $E0, $E1, $E0 ; OAM ids + +Data_1f3d5: + db $33, $3E ; background scroll offsets (x, y) + db $00 + db $E0, $E1, $E0 ; OAM ids + +Data_1f3db: + db $5D, $3E ; background scroll offsets (x, y) + db $02 + db $E0, $E1, $E0 ; OAM ids + +Func_1f3e1: ; 0x1f3e1 + ld a, $8a + ld hl, hSCX + sub [hl] + ld b, a + ld a, $53 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd50a] + srl a + srl a + ld e, a + ld d, $0 + ld hl, OAMIds_1f402 + add hl, de + ld a, [hl] + call LoadOAMData + ret + +OAMIds_1f402: + db $E8, $E9, $EA, $EB, $EC, $ED + +Func_1f408: ; 0x1f408 + ld a, $18 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $5f + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd633] + ld e, a + ld d, $0 + ld hl, OAMIds_1f425 + add hl, de + ld a, [hl] + call LoadOAMData + ret + +OAMIds_1f425: + db $E2, $E3, $E4 + +Func_1f428: ; 0x1f428 + ld a, $70 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $59 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd638] + ld e, a + ld d, $0 + ld hl, OAMIds_1f445 + add hl, de + ld a, [hl] + call LoadOAMData + ret + +OAMIds_1f445: + db $E5, $E6, $E7 + +DrawPikachuSavers_BlueStage: ; 0x1f448 + ld a, [hSCX] + ld d, a + ld a, [hSCY] + ld e, a + ld a, [wd51d] + and a + ld a, [wd518] + jr z, .asm_1f473 + ld a, [wd51c] + and a + jr nz, .asm_1f469 + ld a, [hNumFramesDropped] + srl a + srl a + srl a + and $1 + jr .asm_1f473 + +.asm_1f469 + ld a, [wd4b4] + cp $50 + ld a, $1 + jr nc, .asm_1f473 + xor a +.asm_1f473 + sla a + ld c, a + ld b, $0 + ld hl, PikachuSaverOAMOffsets_BlueStage + add hl, bc + ld a, [hli] + sub d + ld b, a + ld a, [hli] + sub e + ld c, a + ld a, [wPikachuSaverAnimationFrame] + add $e + call LoadOAMData + ret + +PikachuSaverOAMOffsets_BlueStage: + dw $7E0F + dw $7E92 + +Func_1f48f: ; 0x1f48f + ld a, [wd551] + and a + ret nz + ld a, [hNumFramesDropped] + bit 4, a + ret z + ld de, wIndicatorStates + 5 + ld hl, OAMDataTable_1f4ce + ld b, $6 + jr asm_1f4b5 + +Func_1f4a3: ; 0x1f4a3 + ld a, [wd551] + and a + ret nz + ld a, [hNumFramesDropped] + bit 4, a + ret z + ld de, wIndicatorStates + 11 + ld hl, OAMDataTable_1f4e0 + ld b, $8 +asm_1f4b5: + push bc + ld a, [hSCX] + ld b, a + ld a, [hli] + sub b + ld b, a + ld a, [hSCY] + ld c, a + ld a, [hli] + sub c + ld c, a + ld a, [de] + and a + ld a, [hli] + call nz, LoadOAMData + pop bc + inc de + dec b + jr nz, asm_1f4b5 + ret + +OAMDataTable_1f4ce: ; 0x1f4ce + ; Each entry is: + ; [OAM x/y Offsets],[OAM Id] + db $0D, $37 + db $EE + + db $35, $0D + db $F1 + + db $8E, $4E + db $F4 + + db $36, $64 + db $EF + + db $4C, $49 + db $EE + + db $61, $64 + db $F0 + +OAMDataTable_1f4e0: ; 0x1f4e0 + ; Each entry is 3 bytes: + ; [OAM x/y Offsets],[OAM Id] + db $2D, $13 + db $32 + + db $6A, $13 + db $33 + + db $25, $2D + db $34 + + db $73, $2D + db $35 + + db $38, $14 + db $36 + + db $66, $14 + db $36 + + db $79, $40 + db $37 + + db $89, $40 + db $37 + +Func_1f4f8: ; 0x1f4f8 + ld a, [wd551] + and a + ret z + ld de, wd566 + ld hl, OAMOffsetsTable_1f53a + ld b, $c + ld c, $47 + jr asm_1f518 + +Func_1f509: ; 0x1f509 + ld a, [wd551] + and a + ret z + ld de, wd572 + ld hl, OAMOffsetsTable_1f552 + ld b, $6 + ld c, $40 +asm_1f518: ; 0x1f518 + push bc + ld a, [de] + add c + cp c + push af + ld a, [hSCX] + ld b, a + ld a, [hli] + sub b + ld b, a + ld a, [hSCY] + ld c, a + ld a, [hli] + sub c + ld c, a + ld a, [hNumFramesDropped] + and $e + jr nz, .asm_1f530 + dec c +.asm_1f530 + pop af + call nz, LoadOAMData + pop bc + inc de + dec b + jr nz, asm_1f518 + ret + +OAMOffsetsTable_1f53a: ; 0x1f53a +; OAM data x, y offsets + db $4C, $08 + db $2B, $12 + db $6D, $12 + db $15, $25 + db $82, $25 + db $0D, $3F + db $4C, $7F + db $8B, $3F + db $0A, $65 + db $36, $7F + db $61, $7F + db $8D, $65 + +OAMOffsetsTable_1f552: ; 0x1f552 +; OAM data x, y offsets + db $3B, $12 + db $5D, $12 + db $31, $16 + db $67, $16 + db $25, $2C + db $73, $2C + +Func_1f55e: ; 0x1f55e + ld a, [wd604] + and a + ret z + ld a, [wd606] + inc a + ld [wd606], a + ld a, $40 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $1 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd606] + srl a + srl a + srl a + and $3 + add $4f + cp $52 + call nz, LoadOAMData + ret + +DrawAnimatedMon_BlueStage: ; 0x1f58b + ld a, [wWildMonIsHittable] + and a + ret z + ld a, $50 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $3e + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd5bd] + ld e, a + ld d, $0 + ld hl, AnimatedMonOAMIds_BlueStage + add hl, de + ld a, [hl] + call LoadOAMData + ret + +AnimatedMonOAMIds_BlueStage: + db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31 diff --git a/engine/pinball_game/draw_sprites/draw_diglett_bonus_sprites.asm b/engine/pinball_game/draw_sprites/draw_diglett_bonus_sprites.asm new file mode 100755 index 0000000..a0dded5 --- /dev/null +++ b/engine/pinball_game/draw_sprites/draw_diglett_bonus_sprites.asm @@ -0,0 +1,28 @@ +DrawSpritesDiglettBonus: ; 0x1ac98 + callba DrawFlippers + callba DrawPinball + call Func_1acb0 + ret + +Func_1acb0: ; 0x1acb0 + ld a, $40 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $0 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wDugtrioAnimationFrame] + ld e, a + ld d, $0 + ld hl, OAMIds_1accf + add hl, de + ld a, [hl] + bit 7, a + call z, LoadOAMData2 + ret + +OAMIds_1accf: + db $46, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53 + db $FF diff --git a/engine/pinball_game/draw_sprites/draw_gengar_bonus_sprites.asm b/engine/pinball_game/draw_sprites/draw_gengar_bonus_sprites.asm new file mode 100755 index 0000000..212279d --- /dev/null +++ b/engine/pinball_game/draw_sprites/draw_gengar_bonus_sprites.asm @@ -0,0 +1,363 @@ +DrawSpritesGengarBonus: ; 0x18faf + ld bc, $7f00 + callba DrawTimer + call Func_19020 + call Func_190b9 + call Func_19185 + callba DrawFlippers + callba DrawPinball + ret + +Func_18fda: +; unused + ld a, [hNewlyPressedButtons] + bit 6, a + ret z + ld a, [wd659] + and a + jr z, .asm_18ff8 + ld a, $1 + ld [wd67e], a + ld [wd687], a + xor a + ld [wd659], a + ld [wd662], a + ld [wd66b], a + ret + +.asm_18ff8 + ld a, [wd67e] + and a + jr z, .asm_1900b + ld a, $1 + ld [wd698], a + xor a + ld [wd67e], a + ld [wd687], a + ret + +.asm_1900b + ld a, [wd698] + and a + ret z + ld a, $1 + ld [wd659], a + ld [wd662], a + ld [wd66b], a + xor a + ld [wd698], a + ret + +Func_19020: ; 0x19020 + ld de, wd659 + call Func_19033 + ld de, wd662 + call Func_19033 + ld de, wd66b + call Func_19033 + ret + +Func_19033: ; 0x19033 + ld a, [de] + and a + ret z +.asm_19036 + call Func_19070 + jr nc, .asm_19042 + ld a, [rLCDC] + bit 7, a + jr z, .asm_19036 + ret + +.asm_19042 + inc de + inc de + inc de + inc de + inc de + inc de + ld a, [de] + ld hl, hSCX + sub [hl] + ld b, a + inc de + inc de + ld a, [de] + ld hl, hSCY + sub [hl] + ld c, a + dec de + dec de + dec de + dec de + dec de + dec de + ld a, [de] + ld e, a + ld d, $0 + ld hl, OAMIds_1906b + add hl, de + ld a, [hl] + cp $ff + call nz, LoadOAMData2 + ret + +OAMIds_1906b: + db $00, $01, $02, $03 + db $FF + +Func_19070: ; 0x19070 + ld a, [wd674] + and a + ret z + push de + dec a + ld [wd674], a + sla a + sla a + ld c, a + ld b, $0 + ld hl, GastlyVideoData_190a9 + add hl, bc + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a + ld a, Bank(GengarBonusGastlyGfx) + ld bc, $0060 + call LoadOrCopyVRAMData + ld a, $8 + ld [wd690], a + ld [wd6a1], a + xor a + ld [wd67e], a + ld [wd687], a + ld [wd698], a + pop de + scf + ret + +GastlyVideoData_190a9: + dw vTilesSH tile $10, GengarBonusGastlyGfx + dw vTilesSH tile $16, GengarBonusGastlyGfx + $60 + dw vTilesSH tile $1c, GengarBonusGastlyGfx + $c0 + dw vTilesSH tile $22, GengarBonusGastlyGfx + $120 + +Func_190b9: ; 0x190b9 + ld de, wd67e + call Func_190c6 + ld de, wd687 + call Func_190c6 + ret + +Func_190c6: ; 0x190c6 + ld a, [de] + and a + ret z +.asm_190c9 + call Func_19104 + jr nc, .asm_190d5 + ld a, [rLCDC] + bit 7, a + jr z, .asm_190c9 + ret + +.asm_190d5 + inc de + inc de + inc de + inc de + inc de + inc de + ld a, [de] + ld hl, hSCX + sub [hl] + ld b, a + inc de + inc de + ld a, [de] + ld hl, hSCY + sub [hl] + ld c, a + dec de + dec de + dec de + dec de + dec de + dec de + ld a, [de] + ld e, a + ld d, $0 + ld hl, OAMIds_190fe + add hl, de + ld a, [hl] + cp $ff + call nz, LoadOAMData2 + ret + +OAMIds_190fe: + db $04, $05, $06, $07, $08 + db $FF + +Func_19104: ; 0x19104 + ld a, [wd690] + and a + ret z + push de + dec a + ld [wd690], a + sla a + sla a + sla a + ld c, a + ld b, $0 + ld hl, GengarBonusStageHaunterGfxTable + add hl, bc + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a + ld a, Bank(GengarBonusHaunterGfx) + call LoadOrCopyVRAMData + ld a, $4 + ld [wd674], a + ld a, $8 + ld [wd6a1], a + xor a + ld [wd659], a + ld [wd662], a + ld [wd66b], a + ld [wd698], a + pop de + scf + ret + +GengarBonusStageHaunterGfxTable: ; 0x19145 +; Graphics data for Haunter. +; First word: length in bytes +; Second word: destination VRAM address +; Third word: graphics data +; Fourth word: unused + dw $60, vTilesSH tile $10, GengarBonusHaunterGfx, $0000 + dw $60, vTilesSH tile $16, GengarBonusHaunterGfx + $60, $0000 + dw $60, vTilesSH tile $1c, GengarBonusHaunterGfx + $c0, $0000 + dw $60, vTilesSH tile $22, GengarBonusHaunterGfx + $120, $0000 + dw $20, vTilesSH tile $28, GengarBonusHaunterGfx + $180, $0000 + dw $40, vTilesOB tile $1a, GengarBonusHaunterGfx + $1a0, $0000 + dw $60, vTilesOB tile $1e, GengarBonusHaunterGfx + $1e0, $0000 + dw $60, vTilesOB tile $24, GengarBonusHaunterGfx + $240, $0000 + +Func_19185: ; 0x19185 + ld de, wd698 + call Func_1918c + ret + +Func_1918c: ; 0x1918c + ld a, [de] + and a + ret z +.asm_1918f + call Func_191cb + jr nc, .asm_1919b + ld a, [rLCDC] + bit 7, a + jr z, .asm_1918f + ret + +.asm_1919b + inc de + inc de + inc de + inc de + inc de + inc de + ld a, [de] + ld hl, hSCX + sub [hl] + ld b, a + inc de + inc de + ld a, [de] + ld hl, hSCY + sub [hl] + ld c, a + dec de + dec de + dec de + dec de + dec de + dec de + ld a, [de] + ld e, a + ld d, $0 + ld hl, OAMIds_191c4 + add hl, de + ld a, [hl] + cp $ff + call nz, LoadOAMData2 + ret + +OAMIds_191c4: + db $09, $0A, $0B, $0C, $0D, $0E + db $FF + +Func_191cb: ; 0x191cb + ld a, [wd6a1] + and a + ret z + push de + dec a + ld [wd6a1], a + sla a + sla a + sla a + ld c, a + ld b, $0 + ld hl, GengarBonusStageGengarGfxTable + add hl, bc + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a + ld a, $26 + call LoadOrCopyVRAMData + ld a, $4 + ld [wd674], a + ld a, $8 + ld [wd690], a + xor a + ld [wd659], a + ld [wd662], a + ld [wd66b], a + ld [wd67e], a + ld [wd687], a + pop de + scf + ret + +GengarBonusStageGengarGfxTable: + dw $60, vTilesSH tile $10, GengarBonusGengarGfx, $0000 + dw $60, vTilesSH tile $16, GengarBonusGengarGfx + $60, $0000 + dw $60, vTilesSH tile $1c, GengarBonusGengarGfx + $c0, $0000 + dw $60, vTilesSH tile $22, GengarBonusGengarGfx + $120, $0000 + dw $20, vTilesSH tile $28, GengarBonusGengarGfx + $180, $0000 + dw $40, vTilesOB tile $1a, GengarBonusGengarGfx + $1a0, $0000 + dw $60, vTilesOB tile $1e, GengarBonusGengarGfx + $1e0, $0000 + dw $60, vTilesOB tile $24, GengarBonusGengarGfx + $240, $0000 diff --git a/engine/pinball_game/draw_sprites/draw_meowth_bonus_sprites.asm b/engine/pinball_game/draw_sprites/draw_meowth_bonus_sprites.asm new file mode 100755 index 0000000..5d54a08 --- /dev/null +++ b/engine/pinball_game/draw_sprites/draw_meowth_bonus_sprites.asm @@ -0,0 +1,305 @@ +DrawSpritesMeowthBonus: ; 0x2583b + ld bc, $7f65 + callba DrawTimer + callba DrawFlippers + call Func_259fe + call Func_25895 + call Func_2595e + call Func_2586c + callba DrawPinball + call Func_25a39 + ret + +Func_2586c: ; 0x2586c + ld a, [wMeowthXPosition] + ld hl, hSCX + sub [hl] + ld b, a + ld a, [wMeowthYPosition] + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wMeowthAnimationFrame] + ld e, a + ld d, $0 + ld hl, OAMIds_2588b + add hl, de + ld a, [hl] + call LoadOAMData2 + ret + +OAMIds_2588b: + db $21, $22, $23, $24, $25, $26, $27, $28, $33, $34 + +Func_25895: ; 0x25895 + ld a, [wd714] + cp $b + jr nz, .asm_258a0 + xor a + ld [wd714], a +.asm_258a0 + ld a, [wd715] + cp $b + jr nz, .asm_258ab + xor a + ld [wd715], a +.asm_258ab + ld a, [wd716] + cp $b + jr nz, .asm_258b6 + xor a + ld [wd716], a +.asm_258b6 + ld a, [wd71a] + ld hl, hSCX + sub [hl] + ld b, a + ld a, [wd727] + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd717] + sla a + ld e, a + ld d, $0 + ld hl, OAMPointers_25935 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wd714] + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call LoadOAMData2 + ld a, [wd71b] + ld hl, hSCX + sub [hl] + ld b, a + ld a, [wd728] + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd718] + sla a + ld e, a + ld d, $0 + ld hl, OAMPointers_25935 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wd715] + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call LoadOAMData2 + ld a, [wd71c] + ld hl, hSCX + sub [hl] + ld b, a + ld a, [wd729] + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd719] + sla a + ld e, a + ld d, $0 + ld hl, OAMPointers_25935 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wd716] + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call LoadOAMData2 + ret + +OAMPointers_25935: + dw OAMIds_2593d + dw OAMIds_2593d + dw OAMIds_25948 + dw OAMIds_25953 + +OAMIds_2593d: + db $29, $29, $29, $29, $2A, $2A, $2A, $2A, $2A, $2A, $2A + +OAMIds_25948: + db $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2C, $2C, $2C, $2C + +OAMIds_25953: + db $2D, $32, $31, $30, $2F, $2E, $2F, $30, $31, $32, $32 + +Func_2595e: ; 0x2595e + ld a, [wd71e] + cp $b + jr nz, .asm_25969 + xor a + ld [wd71e], a +.asm_25969 + ld a, [wd71f] + cp $b + jr nz, .asm_25974 + xor a + ld [wd71f], a +.asm_25974 + ld a, [wd720] + cp $b + jr nz, .asm_2597f + xor a + ld [wd720], a +.asm_2597f + ld a, [wd724] + ld hl, hSCX + sub [hl] + ld b, a + ld a, [wd731] + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd721] + sla a + ld e, a + ld d, $0 + ld hl, OAMPointers_25935 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wd71e] + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call LoadOAMData2 + ld a, [wd725] + ld hl, hSCX + sub [hl] + ld b, a + ld a, [wd732] + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd722] + sla a + ld e, a + ld d, $0 + ld hl, OAMPointers_25935 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wd71f] + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call LoadOAMData2 + ld a, [wd726] + ld hl, hSCX + sub [hl] + ld b, a + ld a, [wd733] + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd723] + sla a + ld e, a + ld d, $0 + ld hl, OAMPointers_25935 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wd720] + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call LoadOAMData2 + ret + +Func_259fe: ; 0x259fe + ld a, [wd795] + and a + ret z + ld de, wd79c + ld a, [de] + ld hl, hSCX + sub [hl] + ld b, a + inc de + inc de + ld a, [de] + ld hl, hSCY + sub [hl] + ld c, a + dec de + dec de + dec de + dec de + dec de + dec de + ld a, [de] + ld e, a + ld d, $0 + ld hl, OAMIds_25a29 + add hl, de + ld a, [hl] + cp $ff + call nz, LoadOAMData2 + ret + +OAMIds_25a29: + db $35, $36, $37, $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $42, $43 + db $FF + +Func_25a39: ; 0x25a39 + ld a, [wd64e] + and a + ret z + ld a, [wd652] + ld hl, hSCX + sub [hl] + ld b, a + xor a + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd64f] + cp $a + jr c, .asm_25a58 + ld de, $0000 + jr .asm_25a5b + +.asm_25a58 + ld de, $0001 +.asm_25a5b + ld hl, OAMIds_25a7a + add hl, de + ld a, [hl] + call LoadOAMData2 + ld hl, wd64f + inc [hl] + ld a, [hl] + cp $14 + ret c + ld [hl], $0 + ld hl, wd650 + inc [hl] + ld a, [hl] + cp $a + ret nz + xor a + ld [wd64e], a + ret + +OAMIds_25a7a: ; 0x25a7a + db $44, $45 diff --git a/engine/pinball_game/draw_sprites/draw_mewtwo_bonus_sprites.asm b/engine/pinball_game/draw_sprites/draw_mewtwo_bonus_sprites.asm new file mode 100755 index 0000000..a4397a0 --- /dev/null +++ b/engine/pinball_game/draw_sprites/draw_mewtwo_bonus_sprites.asm @@ -0,0 +1,81 @@ +DrawSpritesMewtwoBonus: ; 0x1994e + ld bc, $7f65 + callba DrawTimer + call Func_1999d + callba DrawFlippers + callba DrawPinball + call Func_19976 + ret + +Func_19976: ; 0x19976 + ld a, $40 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $0 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd6ad] + ld e, a + ld d, $0 + ld hl, OAMIds_19995 + add hl, de + ld a, [hl] + cp $ff + call nz, LoadOAMData2 + ret + +OAMIds_19995: + db $0F, $10, $11, $12, $17, $18, $19 + db $FF + +Func_1999d: ; 0x1999d + ld de, wd6b6 + call Func_199be + ld de, wd6be + call Func_199be + ld de, wd6c6 + call Func_199be + ld de, wd6ce + call Func_199be + ld de, wd6d6 + call Func_199be + ld de, wd6de + ; fall through + +Func_199be: ; 0x199be + ld a, [de] + and a + ret z + inc de + inc de + inc de + inc de + inc de + ld a, [de] + ld hl, hSCX + sub [hl] + ld b, a + inc de + ld a, [de] + ld hl, hSCY + sub [hl] + ld c, a + dec de + dec de + dec de + dec de + ld a, [de] + ld e, a + ld d, $0 + ld hl, OAMIds_199e6 + add hl, de + ld a, [hl] + cp $ff + call nz, LoadOAMData2 + ret + +OAMIds_199e6: + db $13, $14, $15, $16, $1A, $1B, $1C, $1D, $1E, $1F, $20 + db $FF diff --git a/engine/pinball_game/draw_sprites/draw_red_field_sprites.asm b/engine/pinball_game/draw_sprites/draw_red_field_sprites.asm new file mode 100755 index 0000000..d56e840 --- /dev/null +++ b/engine/pinball_game/draw_sprites/draw_red_field_sprites.asm @@ -0,0 +1,759 @@ +DrawSpritesRedFieldTop: ; 0x1755c + ld bc, $7f00 + call DrawTimer + call Func_17cc4 + call Func_17d34 + call Func_17d59 + call Func_17d7a + call Func_17d92 + call Func_17de1 + call DrawPinball + call Func_17efb + call Func_17f64 + ret + +DrawSpritesRedFieldBottom: ; 0x1757e + ld bc, $7f00 + call DrawTimer + call DrawMonCaptureAnimation + call DrawAnimatedMon_RedStage + call DrawPikachuSavers_RedStage + callba DrawFlippers + call DrawPinball + call Func_17f0f + call Func_17f75 + call Func_17fca + ret + +DrawTimer: ; 0x175a4 + ld a, [wd57d] + and a + ret z + ld a, [hGameBoyColorFlag] + and a + jr nz, DrawTimer_GameBoyColor + ld a, [wd580] + and a + ret z + ld a, [wd581] + and a + jr z, .DrawTimer_GameBoy + dec a + ld [wd581], a + ret + +.DrawTimer_GameBoy + call Func_1762f + ld hl, wTimerDigits + ld a, [wTimerMinutes] + and $f + call LoadTimerDigitTiles + ld a, [wTimerSeconds] + swap a + and $f + call LoadTimerDigitTiles + ld a, [wTimerSeconds] + and $f + call LoadTimerDigitTiles + ld d, $0 + ld hl, TimerOAMIds + add hl, de + ld a, [hli] + call DrawTimerDigit + ld a, [hli] + call DrawTimerDigit + ld a, [hli] + call DrawTimerDigit + ld a, [hli] + call DrawTimerDigit + ret + +DrawTimer_GameBoyColor: ; 0x175f5 +; Loads the OAM data for the timer in the top-right corner of the screen. + ld a, [wTimerMinutes] + and $f + call DrawTimerDigit_GameBoyColor + ld a, $a ; colon + call DrawTimerDigit_GameBoyColor + ld a, [wTimerSeconds] + swap a + and $f + call DrawTimerDigit_GameBoyColor ; tens digit of the minutes + ld a, [wTimerSeconds] + and $f + call DrawTimerDigit_GameBoyColor ; ones digit of the minutes + ret + +TimerOAMIds: + db $d7, $da, $d8, $d9 + db $dc, $df, $dd, $de + db $dc, $db, $dd, $de + db $f5, $f8, $f6, $f7 + +DrawTimerDigit_GameBoyColor: ; 0x17625 + add $b1 ; the timer digits' OAM ids start at $b1 +DrawTimerDigit: ; 0x17627 + call LoadOAMData + ld a, b + add $8 + ld b, a + ret + +Func_1762f: ; 0x1762f + lb de, $60, $0c + ld a, [wCurrentStage] + cp $6 + ret nc + lb de, $00, $00 + bit 0, a + ret z + lb de, $30, $04 + ld a, [wInSpecialMode] + and a + ret z + ld a, [wSpecialMode] + and a + ret nz + lb de, $30, $08 + ret + +LoadTimerDigitTiles: ; 0x1764f + push bc + push de + cp [hl] + jr z, .skip + push af + push hl + add d + call Func_17665 + pop hl + pop af + ld [hl], a +.skip + inc hl + pop de + ld a, d + add $10 + ld d, a + pop bc + ret + +Func_17665: ; 0x17665 + ld c, a + ld b, $0 + sla c + rl b + ld hl, TimerDigitsTileData + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, Bank(TimerDigitsTileData) + call Func_10aa + ret + +INCLUDE "data/timer_digits_tiledata.asm" + +DrawMonCaptureAnimation: ; 0x17c67 + ld a, [wCapturingMon] + and a + ret z + ld a, $50 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $38 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wBallCaptureAnimationFrame] + ld e, a + ld d, $0 + ld hl, BallCaptureAnimationOAMIds + add hl, de + ld a, [hl] + call LoadOAMData + ret + +BallCaptureAnimationOAMIds: + db $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $21, $22, $23, $24, $25 + +DrawAnimatedMon_RedStage: ; 0x17c96 + ld a, [wWildMonIsHittable] + and a + ret z + ld a, $50 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $3e + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd5bd] + ld e, a + ld d, $0 + ld hl, AnimatedMonOAMIds_RedStage + add hl, de + ld a, [hl] + call LoadOAMData + ret + +AnimatedMonOAMIds_RedStage: + db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31 + +Func_17cc4: ; 0x17cc4 + ld de, wd4cd + ld hl, OAMData_17d15 + call Func_17cdc + ld de, wd4d0 + ld hl, OAMData_17d1b + call Func_17cdc + ld de, wd4d3 + ld hl, OAMData_17d21 + ; fall through + +Func_17cdc: ; 0x17cdc + push hl + ld hl, AnimationData_17d27 + call UpdateAnimation + ld h, d + ld l, e + ld a, [hl] + and a + jr nz, .asm_17cf6 + call GenRandom + and $7 + add $1e + ld [hli], a + ld a, $1 + ld [hli], a + xor a + ld [hl], a +.asm_17cf6 + pop hl + inc de + ld a, [hSCX] + ld b, a + ld a, [hli] + sub b + ld b, a + ld a, [hSCY] + ld c, a + ld a, [hli] + sub c + ld c, a + ld a, [wd4d7] + sub [hl] + inc hl + jr z, .asm_17d0c + ld a, [de] +.asm_17d0c + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call LoadOAMData + ret + +OAMData_17d15: + db $3A, $4E ; x, y offsets + db $00 ; ??? + db $BD, $BC, $CE ; oam ids + +OAMData_17d1b: + db $53, $44 ; x, y offsets + db $01 ; ??? + db $BD, $BC, $CD ; oam ids + +OAMData_17d21: + db $4D, $60 ; x, y offsets + db $02 ; ??? + db $BD, $BC, $CF ; oam ids + +AnimationData_17d27: +; Each entry is [duration][OAM id] + db $1E, $01 + db $02, $02 + db $03, $01 + db $02, $02 + db $03, $01 + db $02, $02 + db $00 ; terminator + +Func_17d34: ; 0x17d34 + ld a, $0 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $10 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wStageCollisionState] + ld e, a + ld d, $0 + ld hl, OAMIds_17d51 + add hl, de + ld a, [hl] + call LoadOAMData + ret + +OAMIds_17d51: + db $C9 + db $C9 + db $C9 + db $C9 + db $C8 + db $C8 + db $CA + db $CA + +Func_17d59: ; 0x17d59 + ld a, $74 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $52 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wBellsproutAnimationFrame] + ld e, a + ld d, $0 + ld hl, BellsproutAnimationOAMIds + add hl, de + ld a, [hl] + call LoadOAMData + ret + +BellsproutAnimationOAMIds: ; 0x17d76 + db $BE + db $BF + db $C0 + db $C1 + +Func_17d7a: ; 0x17d7a + ld a, [hGameBoyColorFlag] + and a + ret z + ld a, $67 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $54 + ld hl, hSCY + sub [hl] + ld c, a + ld a, $cc + call LoadOAMData + ret + +Func_17d92: ; 0x17d92 + ld a, [hGameBoyColorFlag] + and a + ret z + ld hl, AnimationData_17dd0 + ld de, wd504 + call UpdateAnimation + ld a, [wd504] + and a + jr nz, .asm_17db1 + ld a, $13 + ld [wd504], a + xor a + ld [wd505], a + ld [wd506], a +.asm_17db1 + ld a, $2b + ld hl, hSCX + sub [hl] + ld b, a + ld a, $69 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd505] + ld e, a + ld d, $0 + ld hl, OAMIds_17dce + add hl, de + ld a, [hl] + call LoadOAMData + ret + +OAMIds_17dce: ; 0x17dce + db $CB + db $D0 + +AnimationData_17dd0: +; Each entry is [duration][OAM id] + db $14, $00 + db $13, $01 + db $15, $00 + db $12, $01 + db $14, $00 + db $13, $01 + db $16, $00 + db $13, $01 + db $0 ; terminator + +Func_17de1: ; 0x17de1 + ld a, $88 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $5a + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd50a] + srl a + srl a + ld e, a + ld d, $0 + ld hl, OAMIds_17e02 + add hl, de + ld a, [hl] + call LoadOAMData + ret + +OAMIds_17e02: ; 0x17e02 + db $C2 + db $C3 + db $C4 + db $C5 + db $C6 + db $C7 + +DrawPikachuSavers_RedStage: ; 0x17e08 + ld a, [hSCX] + ld d, a + ld a, [hSCY] + ld e, a + ld a, [wd51d] + and a + ld a, [wd518] + jr z, .asm_17e33 + ld a, [wd51c] + and a + jr nz, .asm_17e29 + ld a, [hNumFramesDropped] + srl a + srl a + srl a + and $1 + jr .asm_17e33 + +.asm_17e29 + ld a, [wd4b4] + cp $50 + ld a, $1 + jr nc, .asm_17e33 + xor a +.asm_17e33 + sla a + ld c, a + ld b, $0 + ld hl, PikachuSaverOAMOffsets_RedStage + add hl, bc + ld a, [hli] + sub d + ld b, a + ld a, [hli] + sub e + ld c, a + ld a, [wPikachuSaverAnimationFrame] + add $e + call LoadOAMData + ret + +PikachuSaverOAMOffsets_RedStage: + dw $7E0F + dw $7E92 + +Func_17e4f: ; 0x17e4f +; unused + ld hl, UnusedData_7e55 + jp Func_17e5e + +UnusedData_7e55: ; 0x17e55 + db $00, $2B, $69, $CB, $00, $67, $54, $CC + db $FF + +Func_17e5e: ; 0x17e5e +; unused + ld a, [hGameBoyColorFlag] + ld e, a + ld a, [hSCX] + ld d, a +.asm_17e64 + ld a, [hli] + cp $ff + ret z + or e + jr nz, .asm_17e70 + inc hl + inc hl + inc hl + jr .asm_17e64 +.asm_17e70 + ld a, [hli] + sub d + ld b, a + ld a, [hSCY] + ld c, a + ld a, [hli] + sub c + ld c, a + ld a, [hli] + bit 0, e + call nz, LoadOAMData + jr .asm_17e64 + +DrawPinball: ; 0x17e81 + ld a, [wd548] + and a + ret z + ld hl, wBallSpin + ld a, [wBallRotation] + add [hl] + ld [wBallRotation], a + ld a, [wBallXPos + 1] + inc a + ld hl, hSCX + sub [hl] + ld b, a + ld a, [wBallYPos + 1] + inc a + sub $10 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wBallRotation] + srl a + srl a + srl a ; divide wBallRotation by 8 because + srl a ; there are 8 frames of the ball spinning + and $7 + add $0 + call LoadOAMData + ld a, [hGameBoyColorFlag] + and a + ret nz + ld a, [hGameBoyColorFlag] + and a + ret nz + ld a, [hSGBFlag] + and a + ret nz + ld a, [wd4c5] + inc a + ld hl, hSCX + sub [hl] + ld b, a + ld a, [wd4c6] + inc a + sub $10 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd4c7] + srl a + srl a + srl a + srl a + and $7 + add $0 + call LoadOAMData + ld a, [wBallXPos + 1] + ld [wd4c5], a + ld a, [wBallYPos + 1] + ld [wd4c6], a + ld a, [wBallRotation] + ld [wd4c7], a + ret + +Func_17efb: ; 0x17efb + ld a, [wd551] + and a + ret nz + ld a, [hNumFramesDropped] + bit 4, a + ret z + ld de, wIndicatorStates + 5 + ld hl, OAMData_17f3a + ld b, $6 + jr asm_17f21 + +Func_17f0f: ; 0x17f0f + ld a, [wd551] + and a + ret nz + ld a, [hNumFramesDropped] + bit 4, a + ret z + ld de, wIndicatorStates + 11 + ld hl, OAMData_17f4c + ld b, $8 +asm_17f21: ; 0x17f21 + push bc + ld a, [hSCX] + ld b, a + ld a, [hli] + sub b + ld b, a + ld a, [hSCY] + ld c, a + ld a, [hli] + sub c + ld c, a + ld a, [de] + and a + ld a, [hli] + call nz, LoadOAMData + pop bc + inc de + dec b + jr nz, asm_17f21 + ret + +OAMData_17f3a: + db $0D, $37 ; x, y offsets + db $D1 ; oam id + + db $46, $22 ; x, y offsets + db $D6 ; oam id + + db $8A, $4A ; x, y offsets + db $D2 ; oam id + + db $41, $81 ; x, y offsets + db $D3 ; oam id + + db $3D, $65 ; x, y offsets + db $D5 ; oam id + + db $73, $74 ; x, y offsets + db $D4 ; oam id + +OAMData_17f4c: + db $2D, $13 ; x, y offsets + db $32 ; oam id + + db $6A, $13 ; x, y offsets + db $33 ; oam id + + db $25, $2D ; x, y offsets + db $34 ; oam id + + db $73, $2D ; x, y offsets + db $35 ; oam id + + db $0F, $40 ; x, y offsets + db $36 ; oam id + + db $1F, $40 ; x, y offsets + db $36 ; oam id + + db $79, $40 ; x, y offsets + db $37 ; oam id + + db $89, $40 ; x, y offsets + db $37 ; oam id + +Func_17f64: ; 0x17f64 + ld a, [wd551] + and a + ret z + ld de, wd566 + ld hl, OAMOffsets_17fa6 + ld b, $c + ld c, $39 + jr asm_17f84 + +Func_17f75: ; 0x17f75 + ld a, [wd551] + and a + ret z + ld de, wd572 + ld hl, OAMOffsets_17fbe + ld b, $6 + ld c, $40 +asm_17f84: ; 0x17f84 + push bc + ld a, [de] + add c + cp c + push af + ld a, [hSCX] + ld b, a + ld a, [hli] + sub b + ld b, a + ld a, [hSCY] + ld c, a + ld a, [hli] + sub c + ld c, a + ld a, [hNumFramesDropped] + and $e + jr nz, .asm_17f9c + dec c +.asm_17f9c + pop af + call nz, LoadOAMData + pop bc + inc de + dec b + jr nz, asm_17f84 + ret + +OAMOffsets_17fa6: +; x, y offsets + db $4C, $0C + db $32, $12 + db $66, $12 + db $19, $25 + db $7F, $25 + db $1E, $36 + db $7F, $36 + db $0E, $65 + db $8B, $65 + db $49, $7A + db $59, $7A + db $71, $7A + +OAMOffsets_17fbe: +; x, y offsets + db $3D, $13 + db $5B, $13 + db $31, $17 + db $67, $17 + db $2E, $2C + db $6A, $2C + +Func_17fca: ; 0x17fca + ld a, [wd604] + and a + ret z + ld a, [wd606] + inc a + ld [wd606], a + ld a, $40 + ld hl, hSCX + sub [hl] + ld b, a + ld a, $1 + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd606] + srl a + srl a + srl a + and $3 + add $4f + cp $52 + call nz, LoadOAMData + ret diff --git a/engine/pinball_game/draw_sprites/draw_seel_bonus_sprites.asm b/engine/pinball_game/draw_sprites/draw_seel_bonus_sprites.asm new file mode 100755 index 0000000..261de5b --- /dev/null +++ b/engine/pinball_game/draw_sprites/draw_seel_bonus_sprites.asm @@ -0,0 +1,129 @@ +DrawSpritesSeelBonus: ; 0x26b7e + ld bc, $7f65 + callba DrawTimer + call Func_26bf7 + callba DrawFlippers + callba DrawPinball + call Func_26ba9 + call Func_26c3c + ret + +Func_26ba9: ; 0x26ba9 + ld de, wd76e + call Func_26bbc + ld de, wd778 + call Func_26bbc + ld de, wd782 + call Func_26bbc + ret + +Func_26bbc: ; 0x26bbc + ld a, [de] + ld hl, hSCX + sub [hl] + ld b, a + inc de + inc de + ld a, [de] + ld hl, hSCY + sub [hl] + ld c, a + dec de + dec de + dec de + dec de + dec de + dec de + ld a, [de] + ld e, a + ld d, $0 + ld hl, OAMIds_26bdf + add hl, de + ld a, [hl] + cp $ff + call nz, LoadOAMData2 + ret + +OAMIds_26bdf: + db $54, $55, $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E, $5F, $60, $61, $62, $63 + db $64, $65, $66, $67, $68, $69, $6A + db $FF + +Func_26bf7: ; 0x26bf7: ; 0x26bf7 + ld a, [wd795] + cp $0 + ret z + ld de, wd79c + ld a, [de] + ld hl, hSCX + sub [hl] + ld b, a + inc de + inc de + ld a, [de] + ld hl, hSCY + sub [hl] + ld c, a + dec de + dec de + dec de + dec de + dec de + dec de + ld a, [de] + ld e, a + ld d, $0 + ld hl, OAMIds_26c23 + add hl, de + ld a, [hl] + cp $ff + call nz, LoadOAMData2 + ret + +OAMIds_26c23: + db $6B, $6C, $6D, $6E, $6F, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $7A + db $7B, $7C, $7D, $7E, $7F, $80, $81, $82 + db $FF + +Func_26c3c: ; 0x26c3c + ld a, [wd64e] + and a + ret z + ld a, [wd652] + ld hl, hSCX + sub [hl] + ld b, a + xor a + ld hl, hSCY + sub [hl] + ld c, a + ld a, [wd64f] + cp $a + jr c, .asm_26c5b + ld de, $0000 + jr .asm_26c5e + +.asm_26c5b + ld de, $0001 +.asm_26c5e + ld hl, OAMIds_26c7d + add hl, de + ld a, [hl] + call LoadOAMData2 + ld hl, wd64f + inc [hl] + ld a, [hl] + cp $14 + ret c + ld [hl], $0 + ld hl, wd650 + inc [hl] + ld a, [hl] + cp $a + ret nz + xor a + ld [wd64e], a + ret + +OAMIds_26c7d: + db $83, $84 diff --git a/engine/pinball_game/draw_sprites/draw_sprites.asm b/engine/pinball_game/draw_sprites/draw_sprites.asm new file mode 100755 index 0000000..8e653bf --- /dev/null +++ b/engine/pinball_game/draw_sprites/draw_sprites.asm @@ -0,0 +1,35 @@ +DrawSpritesForStage: ; 0x84b7 +; Draw sprites (OAM data) for the current stage. + ld a, [wCurrentStage] + call CallInFollowingTable +CallTable_84bd: ; 0x84bd + ; STAGE_RED_FIELD_TOP + padded_dab DrawSpritesRedFieldTop + ; STAGE_RED_FIELD_BOTTOM + padded_dab DrawSpritesRedFieldBottom + padded_dab Func_18079 + padded_dab Func_18084 + ; STAGE_BLUE_FIELD_TOP + padded_dab DrawSpritesBlueFieldTop + ; STAGE_BLUE_FIELD_BOTTOM + padded_dab DrawSpritesBlueFieldBottom + ; STAGE_GENGAR_BONUS + padded_dab DrawSpritesGengarBonus + ; STAGE_GENGAR_BONUS + padded_dab DrawSpritesGengarBonus + ; STAGE_MEWTWO_BONUS + padded_dab DrawSpritesMewtwoBonus + ; STAGE_MEWTWO_BONUS + padded_dab DrawSpritesMewtwoBonus + ; STAGE_MEOWTH_BONUS + padded_dab DrawSpritesMeowthBonus + ; STAGE_MEOWTH_BONUS + padded_dab DrawSpritesMeowthBonus + ; STAGE_DIGLETT_BONUS + padded_dab DrawSpritesDiglettBonus + ; STAGE_DIGLETT_BONUS + padded_dab DrawSpritesDiglettBonus + ; STAGE_SEEL_BONUS + padded_dab DrawSpritesSeelBonus + ; STAGE_SEEL_BONUS + padded_dab DrawSpritesSeelBonus diff --git a/engine/pinball_game/draw_sprites/draw_unused_stage_sprites.asm b/engine/pinball_game/draw_sprites/draw_unused_stage_sprites.asm new file mode 100755 index 0000000..473a8c2 --- /dev/null +++ b/engine/pinball_game/draw_sprites/draw_unused_stage_sprites.asm @@ -0,0 +1,8 @@ +Func_18079: ; 0x18079 + callba DrawPinball + ret + +Func_18084: ; 0x18084 + callba DrawFlippers + callba DrawPinball + ret diff --git a/engine/pinball_game/load_stage_data/load_blue_field.asm b/engine/pinball_game/load_stage_data/load_blue_field.asm new file mode 100755 index 0000000..f6e2f2f --- /dev/null +++ b/engine/pinball_game/load_stage_data/load_blue_field.asm @@ -0,0 +1,474 @@ +_LoadStageDataBlueFieldTop: ; 0x1c165 + call asm_1e475 + call Func_1cb43 + call Func_1c3ee + call Func_1e8f6 + callba Func_142fc + ld a, $1 + ld [wd640], a + call Func_1f18a + callba Func_1404a + call Func_1c203 + ret + +_LoadStageDataBlueFieldBottom: ; 0x1c191 + call Func_1c1db + call Func_1c4b6 + call Func_1c2cb + call Func_1e627 + call Func_1c43c + call Func_1c305 + call Func_1c3ee + callba Func_14746 + callba Func_14707 + call Func_1c235 + call Func_1c21e + call Func_1e8f6 + callba Func_142fc + callba Func_1404a + call Func_1c203 + ret + +Func_1c1db: ; 0x1c1db + ld a, [wd641] + cp $0 + ret z + ld a, $1 + ld [wd640], a + ld a, $0 + ld [wd641], a + ld a, [wBlueStageForceFieldDirection] + cp $2 ; down direction + ret nz + ld a, $0 + ld [wBlueStageForceFieldDirection], a + ld a, $1 ; right direction + ld [wd64a], a + xor a + ld [wd649], a + ld [wd648], a + ret + +Func_1c203: ; 0x1c203 + ld a, $ff + ld [wd4d7], a + ld [wd4db], a + ld a, [wd4b4] + ld [wd4c5], a + ld a, [wd4b6] + ld [wd4c6], a + ld a, [wBallRotation] + ld [wd4c7], a + ret + +Func_1c21e: ; 0x1c21e + ld a, $ff + ld [wd60e], a + ld [wd60f], a + ld a, [wd60c] + call Func_1d5f2 + ld a, [wd60d] + add $14 + call Func_1d5f2 + ret + +Func_1c235: ; 0x1c235 + ld a, [wLeftMapMoveDiglettAnimationCounter] + and a + jr z, .asm_1c249 + ld a, $54 + ld [wc7e3], a + ld a, $55 + ld [wc803], a + ld a, $1 + jr .asm_1c24a + +.asm_1c249 + xor a +.asm_1c24a + call Func_1de4b + ld a, [wLeftMapMoveCounter] + call Func_1de6f + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_1c267 + ld a, [wLeftMapMoveCounter] + cp $0 + jr z, .asm_1c264 + ld b, $7 + add b + jr .asm_1c269 + +.asm_1c264 + xor a + jr .asm_1c269 + +.asm_1c267 + ld a, $8 +.asm_1c269 + call Func_1de6f + ld a, [wRightMapMoveDiglettFrame] + and a + jr z, .asm_1c295 + ld a, $52 + ld [wc7f0], a + ld a, $53 + ld [wc810], a + ld a, [wd644] + and a + jr z, .asm_1c28a + ld a, [wd55a] + and a + jr nz, .asm_1c2bd + jr .asm_1c291 + +.asm_1c28a + ld a, [wRightMapMoveCounter] + add $3 + jr .asm_1c297 + +.asm_1c291 + ld a, $3 + jr .asm_1c297 + +.asm_1c295 + ld a, $2 +.asm_1c297 + call Func_1de4b + ld a, [wRightMapMoveCounter] + add $4 + call Func_1de6f + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_1c2b7 + ld a, [wRightMapMoveCounter] + cp $0 + jr z, .asm_1c2b3 + ld b, $a + add b + jr .asm_1c2b9 + +.asm_1c2b3 + ld a, $4 + jr .asm_1c2b9 + +.asm_1c2b7 + ld a, $9 +.asm_1c2b9 + call Func_1de6f + ret + +.asm_1c2bd + ld a, $6 + call Func_1de4b + ld a, [wRightMapMoveCounter] + add $4 + call Func_1de6f + ret + +Func_1c2cb: ; 0x1c2cb + ld a, [wCurrentStage] + bit 0, a + ret z + ld bc, $0000 +.asm_1c2d4 + push bc + ld hl, wIndicatorStates + add hl, bc + ld a, [hl] + res 7, a + call Func_1eb41 + pop bc + inc c + ld a, c + cp $2 + jr nz, .asm_1c2d4 + ld bc, $0002 +.asm_1c2e9 + push bc + ld hl, wIndicatorStates + add hl, bc + ld a, [hl] + push af + ld hl, wd648 + add hl, bc + dec hl + dec hl + ld a, [hl] + ld d, a + pop af + add d + call Func_1eb41 + pop bc + inc c + ld a, c + cp $5 + jr nz, .asm_1c2e9 + ret + +Func_1c305: ; 0x1c305 + ld a, [wInSpecialMode] + and a + ret z + ld a, [wSpecialMode] + cp $2 + ret z + ld a, [wd5c6] + and a + jr nz, .asm_1c31f + ld a, [wCapturingMon] + and a + jr nz, .asm_1c31f + jp Func_1c3ca + +.asm_1c31f + callba Func_1c3ac + callba Func_10362 + ld a, [hGameBoyColorFlag] + and a + callba nz, Func_10301 + ld a, [wCapturingMon] + and a + ret z + ld a, BANK(PikachuSaverGfx) + ld hl, PikachuSaverGfx + $c0 + ld de, vTilesOB tile $7e + ld bc, $0020 + call FarCopyData + ld a, BANK(StageSharedPikaBoltGfx) + ld hl, BallCaptureSmokeGfx + ld de, vTilesSH tile $10 + ld bc, $0180 + call FarCopyData + ld a, [wBallType] + cp GREAT_BALL + jr nc, .notPokeball + ld a, Bank(PinballPokeballShakeGfx) + ld hl, PinballPokeballShakeGfx + ld de, vTilesOB tile $38 + ld bc, $0040 + call FarCopyData + ret + +.notPokeball + cp ULTRA_BALL + jr nc, .notGreatball + ld a, Bank(PinballGreatballShakeGfx) + ld hl, PinballGreatballShakeGfx + ld de, vTilesOB tile $38 + ld bc, $0040 + call FarCopyData + ret + +.notGreatball + cp MASTER_BALL + jr nc, .notUltraBall + ld a, Bank(PinballUltraballShakeGfx) + ld hl, PinballUltraballShakeGfx + ld de, vTilesOB tile $38 + ld bc, $0040 + call FarCopyData + ret + +.notUltraBall + ld a, Bank(PinballMasterballShakeGfx) + ld hl, PinballMasterballShakeGfx + ld de, vTilesOB tile $38 + ld bc, $0040 + call FarCopyData + ret + +Func_1c3ac: ; 0x1c3ac + ld a, $80 + hlCoord 7, 4, vBGMap + call Func_1c3c3 + hlCoord 7, 5, vBGMap + call Func_1c3c3 + hlCoord 7, 6, vBGMap + call Func_1c3c3 + hlCoord 7, 7, vBGMap + ; fall through + +Func_1c3c3: ; 0x1c3c3 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ret + +Func_1c3ca: ; 0x1c3ca + ld hl, wd586 + ld b, $18 +.asm_1c3cf + ld a, [hli] + xor $1 + ld [hli], a + dec b + jr nz, .asm_1c3cf + callba Func_10184 + ld a, [hGameBoyColorFlag] + and a + callba nz, Func_102bc + ret + +Func_1c3ee: ; 0x1c3ee + ld a, [wInSpecialMode] + and a + ret z + ld a, [wSpecialMode] + cp $1 + ret nz + ld a, [wd554] + cp $3 + ret z + ld a, [wCurrentStage] + bit 0, a + jr nz, .asm_1c416 + ld a, BANK(EvolutionTrinketsGfx) + ld hl, EvolutionTrinketsGfx + ld de, vTilesOB tile $60 + ld bc, $00e0 + call FarCopyData + jr .asm_1c424 + +.asm_1c416 + ld a, BANK(EvolutionTrinketsGfx) + ld hl, EvolutionTrinketsGfx + ld de, vTilesOB tile $20 + ld bc, $00e0 + call FarCopyData +.asm_1c424 + ld a, [wd551] + and a + ret z + ld a, [hGameBoyColorFlag] + and a + ret z + ld a, BANK(PaletteData_dd188) + ld hl, PaletteData_dd188 + ld de, $0070 + ld bc, $0010 + call Func_6fd + ret + +Func_1c43c: ; 0x1c43c + ld a, [wInSpecialMode] + and a + jr z, .asm_1c458 + ld a, [wSpecialMode] + and a + jr nz, .asm_1c450 + ld a, [wNumMonHits] + and a + call nz, Func_1c46d + ret + +.asm_1c450 + cp $1 + jr nz, .asm_1c458 + call Func_1c47d + ret + +.asm_1c458 + ld a, [wd624] + call Func_1f265 + ld a, BANK(CaughtPokeballGfx) + ld hl, CaughtPokeballGfx + ld de, vTilesSH tile $2e + ld bc, $0020 + call FarCopyData + ret + +Func_1c46d: ; 0x1c46d + push af + callba Func_10611 + pop af + dec a + jr nz, Func_1c46d + ret + +Func_1c47d: ; 0x1c47d + ld de, $0000 + ld a, [wd554] + and a + ret z + ld b, a +.asm_1c486 + ld a, [wCurrentEvolutionType] + call Func_1c491 + inc de + dec b + jr nz, .asm_1c486 + ret + +Func_1c491: ; 0x1c491 + push bc + push de + dec a + ld c, a + ld b, $0 + swap c + sla c + ld hl, EvolutionProgressIconsGfx + add hl, bc + swap e + sla e + push hl + ld hl, vTilesSH tile $2e + add hl, de + ld d, h + ld e, l + pop hl + ld bc, $0020 + ld a, BANK(EvolutionProgressIconsGfx) + call FarCopyData + pop de + pop bc + ret + +Func_1c4b6: ; 0x1c4b6 + ld a, [wInSpecialMode] + and a + jr nz, .asm_1c4f0 + ld a, [wd609] + and a + jr z, .asm_1c4d2 + ld a, [wd498] + add $15 + callba Func_30256 + ret + +.asm_1c4d2 + ld a, [wd608] + and a + jr z, .asm_1c4e5 + ld a, $1a + callba Func_30256 + ret + +.asm_1c4e5 + callba Func_30253 + ret + +.asm_1c4f0 + ld a, [wSpecialMode] + cp $2 + ret nz + ld a, [wd54d] + cp $3 + jr nz, .asm_1c508 + callba Func_30253 + ret + +.asm_1c508 + ld a, [wd604] + and a + ld a, $14 + jr nz, .asm_1c515 + ld a, [wd55a] + add $12 +.asm_1c515 + callba Func_30256 + ret diff --git a/engine/pinball_game/load_stage_data/load_diglett_bonus.asm b/engine/pinball_game/load_stage_data/load_diglett_bonus.asm new file mode 100755 index 0000000..6be87a9 --- /dev/null +++ b/engine/pinball_game/load_stage_data/load_diglett_bonus.asm @@ -0,0 +1,34 @@ +_LoadStageDataDiglettBonus: ; 0x19a76 + callba Func_142fc + call Func_2862 + ld a, [wd7c1] + and a + ret z + call Func_19bbd + call Func_19a96 + ld a, [wDugrioState] + and a + call nz, Func_1ac2c + ret + +Func_19a96: ; 0x19a96 + ld hl, wDiglettStates + ld bc, NUM_DIGLETTS << 8 +.asm_19a9c + ld a, [hli] + and a + jr z, .asm_19aae + push bc + push hl + push af + call Func_19da8 + pop af + cp $6 + call c, Func_19dcd + pop hl + pop bc +.asm_19aae + inc c + dec b + jr nz, .asm_19a9c + ret diff --git a/engine/pinball_game/load_stage_data/load_gengar_bonus.asm b/engine/pinball_game/load_stage_data/load_gengar_bonus.asm new file mode 100755 index 0000000..767d37d --- /dev/null +++ b/engine/pinball_game/load_stage_data/load_gengar_bonus.asm @@ -0,0 +1,11 @@ +_LoadStageDataGengarBonus: ; 0x1818b + callba Func_142fc + call Func_2862 + call Func_18d72 + ld a, [wd7c1] + callba Func_1404a + and a + ret z + call Func_183db + call Func_18d91 + ret diff --git a/engine/pinball_game/load_stage_data/load_meowth_bonus.asm b/engine/pinball_game/load_stage_data/load_meowth_bonus.asm new file mode 100755 index 0000000..01a49ba --- /dev/null +++ b/engine/pinball_game/load_stage_data/load_meowth_bonus.asm @@ -0,0 +1,7 @@ +_LoadStageDataMeowthBonus: ; 0x24128 + callba Func_142fc + call Func_2862 + callba Func_24fa3 + call Func_24516 + callba Func_1404a + ret diff --git a/engine/pinball_game/load_stage_data/load_mewtwo_bonus.asm b/engine/pinball_game/load_stage_data/load_mewtwo_bonus.asm new file mode 100755 index 0000000..47bbfc4 --- /dev/null +++ b/engine/pinball_game/load_stage_data/load_mewtwo_bonus.asm @@ -0,0 +1,9 @@ +_LoadStageDataMewtwoBonus: ; 0x19310 + callba Func_142fc + call Func_2862 + callba Func_1404a + ld a, [wd7c1] + and a + ret z + call Func_194ac + ret diff --git a/engine/pinball_game/load_stage_data/load_red_field.asm b/engine/pinball_game/load_stage_data/load_red_field.asm new file mode 100755 index 0000000..5a58a75 --- /dev/null +++ b/engine/pinball_game/load_stage_data/load_red_field.asm @@ -0,0 +1,480 @@ +_LoadStageDataRedFieldTop: ; 0x14000 + call Func_14091 + call Func_159f4 + call Func_15450 + call Func_16859 + call Func_14ece + call Func_14234 + call Func_16425 + call Func_142fc + call Func_1404a + ret + +_LoadStageDataRedFieldBottom: ; 0x1401c + call Func_14091 + call Func_14377 + call Func_14135 + call Func_asm_1522d + call Func_14282 + call Func_1414b + call Func_14234 + call Func_14746 + call Func_14707 + call Func_140f9 + call Func_16878 + call Func_140e2 + call Func_16425 + call Func_142fc + call Func_1404a + ret + +Func_1404a: ; 0x1404a + ld a, [wd57d] + and a + ret z + ld a, [hGameBoyColorFlag] + and a + ret nz + ld a, [wd580] + and a + ret z + ld a, $f + ld [wd581], a + call Func_1762f + ld hl, wTimerDigits + ld a, $ff + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld hl, wTimerDigits + ld a, [wTimerMinutes] + and $f + call LoadTimerDigitTiles + ld a, [wTimerSeconds] + swap a + and $f + call LoadTimerDigitTiles + ld a, [wTimerSeconds] + and $f + call LoadTimerDigitTiles + ld a, e + srl a + srl a + ld d, $90 ; colon + call LoadTimerDigitTiles + ret + +Func_14091: ; 0x14091 + ld a, $ff + ld [wd4d7], a + ld [wd4db], a + ld a, [wd4b4] + ld [wd4c5], a + ld a, [wd4b6] + ld [wd4c6], a + ld a, [wBallRotation] + ld [wd4c7], a + ld a, [wd503] + and a + ret z + xor a + ld [wd503], a + ld a, [wd502] + res 1, a + ld [wd502], a + and $1 + ld c, a + ld a, [wStageCollisionState] + and $fe + or c + ld [wStageCollisionState], a + lb de, $00, $07 + call PlaySoundEffect + ld a, [wCurrentStage] + bit 0, a + ret nz + callba LoadStageCollisionAttributes + call Func_159f4 + ret + +Func_140e2: ; 0x140e2 + ld a, $ff + ld [wd60e], a + ld [wd60f], a + ld a, [wd60c] + call Func_16f28 + ld a, [wd60d] + add $14 + call Func_16f28 + ret + +Func_140f9: ; 0x140f9 + ld a, [wd4ef] + and a + jr z, .asm_1410c + xor a + ld a, $66 + ld [wc7e3], a + ld a, $67 + ld [wc803], a + ld a, $2 +.asm_1410c + call Func_149d9 + ld a, [wLeftMapMoveCounter] + call Func_149f5 + ld a, [wd4f1] + and a + jr z, .asm_14127 + ld a, $6a + ld [wc7f0], a + ld a, $6b + ld [wc810], a + ld a, $2 +.asm_14127 + add $3 + call Func_149d9 + ld a, [wRightMapMoveCounter] + add $4 + call Func_149f5 + ret + +Func_14135: ; 0x14135 + ld bc, $0000 +.asm_14138 + push bc + ld hl, wIndicatorStates + add hl, bc + ld a, [hl] + res 7, a + call Func_169cd + pop bc + inc c + ld a, c + cp $5 + jr nz, .asm_14138 + ret + +Func_1414b: ; 0x1414b + ld a, [wInSpecialMode] + and a + ret z + ld a, [wSpecialMode] + cp $2 + ret z + ld a, [wd5c6] + and a + jr nz, .asm_14165 + ld a, [wCapturingMon] + and a + jr nz, .asm_14165 + jp Func_14210 + +.asm_14165 + callba Func_141f2 + callba Func_10362 + ld a, [hGameBoyColorFlag] + and a + callba nz, Func_10301 + ld a, [wCapturingMon] + and a + ret z + ld a, BANK(PikachuSaverGfx) + ld hl, PikachuSaverGfx + $c0 + ld de, vTilesOB tile $7e + ld bc, $0020 + call FarCopyData + ld a, BANK(BallCaptureSmokeGfx) + ld hl, BallCaptureSmokeGfx + ld de, vTilesSH tile $10 + ld bc, $0180 + call FarCopyData + ld a, [wBallType] + cp GREAT_BALL + jr nc, .notPokeball + ld a, Bank(PinballPokeballShakeGfx) + ld hl, PinballPokeballShakeGfx + ld de, vTilesOB tile $38 + ld bc, $0040 + call FarCopyData + ret + +.notPokeball + cp ULTRA_BALL + jr nc, .notGreatball + ld a, Bank(PinballGreatballShakeGfx) + ld hl, PinballGreatballShakeGfx + ld de, vTilesOB tile $38 + ld bc, $0040 + call FarCopyData + ret + +.notGreatball + cp MASTER_BALL + jr nc, .notUltraball + ld a, Bank(PinballUltraballShakeGfx) + ld hl, PinballUltraballShakeGfx + ld de, vTilesOB tile $38 + ld bc, $0040 + call FarCopyData + ret + +.notUltraball + ld a, Bank(PinballMasterballShakeGfx) + ld hl, PinballMasterballShakeGfx + ld de, vTilesOB tile $38 + ld bc, $0040 + call FarCopyData + ret + +Func_141f2: ; 0x141f2 + ld a, $80 + hlCoord 7, 4, vBGMap + call Func_14209 + hlCoord 7, 5, vBGMap + call Func_14209 + hlCoord 7, 6, vBGMap + call Func_14209 + hlCoord 7, 7, vBGMap + ; fall through + +Func_14209: ; 0x14209 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ret + +Func_14210: ; 0x14210 + ld hl, wd586 + ld b, $18 +.asm_14215 + ld a, [hli] + xor $1 + ld [hli], a + dec b + jr nz, .asm_14215 + callba Func_10184 + ld a, [hGameBoyColorFlag] + and a + callba nz, Func_102bc + ret + +Func_14234: ; 0x14234 + ld a, [wInSpecialMode] + and a + ret z + ld a, [wSpecialMode] + cp $1 + ret nz + ld a, [wd554] + cp $3 + ret z + ld a, [wCurrentStage] + bit 0, a + jr nz, .asm_1425c + ld a, BANK(EvolutionTrinketsGfx) + ld hl, EvolutionTrinketsGfx + ld de, vTilesSH tile $10 + ld bc, $00e0 + call FarCopyData + jr .asm_1426a + +.asm_1425c + ld a, BANK(EvolutionTrinketsGfx) + ld hl, EvolutionTrinketsGfx + ld de, vTilesOB tile $20 + ld bc, $00e0 + call FarCopyData +.asm_1426a + ld a, [wd551] + and a + ret z + ld a, [hGameBoyColorFlag] + and a + ret z + ld a, BANK(PaletteData_dd188) + ld hl, PaletteData_dd188 + ld de, $0070 + ld bc, $0010 + call Func_6fd + ret + +Func_14282: ; 0x14282 + ld a, [wInSpecialMode] + and a + jr z, .asm_1429e + ld a, [wSpecialMode] + and a + jr nz, .asm_14296 + ld a, [wNumMonHits] + and a + call nz, Func_142b3 + ret + +.asm_14296 + cp $1 + jr nz, .asm_1429e + call Func_142c3 + ret + +.asm_1429e + ld a, [wd624] + call Func_174d4 + ld a, BANK(CaughtPokeballGfx) + ld hl, CaughtPokeballGfx + ld de, vTilesSH tile $2e + ld bc, $0020 + call FarCopyData + ret + +Func_142b3: ; 0x142b3 + push af + callba Func_10611 + pop af + dec a + jr nz, Func_142b3 + ret + +Func_142c3: ; 0x142c3 + ld de, $0000 + ld a, [wd554] + and a + ret z + ld b, a +.asm_142cc + ld a, [wCurrentEvolutionType] + call Func_142d7 + inc de + dec b + jr nz, .asm_142cc + ret + +Func_142d7: ; 0x142d7 + push bc + push de + dec a + ld c, a + ld b, $0 + swap c + sla c + ld hl, EvolutionProgressIconsGfx + add hl, bc + swap e + sla e + push hl + ld hl, vTilesSH tile $2e + add hl, de + ld d, h + ld e, l + pop hl + ld bc, $0020 + ld a, BANK(EvolutionProgressIconsGfx) + call FarCopyData + pop de + pop bc + ret + +Func_142fc: ; 0x142fc + ld a, [wd4c8] + and a + jr nz, .asm_1430e + callba LoadBallGfx + jr .asm_14328 + +.asm_1430e + cp $1 + jr nz, .asm_1431e + callba LoadMiniBallGfx + jr .asm_14328 + +.asm_1431e + callba Func_dd62 +.asm_14328 + ld a, [hGameBoyColorFlag] + and a + ret z + ld a, [wBallType] + cp GREAT_BALL + jr nc, .notPokeball + ld a, BANK(PokeBallObjPalette) + ld hl, PokeBallObjPalette + ld de, $0040 + ld bc, $0008 + call Func_6fd + ret + +.notPokeball + cp ULTRA_BALL + jr nc, .notGreatball + ld a, BANK(GreatBallObjPalette) + ld hl, GreatBallObjPalette + ld de, $0040 + ld bc, $0008 + call Func_6fd + ret + +.notGreatball + cp MASTER_BALL + jr nc, .notUltraball + ld a, BANK(UltraBallObjPalette) + ld hl, UltraBallObjPalette + ld de, $0040 + ld bc, $0008 + call Func_6fd + ret + +.notUltraball + ld a, BANK(MasterBallObjPalette) + ld hl, MasterBallObjPalette + ld de, $0040 + ld bc, $0008 + call Func_6fd + ret + +Func_14377: ; 0x14377 + ld a, [wInSpecialMode] + and a + jr nz, .asm_143b1 + ld a, [wd609] + and a + jr z, .asm_14393 + ld a, [wd498] + add $15 + callba Func_30256 + ret + +.asm_14393 + ld a, [wd608] + and a + jr z, .asm_143a6 + ld a, $1a + callba Func_30256 + ret + +.asm_143a6 + callba Func_30253 + ret + +.asm_143b1 + ld a, [wSpecialMode] + cp $2 + ret nz + ld a, [wd54d] + cp $3 + jr nz, .asm_143c9 + callba Func_30253 + ret + +.asm_143c9 + ld a, [wd604] + and a + ld a, $14 + jr nz, .asm_143d6 + ld a, [wd55a] + add $12 +.asm_143d6 + callba Func_30256 + ret diff --git a/engine/pinball_game/load_stage_data/load_seel_bonus.asm b/engine/pinball_game/load_stage_data/load_seel_bonus.asm new file mode 100755 index 0000000..e72b9a7 --- /dev/null +++ b/engine/pinball_game/load_stage_data/load_seel_bonus.asm @@ -0,0 +1,7 @@ +_LoadStageDataSeelBonus: ; 0x25b97 + callba Func_142fc + call Func_2862 + callba Func_262f4 + call Func_25d0e + callba Func_1404a + ret diff --git a/engine/pinball_game/load_stage_data/load_stage_data.asm b/engine/pinball_game/load_stage_data/load_stage_data.asm new file mode 100755 index 0000000..4922289 --- /dev/null +++ b/engine/pinball_game/load_stage_data/load_stage_data.asm @@ -0,0 +1,35 @@ +_LoadStageData: ; 0x8471 +; Loads stage data such as additional graphics, collision attributes, etc. + ld a, [wCurrentStage] + call CallInFollowingTable +CallTable_8477: ; 0x8477 + ; STAGE_RED_FIELD_TOP + padded_dab _LoadStageDataRedFieldTop + ; STAGE_RED_FIELD_BOTTOM + padded_dab _LoadStageDataRedFieldBottom + padded_dab DoNothing_1805f + padded_dab DoNothing_18060 + ; STAGE_BLUE_FIELD_TOP + padded_dab _LoadStageDataBlueFieldTop + ; STAGE_BLUE_FIELD_BOTTOM + padded_dab _LoadStageDataBlueFieldBottom + ; STAGE_GENGAR_BONUS + padded_dab _LoadStageDataGengarBonus + ; STAGE_GENGAR_BONUS + padded_dab _LoadStageDataGengarBonus + ; STAGE_MEWTWO_BONUS + padded_dab _LoadStageDataMewtwoBonus + ; STAGE_MEWTWO_BONUS + padded_dab _LoadStageDataMewtwoBonus + ; STAGE_MEOWTH_BONUS + padded_dab _LoadStageDataMeowthBonus + ; STAGE_MEOWTH_BONUS + padded_dab _LoadStageDataMeowthBonus + ; STAGE_DIGLETT_BONUS + padded_dab _LoadStageDataDiglettBonus + ; STAGE_DIGLETT_BONUS + padded_dab _LoadStageDataDiglettBonus + ; STAGE_SEEL_BONUS + padded_dab _LoadStageDataSeelBonus + ; STAGE_SEEL_BONUS + padded_dab _LoadStageDataSeelBonus diff --git a/engine/pinball_game/load_stage_data/load_unused_stage.asm b/engine/pinball_game/load_stage_data/load_unused_stage.asm new file mode 100755 index 0000000..8f4dadf --- /dev/null +++ b/engine/pinball_game/load_stage_data/load_unused_stage.asm @@ -0,0 +1,6 @@ +; Unused -- load stage data for unused stage. +DoNothing_1805f: ; 0x1805f + ret + +DoNothing_18060: ; 0x18060 + ret diff --git a/engine/pinball_game/stage_init/init_blue_field.asm b/engine/pinball_game/stage_init/init_blue_field.asm new file mode 100755 index 0000000..62d2e8b --- /dev/null +++ b/engine/pinball_game/stage_init/init_blue_field.asm @@ -0,0 +1,55 @@ +InitBlueField: ; 0x1c000 + ld a, [wd7c1] + and a + ret nz + xor a + ld hl, wScore + $5 + ld [hld], a + ld [hld], a + ld [hld], a + ld [hld], a + ld [hld], a + ld [hl], a + ld [wNumPartyMons], a + ld [wd49b], a + ld [wd4c9], a + ld [wBallType], a + ld [wd4c8], a + ld hl, wd624 + ld [hli], a + ld [hli], a + ld [hli], a + ld [wd7ac], a + ld [wd7be], a + ld [wCurrentMap], a ; PALLET_TOWN + ld a, $1 + ld [wd49d], a + ld [wd482], a + ld a, $2 + ld [wRightAlleyCount], a + ld a, $3 + ld [wd49e], a + ld [wd610], a + ld a, $2 + ld [wd498], a + ld [wd499], a + ld a, $80 + ld [wIndicatorStates], a + ld [wIndicatorStates + 3], a + ld a, $82 + ld [wIndicatorStates + 1], a + xor a + ld [wd648], a + ld [wd649], a + ld [wd64a], a + ld [wd643], a + ld [wd644], a + ld [wd645], a + ld [wd646], a + callba Start20SecondSaverTimer + callba Func_1d65f + ld a, $10 + call SetSongBank + ld de, $0001 + call PlaySong + ret diff --git a/engine/pinball_game/stage_init/init_diglett_bonus.asm b/engine/pinball_game/stage_init/init_diglett_bonus.asm new file mode 100755 index 0000000..b68501c --- /dev/null +++ b/engine/pinball_game/stage_init/init_diglett_bonus.asm @@ -0,0 +1,34 @@ +InitDiglettBonusStage: ; 0x199f2 + ld a, [wd7c1] + and a + ret nz + xor a + ld [wStageCollisionState], a + ld a, $1 + ld [wd7ac], a + ld a, [wBallType] + ld [wBallTypeBackup], a + xor a + ld [wd4c8], a + ld [wBallType], a + ld [wd49a], a + ; initialize all digletts to hiding + ld a, $1 ; hiding diglett state + ld hl, wDiglettStates + ld b, NUM_DIGLETTS +.initDiglettsLoop + ld [hli], a + dec b + jr nz, .initDiglettsLoop + ld a, $1 + ld [wDugtrioAnimationFrameCounter], a + ld a, $c + ld [wDugtrioAnimationFrame], a + xor a + ld [wDugtrioAnimationFrameIndex], a + ld [wDugrioState], a + ld a, $11 + call SetSongBank + ld de, $0001 + call PlaySong + ret diff --git a/engine/pinball_game/stage_init/init_gengar_bonus.asm b/engine/pinball_game/stage_init/init_gengar_bonus.asm new file mode 100755 index 0000000..4f7da3b --- /dev/null +++ b/engine/pinball_game/stage_init/init_gengar_bonus.asm @@ -0,0 +1,107 @@ +InitGengarBonusStage: ; 0x18099 + ld a, [wd7c1] + and a + jr z, .asm_180ac + xor a + ld [wd674], a + ld a, $8 + ld [wd690], a + ld [wd6a1], a + ret +.asm_180ac + ld a, $1 + ld [wd7ac], a + ld a, [wBallType] + ld [wBallTypeBackup], a + xor a + ld [wd4c8], a + ld [wBallType], a + ld [wd49a], a + ld hl, GastlyInitialData + ld de, wd659 + call Copy9BytesToDE + call Copy9BytesToDE + call Copy9BytesToDE + ld hl, HaunterInitialData + ld de, wd67e + call Copy9BytesToDE + call Copy9BytesToDE + ld hl, GengarInitialData + ld de, wd698 + call Copy9BytesToDE + xor a + ld [wd67b], a + ld [wd695], a + ld hl, wd6a2 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [wd656], a + ld bc, $0130 ; 1 minute 30 seconds + callba StartTimer + ld a, $f + call SetSongBank + ld de, $0005 + call PlaySong + ret + +Copy9BytesToDE: ; 0x18112 + ld b, $3 +.loop + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .loop + ret + +GastlyInitialData: ; 0x18121 +; Gastly 1 + db $01, $01 + db $00, $00 ; wGastly1AnimationState + db $00 + db $00, $08 ; wGastly1XPos + db $00, $08 ; wGastly1YPos +; Gastly 2 + db $01, $01 + db $00, $00 ; wGastly2AnimationState + db $00 + db $00, $50 ; wGastly2XPos + db $00, $20 ; wGastly2YPos +; Gastly 3 + db $01, $01 + db $00, $00 ; wGastly2AnimationState + db $00 + db $00, $30 ; wGastly3XPos + db $00, $38 ; wGastly3YPos + +HaunterInitialData: ; 0x1813c +; Haunter 1 + db $00, $01 + db $00, $00 ; wHaunter1AnimationState + db $00 + db $00, $50 ; wHaunter1XPos + db $00, $10 ; wHaunter1YPos +; Haunter 2 + db $00, $01 + db $00, $00 ; wHaunter2AnimationState + db $00 + db $00, $10 ; wHaunter2XPos + db $00, $34 ; wHaunter2YPos + +GengarInitialData: ; 0x1814e + db $00, $01 + db $00, $00 ; wGengarAnimationState + db $04 + db $00, $38 ; wGengarXPos + db $00, $F8 ; wGengarYPos diff --git a/engine/pinball_game/stage_init/init_meowth_bonus.asm b/engine/pinball_game/stage_init/init_meowth_bonus.asm new file mode 100755 index 0000000..c001b20 --- /dev/null +++ b/engine/pinball_game/stage_init/init_meowth_bonus.asm @@ -0,0 +1,34 @@ +InitMeowthBonusStage: ; 0x24000 + ld a, [wd7c1] + and a + ret nz + xor a + ld [wd4c8], a + ld [wStageCollisionState], a + ld a, [wBallType] + ld [wBallTypeBackup], a + xor a + ld [wd4c8], a + ld [wBallType], a + ld [wd49a], a + ld a, $1 + ld [wd7ac], a + ld a, $40 + ld [wMeowthXPosition], a + ld a, $20 + ld [wMeowthYPosition], a + ld a, $10 + ld [wMeowthAnimationFrameCounter], a + xor a + ld [wMeowthStageScore], a + ld [wd70b], a + ld [wMeowthStageBonusCounter], a + ld [wd713], a + ld [wd739], a + ld bc, $0100 ; 1 minute 0 seconds + callba StartTimer + ld a, $12 + call SetSongBank + ld de, $0004 + call PlaySong + ret diff --git a/engine/pinball_game/stage_init/init_mewtwo_bonus.asm b/engine/pinball_game/stage_init/init_mewtwo_bonus.asm new file mode 100755 index 0000000..44d7417 --- /dev/null +++ b/engine/pinball_game/stage_init/init_mewtwo_bonus.asm @@ -0,0 +1,65 @@ +InitMewtwoBonusStage: ; 0x1924f + ld a, [wd7c1] + and a + ret nz + xor a + ld [wStageCollisionState], a + ld a, $1 + ld [wd7ac], a + ld a, [wBallType] + ld [wBallTypeBackup], a + xor a + ld [wd4c8], a + ld [wBallType], a + ld [wd49a], a + ld hl, Data_192ab + ld de, wd6b6 + ld b, $c +.loop + 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 + dec b + jr nz, .loop + ld hl, Data_192db + ld de, wd6ac + ld b, $8 +.loop2 + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .loop2 + ld bc, $0200 ; 2 minutes 0 seconds + callba StartTimer + ld a, $12 + call SetSongBank + ld de, $0001 + call PlaySong + ret + +Data_192ab: + db $01, $01, $00, $00 + db $00, $62, $08, $00 + db $01, $01, $00, $00 + db $00, $55, $1F, $0C + db $01, $01, $00, $00 + db $00, $3B, $1F, $18 + db $01, $01, $00, $00 + db $00, $2E, $08, $24 + db $01, $01, $00, $00 + db $00, $3B, $F1, $30 + db $01, $01, $00, $00 + db $00, $55, $F1, $3C + +Data_192db: + db $01, $00, $00, $00, $00, $00, $00, $00 diff --git a/engine/pinball_game/stage_init/init_red_field.asm b/engine/pinball_game/stage_init/init_red_field.asm new file mode 100755 index 0000000..d92d54e --- /dev/null +++ b/engine/pinball_game/stage_init/init_red_field.asm @@ -0,0 +1,49 @@ +InitRedField: ; 0x30000 + ld a, [wd7c1] + and a + ret nz + xor a + ld hl, wScore + $5 + ld [hld], a + ld [hld], a + ld [hld], a + ld [hld], a + ld [hld], a + ld [hl], a + ld [wNumPartyMons], a + ld [wd49b], a + ld [wd4c9], a + ld [wBallType], a + ld [wd4c8], a + ld hl, wd624 + ld [hli], a + ld [hli], a + ld [hli], a + ld [wd7ac], a + ld [wd7be], a + ld [wCurrentMap], a ; PALLET_TOWN + ld a, $1 + ld [wd49d], a + ld [wd482], a + ld a, $2 + ld [wRightAlleyCount], a + ld a, $3 + ld [wd49e], a + ld [wd610], a + ld [wd498], a + ld [wd499], a + ld a, $4 + ld [wStageCollisionState], a + ld [wd7ad], a + ld a, $80 + ld [wIndicatorStates], a + ld [wIndicatorStates + 3], a + ld a, $82 + ld [wIndicatorStates + 1], a + callba Start20SecondSaverTimer + callba Func_16f95 + ld a, $f + call SetSongBank + ld de, $0001 + call PlaySong + ret diff --git a/engine/pinball_game/stage_init/init_seel_bonus.asm b/engine/pinball_game/stage_init/init_seel_bonus.asm new file mode 100755 index 0000000..50a25b8 --- /dev/null +++ b/engine/pinball_game/stage_init/init_seel_bonus.asm @@ -0,0 +1,60 @@ +InitSeelBonusStage: ; 0x25a7c + ld a, [wd7c1] + and a + ret nz + xor a + ld [wd4c8], a + ld [wStageCollisionState], a + ld a, $1 + ld [wd7ac], a + ld a, [wBallType] + ld [wBallTypeBackup], a + xor a + ld [wd4c8], a + ld [wBallType], a + ld [wd49a], a + ld hl, InitialSeelCoords + ld de, wd76d + call InitSeelPosition + ld de, wd777 + call InitSeelPosition + ld de, wd781 + call InitSeelPosition + xor a + ld [wd793], a + ld [wd791], a + ld [wd792], a + ld [wd739], a + ld bc, $0130 ; 1 minute 30 seconds + callba StartTimer + ld a, $11 + call SetSongBank + ld de, $0003 + call PlaySong + ret + +InitSeelPosition: ; 0x25ad8 + 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 + ret + +InitialSeelCoords: +; Seel 1 + db $00, $60 ; x coordinate + db $00, $00 ; y coordinate +; Seel 2 + db $00, $20 ; x coordinate + db $00, $1A ; y coordinate +; Seel 3 + db $00, $40 ; x coordinate + db $00, $34 ; y coordinate diff --git a/engine/pinball_game/stage_init/init_stages.asm b/engine/pinball_game/stage_init/init_stages.asm new file mode 100755 index 0000000..948919f --- /dev/null +++ b/engine/pinball_game/stage_init/init_stages.asm @@ -0,0 +1,81 @@ +InitializeStage: ; 0x8311 + ld hl, wc000 + ld bc, $0a00 + call ClearData + ld a, $1 + ld [rVBK], a + ld a, [wd805] + and a + jr nz, .asm_8331 + ld hl, vBGWin + ld bc, $0400 + ld a, $0 + call Func_63e + jr .asm_833c + +.asm_8331 + ld hl, vBGWin + ld bc, $0400 + ld a, $8 + call Func_63e +.asm_833c + xor a + ld [rVBK], a + call ResetDataForStageInitialization + ld a, [wCurrentStage] + call CallInFollowingTable +CallTable_8348: ; 0x8348 + ; STAGE_RED_FIELD_TOP + padded_dab InitRedField + ; STAGE_RED_FIELD_BOTTOM + padded_dab InitRedField + padded_dab Func_18000 + padded_dab Func_18000 + ; STAGE_BLUE_FIELD_TOP + padded_dab InitBlueField + ; STAGE_BLUE_FIELD_BOTTOM + padded_dab InitBlueField + ; STAGE_GENGAR_BONUS + padded_dab InitGengarBonusStage + ; STAGE_GENGAR_BONUS + padded_dab InitGengarBonusStage + ; STAGE_MEWTWO_BONUS + padded_dab InitMewtwoBonusStage + ; STAGE_MEWTWO_BONUS + padded_dab InitMewtwoBonusStage + ; STAGE_MEOWTH_BONUS + padded_dab InitMeowthBonusStage + ; STAGE_MEOWTH_BONUS + padded_dab InitMeowthBonusStage + ; STAGE_DIGLETT_BONUS + padded_dab InitDiglettBonusStage + ; STAGE_DIGLETT_BONUS + padded_dab InitDiglettBonusStage + ; STAGE_SEEL_BONUS + padded_dab InitSeelBonusStage + ; STAGE_SEEL_BONUS + padded_dab InitSeelBonusStage + +ResetDataForStageInitialization: ; 0x8388 +; Resets some game data, depending on which stage is being initialized. + ld a, [wd7c1] + and a + jr z, .asm_8398 + ld hl, wSubTileBallXPos + ld bc, $0037 + call ClearData + ret +.asm_8398 + ld a, [wCurrentStage] + cp STAGE_BLUE_FIELD_BOTTOM + 1 + ret nc ; Check if bonus stage + ld hl, wPartyMons + ld bc, $0170 + call ClearData + ld hl, wd473 + ld bc, $0039 + call ClearData + ld hl, wd4ad + ld bc, $034d + call ClearData + ret diff --git a/engine/pinball_game/stage_init/init_unused_stage.asm b/engine/pinball_game/stage_init/init_unused_stage.asm new file mode 100755 index 0000000..4fac82d --- /dev/null +++ b/engine/pinball_game/stage_init/init_unused_stage.asm @@ -0,0 +1,32 @@ +Func_18000: ; 0x18000 +; unused -- Stage init function for unused stage. + ld hl, wc000 + ld bc, $0a00 + call ClearData + ld a, $1 + ld [rVBK], a + hlCoord 0, 0, vBGWin + ld bc, $0400 + call ClearData + xor a + ld [rVBK], a + ld hl, wWhichVoltorb + ld bc, $032e + call ClearData + xor a + ld hl, wScore + $5 + ld [hld], a + ld [hld], a + ld [hld], a + ld [hld], a + ld [hld], a + ld [hl], a + ld [wNumPartyMons], a + ld [wd49b], a + ld [wd4c9], a + ld a, $1 + ld [wd49d], a + ld a, $3 + ld [wd49e], a + callba Start20SecondSaverTimer + ret diff --git a/main.asm b/main.asm index eb9f1c3..5b520f7 100755 --- a/main.asm +++ b/main.asm @@ -5,6 +5,7 @@ INCLUDE "constants.asm" INCLUDE "home.asm" SECTION "bank1", ROMX, BANK[$1] + INCLUDE "data/oam_frames.asm" SECTION "bank2", ROMX, BANK[$2] @@ -12,10 +13,10 @@ SECTION "bank2", ROMX, BANK[$2] 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" -INCLUDE "engine/main/ball_init/ball_init.asm" -INCLUDE "engine/main/load_stage_data/load_stage_data.asm" -INCLUDE "engine/main/draw_sprites/draw_sprites.asm" +INCLUDE "engine/pinball_game/stage_init/init_stages.asm" +INCLUDE "engine/pinball_game/ball_init/ball_init.asm" +INCLUDE "engine/pinball_game/load_stage_data/load_stage_data.asm" +INCLUDE "engine/pinball_game/draw_sprites/draw_sprites.asm" Func_84fd: ; unused? @@ -1673,16 +1674,7 @@ INCLUDE "engine/titlescreen.asm" INCLUDE "engine/options_screen.asm" INCLUDE "engine/high_scores_screen.asm" INCLUDE "engine/field_select_screen.asm" - -HandlePinballGame: ; 0xd853 - ld a, [wScreenState] - rst JumpTable ; calls JumpToFuncInTable -PinballGameScreenFunctions: ; 0xd857 - dw GameScreenFunction_LoadGFX - dw GameScreenFunction_StartBall - dw GameScreenFunction_HandleBallPhysics - dw GameScreenFunction_HandleBallLoss - dw GameScreenFunction_EndBall +INCLUDE "engine/pinball_game.asm" GameScreenFunction_LoadGFX: ; 0xd861 xor a @@ -8279,7 +8271,7 @@ Data_13685: ; 0x13685 SECTION "bank5", ROMX, BANK[$5] -INCLUDE "engine/main/load_stage_data/load_red_field.asm" +INCLUDE "engine/pinball_game/load_stage_data/load_red_field.asm" INCLUDE "engine/collision/red_stage_game_object_collision.asm" Func_1460e: ; 0x1460e @@ -17011,13 +17003,13 @@ TileData_17551: ; 0x17551 db $AE, $AF, $AE, $AF, $AE, $AF db $00 -INCLUDE "engine/main/draw_sprites/draw_red_field_sprites.asm" +INCLUDE "engine/pinball_game/draw_sprites/draw_red_field_sprites.asm" SECTION "bank6", ROMX, BANK[$6] -INCLUDE "engine/main/stage_init/init_unused_stage.asm" -INCLUDE "engine/main/ball_init/ball_init_unused_stage.asm" -INCLUDE "engine/main/load_stage_data/load_unused_stage.asm" +INCLUDE "engine/pinball_game/stage_init/init_unused_stage.asm" +INCLUDE "engine/pinball_game/ball_init/ball_init_unused_stage.asm" +INCLUDE "engine/pinball_game/load_stage_data/load_unused_stage.asm" DoNothing_18061: ; 0x18061 ret @@ -17033,10 +17025,10 @@ Func_1806e: ; 0x1806e callba Func_1652d ret -INCLUDE "engine/main/draw_sprites/draw_unused_stage_sprites.asm" -INCLUDE "engine/main/stage_init/init_gengar_bonus.asm" -INCLUDE "engine/main/ball_init/ball_init_gengar_bonus.asm" -INCLUDE "engine/main/load_stage_data/load_gengar_bonus.asm" +INCLUDE "engine/pinball_game/draw_sprites/draw_unused_stage_sprites.asm" +INCLUDE "engine/pinball_game/stage_init/init_gengar_bonus.asm" +INCLUDE "engine/pinball_game/ball_init/ball_init_gengar_bonus.asm" +INCLUDE "engine/pinball_game/load_stage_data/load_gengar_bonus.asm" CheckGengarBonusStageGameObjectCollisions: ; 0x181b1 call CheckGengarBonusStageGastlyCollision @@ -19173,10 +19165,10 @@ TileData_18f93: ; 0x18f93 db $00 ; terminator -INCLUDE "engine/main/draw_sprites/draw_gengar_bonus_sprites.asm" -INCLUDE "engine/main/stage_init/init_mewtwo_bonus.asm" -INCLUDE "engine/main/ball_init/ball_init_mewtwo_bonus.asm" -INCLUDE "engine/main/load_stage_data/load_mewtwo_bonus.asm" +INCLUDE "engine/pinball_game/draw_sprites/draw_gengar_bonus_sprites.asm" +INCLUDE "engine/pinball_game/stage_init/init_mewtwo_bonus.asm" +INCLUDE "engine/pinball_game/ball_init/ball_init_mewtwo_bonus.asm" +INCLUDE "engine/pinball_game/load_stage_data/load_mewtwo_bonus.asm" CheckMewtwoBonusStageGameObjectCollisions: ; 0x19330 call Func_19414 @@ -20119,10 +20111,10 @@ OrbitingBallAnimation4: ; 0x1994b db $0C, $0B db $00 ; terminator -INCLUDE "engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm" -INCLUDE "engine/main/stage_init/init_diglett_bonus.asm" -INCLUDE "engine/main/ball_init/ball_init_diglett_bonus.asm" -INCLUDE "engine/main/load_stage_data/load_diglett_bonus.asm" +INCLUDE "engine/pinball_game/draw_sprites/draw_mewtwo_bonus_sprites.asm" +INCLUDE "engine/pinball_game/stage_init/init_diglett_bonus.asm" +INCLUDE "engine/pinball_game/ball_init/ball_init_diglett_bonus.asm" +INCLUDE "engine/pinball_game/load_stage_data/load_diglett_bonus.asm" CheckDiglettBonusStageGameObjectCollisions: ; 0x19ab3 call CheckDiglettBonusStageDiglettHeadsCollision @@ -21025,13 +21017,13 @@ AnimationData_1ac93: ; 0x1ac93 db $40, $0D db $00 ; terminator -INCLUDE "engine/main/draw_sprites/draw_diglett_bonus_sprites.asm" +INCLUDE "engine/pinball_game/draw_sprites/draw_diglett_bonus_sprites.asm" SECTION "bank7", ROMX, BANK[$7] -INCLUDE "engine/main/stage_init/init_blue_field.asm" -INCLUDE "engine/main/ball_init/ball_init_blue_field.asm" -INCLUDE "engine/main/load_stage_data/load_blue_field.asm" +INCLUDE "engine/pinball_game/stage_init/init_blue_field.asm" +INCLUDE "engine/pinball_game/ball_init/ball_init_blue_field.asm" +INCLUDE "engine/pinball_game/load_stage_data/load_blue_field.asm" INCLUDE "engine/collision/blue_stage_game_object_collision.asm" Func_1c715: ; 0x1c715 @@ -29140,7 +29132,7 @@ Func_1f2ff: ; 0x1f2ff ld [wIndicatorStates + 1], a ret -INCLUDE "engine/main/draw_sprites/draw_blue_field_sprites.asm" +INCLUDE "engine/pinball_game/draw_sprites/draw_blue_field_sprites.asm" SECTION "bank8", ROMX, BANK[$8] @@ -31210,9 +31202,9 @@ Func_2112a: ; 0x2112a SECTION "bank9", ROMX, BANK[$9] -INCLUDE "engine/main/stage_init/init_meowth_bonus.asm" -INCLUDE "engine/main/ball_init/ball_init_meowth_bonus.asm" -INCLUDE "engine/main/load_stage_data/load_meowth_bonus.asm" +INCLUDE "engine/pinball_game/stage_init/init_meowth_bonus.asm" +INCLUDE "engine/pinball_game/ball_init/ball_init_meowth_bonus.asm" +INCLUDE "engine/pinball_game/load_stage_data/load_meowth_bonus.asm" CheckMeowthBonusStageGameObjectCollisions: ; 0x2414d call CheckMeowthBonusStageMeowthCollision @@ -35024,10 +35016,10 @@ TileData_2580e: ; 0x2580e db $00 ; terminator -INCLUDE "engine/main/draw_sprites/draw_meowth_bonus_sprites.asm" -INCLUDE "engine/main/stage_init/init_seel_bonus.asm" -INCLUDE "engine/main/ball_init/ball_init_seel_bonus.asm" -INCLUDE "engine/main/load_stage_data/load_seel_bonus.asm" +INCLUDE "engine/pinball_game/draw_sprites/draw_meowth_bonus_sprites.asm" +INCLUDE "engine/pinball_game/stage_init/init_seel_bonus.asm" +INCLUDE "engine/pinball_game/ball_init/ball_init_seel_bonus.asm" +INCLUDE "engine/pinball_game/load_stage_data/load_seel_bonus.asm" CheckSeelBonusStageGameObjectCollisions: ; 0x25bbc call CheckSeelBonusStageSeelHeadCollisions @@ -37929,7 +37921,7 @@ TileData_26b51: ; 0x26b51 db $00 ; terminator -INCLUDE "engine/main/draw_sprites/draw_seel_bonus_sprites.asm" +INCLUDE "engine/pinball_game/draw_sprites/draw_seel_bonus_sprites.asm" SECTION "banka", ROMX, BANK[$a] @@ -40338,8 +40330,8 @@ INCLUDE "text/pokedex_descriptions.asm" SECTION "bankc", ROMX, BANK[$c] -INCLUDE "engine/main/stage_init/init_red_field.asm" -INCLUDE "engine/main/ball_init/ball_init_red_field.asm" +INCLUDE "engine/pinball_game/stage_init/init_red_field.asm" +INCLUDE "engine/pinball_game/ball_init/ball_init_red_field.asm" Func_30164: ; 0x30164 ld a, [wd49b] -- cgit v1.2.3