summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-07-02 17:48:58 -0500
committerMarcus Huderle <huderlem@gmail.com>2017-07-02 17:48:58 -0500
commitd537a5c7bf2ad67b137482775b3b362da3590d62 (patch)
tree2132f926e505a30ed32438daf474f0a2a9773f0a
parent4bcfa81438e15c6c2fbec2ab9f5ea8943887b53d (diff)
Move extra ball logic into separate file
-rwxr-xr-xengine/pinball_game/extra_ball.asm36
-rwxr-xr-xengine/pinball_game/object_collision/blue_stage_resolve_collision.asm4
-rwxr-xr-xengine/pinball_game/object_collision/red_stage_resolve_collision.asm4
-rwxr-xr-xmain.asm37
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
diff --git a/main.asm b/main.asm
index ecc8347..1814a63 100755
--- a/main.asm
+++ b/main.asm
@@ -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]