aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mssola@mssola.com>2026-03-07 23:11:09 +0100
committerMiquel Sabaté Solà <mssola@mssola.com>2026-03-07 23:11:09 +0100
commite8f39dc4a7cc19fb97e24ec0819ccd964cbd325f (patch)
tree2392d04e46abe4c1e112a027b81f63b6b3c05ffd /src
parent60f21153e18ccf45cb120d50f6d5f5c860de78f2 (diff)
downloadjetpac.nes-e8f39dc4a7cc19fb97e24ec0819ccd964cbd325f.tar.gz
jetpac.nes-e8f39dc4a7cc19fb97e24ec0819ccd964cbd325f.zip
Initialize 'zp_pause_toggle' before NMI enablement
Otherwise we might randomly get weird scenarios like the title screen not showing up properly. Fixes: bc99212539f6 ("Toggle a "Paused" message on top of the screen") Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
Diffstat (limited to 'src')
-rw-r--r--src/driver.s10
-rw-r--r--src/jetpac.s7
2 files changed, 15 insertions, 2 deletions
diff --git a/src/driver.s b/src/driver.s
index 1449de5..1ac5718 100644
--- a/src/driver.s
+++ b/src/driver.s
@@ -49,6 +49,15 @@
;; this, but we have plenty of RAM left.
zp_pause_toggle = $39
+ ;; Initialization routine that is to be called before enabling NMIs back for
+ ;; the first time.
+ .proc init_before_nmi
+ lda #0
+ sta Driver::zp_pause_toggle
+
+ rts
+ .endproc
+
;; Switch from the title screen to the main screen. Note that this function
;; is to be called with the PPU disabled. If that's not the case, then it
;; will set the proper values to disable it on the next `nmi` call and set
@@ -157,7 +166,6 @@
lda #0
sta zp_pause_timer
sta Driver::zp_moved_out
- sta Driver::zp_pause_toggle
;; Initialize variables for sprite cycling.
sta zp_next_bullet_cycle
diff --git a/src/jetpac.s b/src/jetpac.s
index 5c1c099..52ec1f7 100644
--- a/src/jetpac.s
+++ b/src/jetpac.s
@@ -121,7 +121,8 @@
sta PPU::zp_control
;; Initialize other global variables which the rest of the game assume to
- ;; have zero as their initial values.
+ ;; have zero as their initial values. Note that it's important to have these
+ ;; variables defined before
sta Globals::zp_flags
sta Joypad::zp_buttons1
sta Joypad::zp_buttons2
@@ -146,6 +147,10 @@
;; Initialize some variables from the "Game Over" side of the game.
jsr Over::init
+ ;; Initialize variables from the game's driver that need to be set before
+ ;; NMIs start ticking.
+ jsr Driver::init_before_nmi
+
;; Initialize some PAL-specific constants.
.ifdef PAL
lda #0