From 4bcfa81438e15c6c2fbec2ab9f5ea8943887b53d Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 2 Jul 2017 17:45:36 -0500 Subject: Label wCurBonusMultiplier and move bonus multplier logic into separate file --- constants/pinball_game_constants.asm | 2 ++ engine/pinball_game/ball_loss/ball_loss_blue_field.asm | 4 ++-- engine/pinball_game/ball_loss/ball_loss_red_field.asm | 4 ++-- engine/pinball_game/bonus_multiplier.asm | 16 ++++++++++++++++ engine/pinball_game/catchem_mode.asm | 2 +- .../object_collision/blue_stage_resolve_collision.asm | 12 ++++++------ .../object_collision/red_stage_resolve_collision.asm | 14 +++++++------- engine/pinball_game/slot.asm | 4 ++-- engine/pinball_game/stage_init/init_blue_field.asm | 2 +- engine/pinball_game/stage_init/init_red_field.asm | 2 +- engine/pinball_game/stage_init/init_unused_stage.asm | 2 +- main.asm | 18 +----------------- wram.asm | 3 ++- 13 files changed, 44 insertions(+), 41 deletions(-) create mode 100755 engine/pinball_game/bonus_multiplier.asm diff --git a/constants/pinball_game_constants.asm b/constants/pinball_game_constants.asm index f332a0d..2c339d4 100755 --- a/constants/pinball_game_constants.asm +++ b/constants/pinball_game_constants.asm @@ -9,3 +9,5 @@ SPECIAL_MODE_MAP_MOVE EQU 2 ; shares value with SPECIAL_MODE_EVOLUTION ; To encounter Mew, you must first beat Mewtwo's bonus stage 2 times. NUM_MEWTWO_COMPLETIONS_FOR_MEW EQU 2 + +MAX_BONUS_MULTIPLIER EQU 11 diff --git a/engine/pinball_game/ball_loss/ball_loss_blue_field.asm b/engine/pinball_game/ball_loss/ball_loss_blue_field.asm index 6d84ff9..f752b7f 100755 --- a/engine/pinball_game/ball_loss/ball_loss_blue_field.asm +++ b/engine/pinball_game/ball_loss/ball_loss_blue_field.asm @@ -35,11 +35,11 @@ HandleBallLossBlueField: ; 0xde4f ld [wd4de], a ld [wd4df], a call Func_ded6 - ld a, [wd49b] + ld a, [wCurBonusMultiplier] and a jr z, .asm_deb6 dec a - ld [wd49b], a + ld [wCurBonusMultiplier], a ld a, $1 ld [wd49c], a ld de, EndOfBallBonusText diff --git a/engine/pinball_game/ball_loss/ball_loss_red_field.asm b/engine/pinball_game/ball_loss/ball_loss_red_field.asm index 4097151..f342f58 100755 --- a/engine/pinball_game/ball_loss/ball_loss_red_field.asm +++ b/engine/pinball_game/ball_loss/ball_loss_red_field.asm @@ -35,11 +35,11 @@ HandleBallLossRedField: ; 0xdd76 ld [wd4de], a ld [wd4df], a call Func_ddfd - ld a, [wd49b] + ld a, [wCurBonusMultiplier] and a jr z, .asm_dddd dec a - ld [wd49b], a + ld [wCurBonusMultiplier], a ld a, $1 ld [wd49c], a ld de, EndOfBallBonusText diff --git a/engine/pinball_game/bonus_multiplier.asm b/engine/pinball_game/bonus_multiplier.asm new file mode 100755 index 0000000..dfd4a20 --- /dev/null +++ b/engine/pinball_game/bonus_multiplier.asm @@ -0,0 +1,16 @@ +IncrementBonusMultiplier: ; 0x30164 + ld a, [wCurBonusMultiplier] + inc a + cp MAX_BONUS_MULTIPLIER + jr z, .maxed + ld [wCurBonusMultiplier], a + ld a, $1 + ld [wd4ca], a + ret + +.maxed + ld bc, TenMillionPoints + callba AddBigBCD6FromQueue + ld a, $2 + ld [wd4ca], a + ret diff --git a/engine/pinball_game/catchem_mode.asm b/engine/pinball_game/catchem_mode.asm index 9be8ab0..f779c49 100755 --- a/engine/pinball_game/catchem_mode.asm +++ b/engine/pinball_game/catchem_mode.asm @@ -807,7 +807,7 @@ CapturePokemon: ; 0x1052d jr nc, .asm_105d1 ld c, $a call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier .asm_105d1 call SetPokemonOwnedFlag ld a, [wd624] diff --git a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm index 056f0fe..3fa4406 100755 --- a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm +++ b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm @@ -1692,7 +1692,7 @@ Func_1d133: ; 0x1d133 jr nc, .asm_1d185 ld c, $a call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier .asm_1d185 lb de, $16, $10 call PlaySoundEffect @@ -1838,7 +1838,7 @@ ResolveSlowpokeCollision: ; 0x1d216 ret nc ld c, $19 call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier ret .asm_1d2b6 @@ -1960,7 +1960,7 @@ ResolveCloysterCollision: ; 0x1d32d ret nc ld c, $19 call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier ret .asm_1d3cb @@ -2091,7 +2091,7 @@ ResolveBlueStageBonusMultiplierCollision: ; 0x1d438 jr nc, .asm_1d4e9 ld c, $19 call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier .asm_1d4e9 ld a, [wd60c] ld [wd614], a @@ -3903,7 +3903,7 @@ Func_1ddc7: ; 0x1ddc7 jr nc, .asm_1dde4 ld c, $a call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier .asm_1dde4 xor a ld [wd55a], a @@ -3919,7 +3919,7 @@ Func_1ddf4: ; 0x1ddf4 jr nc, .asm_1de11 ld c, $a call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier .asm_1de11 ld a, $1 ld [wd55a], a diff --git a/engine/pinball_game/object_collision/red_stage_resolve_collision.asm b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm index 94d195d..b4328c5 100755 --- a/engine/pinball_game/object_collision/red_stage_resolve_collision.asm +++ b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm @@ -132,7 +132,7 @@ BgTileData_1472f: Func_14733: ; 0x14733 ld c, $0 - ld a, [wd49b] + ld a, [wCurBonusMultiplier] and a jr z, .asm_1473d ld c, $1 @@ -146,7 +146,7 @@ Func_14733: ; 0x14733 Func_14746: ; 0x14746 ld c, $0 - ld a, [wd49b] + ld a, [wCurBonusMultiplier] and a jr z, .asm_14750 ld c, $2 @@ -426,7 +426,7 @@ Func_14920: ; 0x14920 jr nc, .asm_14937 ld c, $a call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier .asm_14937 ld a, $1 ld [wd55a], a @@ -439,7 +439,7 @@ Func_14947: ; 0x14947 jr nc, .asm_1495e ld c, $a call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier .asm_1495e xor a ld [wd55a], a @@ -4505,7 +4505,7 @@ ResolveBellsproutCollision: ; 0x15e93 ret nc ld c, $19 call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier ret .asm_15f35 @@ -5674,7 +5674,7 @@ Func_1669e: ; 0x1669e jr nc, .asm_166f0 ld c, $a call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier .asm_166f0 lb de, $16, $10 call PlaySoundEffect @@ -7105,7 +7105,7 @@ ResolveRedStageBonusMultiplierCollision: ; 016d9d jr nc, .asm_16e24 ld c, $19 call Func_e55 - callba z, Func_30164 + callba z, IncrementBonusMultiplier .asm_16e24 ld a, [wd60c] ld [wd614], a diff --git a/engine/pinball_game/slot.asm b/engine/pinball_game/slot.asm index f9628f2..1cefe2b 100755 --- a/engine/pinball_game/slot.asm +++ b/engine/pinball_game/slot.asm @@ -263,7 +263,7 @@ SlotRewardPikachuSaver: ; 0xef83 ret SlotRewardBonusMultiplier: ; 0xefa7 - callba Func_30164 + callba IncrementBonusMultiplier ret SlotRewardSmallPoints: ; 0xefb2 @@ -464,7 +464,7 @@ SlotBonusMultiplier: ; 0xf0c1 call .DivideBy25 ld a, c cp b - callba nz, Func_30164 + callba nz, IncrementBonusMultiplier callba Func_16f95 ld a, [wd60c] callba Func_f154 ; no need for BankSwitch here... diff --git a/engine/pinball_game/stage_init/init_blue_field.asm b/engine/pinball_game/stage_init/init_blue_field.asm index 62d2e8b..666896b 100755 --- a/engine/pinball_game/stage_init/init_blue_field.asm +++ b/engine/pinball_game/stage_init/init_blue_field.asm @@ -11,7 +11,7 @@ InitBlueField: ; 0x1c000 ld [hld], a ld [hl], a ld [wNumPartyMons], a - ld [wd49b], a + ld [wCurBonusMultiplier], a ld [wd4c9], a ld [wBallType], a ld [wd4c8], a diff --git a/engine/pinball_game/stage_init/init_red_field.asm b/engine/pinball_game/stage_init/init_red_field.asm index d92d54e..ad8bf0a 100755 --- a/engine/pinball_game/stage_init/init_red_field.asm +++ b/engine/pinball_game/stage_init/init_red_field.asm @@ -11,7 +11,7 @@ InitRedField: ; 0x30000 ld [hld], a ld [hl], a ld [wNumPartyMons], a - ld [wd49b], a + ld [wCurBonusMultiplier], a ld [wd4c9], a ld [wBallType], a ld [wd4c8], a diff --git a/engine/pinball_game/stage_init/init_unused_stage.asm b/engine/pinball_game/stage_init/init_unused_stage.asm index 4fac82d..ee02abc 100755 --- a/engine/pinball_game/stage_init/init_unused_stage.asm +++ b/engine/pinball_game/stage_init/init_unused_stage.asm @@ -22,7 +22,7 @@ Func_18000: ; 0x18000 ld [hld], a ld [hl], a ld [wNumPartyMons], a - ld [wd49b], a + ld [wCurBonusMultiplier], a ld [wd4c9], a ld a, $1 ld [wd49d], a diff --git a/main.asm b/main.asm index bc451a4..ecc8347 100755 --- a/main.asm +++ b/main.asm @@ -4173,23 +4173,7 @@ SECTION "bankc", ROMX, BANK[$c] 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] - inc a - cp $b - jr z, .asm_30175 - ld [wd49b], a - ld a, $1 - ld [wd4ca], a - ret - -.asm_30175 - ld bc, TenMillionPoints - callba AddBigBCD6FromQueue - ld a, $2 - ld [wd4ca], a - ret +INCLUDE "engine/pinball_game/bonus_multiplier.asm" Func_30188: ; 0x30188 ld a, [wd5ca] diff --git a/wram.asm b/wram.asm index 8a5568d..f7819a4 100755 --- a/wram.asm +++ b/wram.asm @@ -298,7 +298,8 @@ wd499:: ; 0xd499 wd49a:: ; 0xd49a ds $1 -wd49b:: ; 0xd49b +wCurBonusMultiplier:: ; 0xd49b +; Current value of the bonus multiplier. See MAX_BONUS_MULTIPLIER. ds $1 wd49c:: ; 0xd49c -- cgit v1.2.3