summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rwxr-xr-xengine/pinball_game/ball_saver/ball_saver_20.asm12
-rwxr-xr-xengine/pinball_game/ball_saver/ball_saver_30.asm12
-rwxr-xr-xengine/pinball_game/ball_saver/ball_saver_60.asm12
-rwxr-xr-xengine/pinball_game/ball_saver/ball_saver_90.asm12
-rwxr-xr-xengine/pinball_game/ball_saver/ball_saver_catchem_mode.asm51
5 files changed, 99 insertions, 0 deletions
diff --git a/engine/pinball_game/ball_saver/ball_saver_20.asm b/engine/pinball_game/ball_saver/ball_saver_20.asm
new file mode 100755
index 0000000..db4c55b
--- /dev/null
+++ b/engine/pinball_game/ball_saver/ball_saver_20.asm
@@ -0,0 +1,12 @@
+Start20SecondSaverTimer: ; 0xdbba
+ ld a, $1
+ ld [wBallSaverIconOn], a
+ ld a, $ff
+ ld [wd4a2], a
+ ld a, 59
+ ld [wBallSaverTimerFrames], a
+ ld a, 20
+ ld [wBallSaverTimerSeconds], a
+ ld a, $2
+ ld [wNumTimesBallSavedTextWillDisplay], a
+ ret
diff --git a/engine/pinball_game/ball_saver/ball_saver_30.asm b/engine/pinball_game/ball_saver/ball_saver_30.asm
new file mode 100755
index 0000000..be1dda9
--- /dev/null
+++ b/engine/pinball_game/ball_saver/ball_saver_30.asm
@@ -0,0 +1,12 @@
+Start30SecondSaverTimer: ; 0xef35
+ ld a, $0
+ ld [wBallSaverIconOn], a
+ ld a, $ff
+ ld [wd4a2], a
+ ld a, 59
+ ld [wBallSaverTimerFrames], a
+ ld a, 30
+ ld [wBallSaverTimerSeconds], a
+ ld a, $2
+ ld [wNumTimesBallSavedTextWillDisplay], a
+ ret
diff --git a/engine/pinball_game/ball_saver/ball_saver_60.asm b/engine/pinball_game/ball_saver/ball_saver_60.asm
new file mode 100755
index 0000000..9b6b5ef
--- /dev/null
+++ b/engine/pinball_game/ball_saver/ball_saver_60.asm
@@ -0,0 +1,12 @@
+Start60SecondSaverTimer: ; 0xef4f
+ ld a, $0
+ ld [wBallSaverIconOn], a
+ ld a, $ff
+ ld [wd4a2], a
+ ld a, 59
+ ld [wBallSaverTimerFrames], a
+ ld a, 60
+ ld [wBallSaverTimerSeconds], a
+ ld a, $2
+ ld [wNumTimesBallSavedTextWillDisplay], a
+ ret
diff --git a/engine/pinball_game/ball_saver/ball_saver_90.asm b/engine/pinball_game/ball_saver/ball_saver_90.asm
new file mode 100755
index 0000000..7acda2c
--- /dev/null
+++ b/engine/pinball_game/ball_saver/ball_saver_90.asm
@@ -0,0 +1,12 @@
+Start90SecondSaverTimer: ; 0xef69
+ ld a, $0
+ ld [wBallSaverIconOn], a
+ ld a, $ff
+ ld [wd4a2], a
+ ld a, 59
+ ld [wBallSaverTimerFrames], a
+ ld a, 90
+ ld [wBallSaverTimerSeconds], a
+ ld a, $2
+ ld [wNumTimesBallSavedTextWillDisplay], a
+ ret
diff --git a/engine/pinball_game/ball_saver/ball_saver_catchem_mode.asm b/engine/pinball_game/ball_saver/ball_saver_catchem_mode.asm
new file mode 100755
index 0000000..ac6c163
--- /dev/null
+++ b/engine/pinball_game/ball_saver/ball_saver_catchem_mode.asm
@@ -0,0 +1,51 @@
+InitBallSaverForCatchEmMode: ; 0xdbd4
+ ld a, [wBallSaverTimerFrames]
+ ld [wBallSaverTimerFramesBackup], a
+ ld a, [wBallSaverTimerSeconds]
+ ld [wBallSaverTimerSecondsBackup], a
+ ld a, [wNumTimesBallSavedTextWillDisplay]
+ ld [wd4a8], a
+ ld a, $0
+ ld [wBallSaverIconOn], a
+ ld a, $ff
+ ld [wd4a2], a
+ ld a, 59
+ ld [wBallSaverTimerFrames], a
+ ld a, 60
+ ld [wBallSaverTimerSeconds], a
+ ld a, $ff
+ ld [wNumTimesBallSavedTextWillDisplay], a
+ ret
+
+RestoreBallSaverAfterCatchEmMode: ; 0xdc00
+ ld a, [wBallSaverTimerFramesBackup]
+ ld [wBallSaverTimerFrames], a
+ ld a, [wBallSaverTimerSecondsBackup]
+ ld [wBallSaverTimerSeconds], a
+ ld a, [wd4a8]
+ ld [wNumTimesBallSavedTextWillDisplay], a
+ ld a, [wBallSaverTimerSeconds]
+ and a
+ jr z, .asm_dc1a
+ ld a, $1
+.asm_dc1a
+ ld [wBallSaverIconOn], a
+ ld a, [wBallSaverTimerSeconds]
+ ld c, $0
+ cp $2
+ jr c, .asm_dc34
+ ld c, $4
+ cp $6
+ jr c, .asm_dc34
+ ld c, $10
+ cp $b
+ jr c, .asm_dc34
+ ld c, $ff
+.asm_dc34
+ ld a, c
+ ld [wd4a2], a
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret z
+ callba Func_14707
+ ret