diff options
-rwxr-xr-x | engine/pinball_game/extra_ball.asm | 36 | ||||
-rwxr-xr-x | engine/pinball_game/object_collision/blue_stage_resolve_collision.asm | 4 | ||||
-rwxr-xr-x | engine/pinball_game/object_collision/red_stage_resolve_collision.asm | 4 | ||||
-rwxr-xr-x | main.asm | 37 |
4 files changed, 41 insertions, 40 deletions
diff --git a/engine/pinball_game/extra_ball.asm b/engine/pinball_game/extra_ball.asm new file mode 100755 index 0000000..babec0a --- /dev/null +++ b/engine/pinball_game/extra_ball.asm @@ -0,0 +1,36 @@ +HandleExtraBall: ; 0x30188
+; Grants the player an extra Ball, if they qualify for it.
+ ld a, [wd5ca]
+ and a
+ ret nz
+ ld a, [wd4ca]
+ and a
+ ret z
+ cp $1
+ jr nz, .asm_301a7
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5cc
+ ld de, ExtraBallText
+ call LoadTextHeader
+ jr .asm_301c9
+
+.asm_301a7
+ ld bc, $1000
+ ld de, $0000
+ push bc
+ push de
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5d4
+ ld de, DigitsText1to9
+ call Func_32cc
+ pop de
+ pop bc
+ ld hl, wd5cc
+ ld de, ExtraBallSpecialBonusText
+ call LoadTextHeader
+.asm_301c9
+ xor a
+ ld [wd4ca], a
+ ret
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 3fa4406..4810d00 100755 --- a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm +++ b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm @@ -17,7 +17,7 @@ ResolveBlueFieldTopGameObjectCollisions: ; 0x1c715 callba Func_146a9
call Func_1f27b
call Func_1df15
- callba Func_30188
+ callba HandleExtraBall
ld a, $0
callba Func_10000
ret
@@ -42,7 +42,7 @@ ResolveBlueFieldBottomGameObjectCollisions: ; 0x1c769 callba Func_146a2
call Func_1f261
call Func_1de93
- callba Func_30188
+ callba HandleExtraBall
ld a, $0
callba Func_10000
ret
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 b4328c5..4fa2161 100755 --- a/engine/pinball_game/object_collision/red_stage_resolve_collision.asm +++ b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm @@ -16,7 +16,7 @@ ResolveRedFieldTopGameObjectCollisions: ; 0x1460e call Func_146a9
call Func_174ea
call Func_148cf
- callba Func_30188
+ callba HandleExtraBall
ld a, $0
callba Func_10000
ret
@@ -41,7 +41,7 @@ ResolveRedFieldBottomGameObjectCollisions: ; 0x14652 call Func_14733
call Func_146a2
call Func_174d0
- callba Func_30188
+ callba HandleExtraBall
ld a, $0
callba Func_10000
ret
@@ -4174,42 +4174,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" INCLUDE "engine/pinball_game/bonus_multiplier.asm" - -Func_30188: ; 0x30188 - ld a, [wd5ca] - and a - ret nz - ld a, [wd4ca] - and a - ret z - cp $1 - jr nz, .asm_301a7 - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5cc - ld de, ExtraBallText - call LoadTextHeader - jr .asm_301c9 - -.asm_301a7 - ld bc, $1000 - ld de, $0000 - push bc - push de - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5d4 - ld de, DigitsText1to9 - call Func_32cc - pop de - pop bc - ld hl, wd5cc - ld de, ExtraBallSpecialBonusText - call LoadTextHeader -.asm_301c9 - xor a - ld [wd4ca], a - ret +INCLUDE "engine/pinball_game/extra_ball.asm" Func_301ce: ; 0x301ce ld a, [wCurrentStage] |