aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mssola@mssola.com>2026-03-06 16:14:17 +0100
committerMiquel Sabaté Solà <mssola@mssola.com>2026-03-06 16:14:17 +0100
commit3302f760f1461bc4582c99ee2e4ed0ccc1d5b186 (patch)
tree8a9808677dc972c1115f6d6a75cab86a6651992a /include
parent695d225256ed129ce55eb2dfde9de33d3d5f3af9 (diff)
downloadjetpac.nes-3302f760f1461bc4582c99ee2e4ed0ccc1d5b186.tar.gz
jetpac.nes-3302f760f1461bc4582c99ee2e4ed0ccc1d5b186.zip
Don't toggle pause from a holded button
If you just holded the Select or Start buttons, it would be forever toggling pause/unpause, which is an unexpected behavior. Fix this by saving which value from the joypad was previously read. With this, whenever the pause timer reaches zero, we can check whether either button is still pressed, and avoid toggling if that is the case. Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
Diffstat (limited to 'include')
-rw-r--r--include/joypad.s5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/joypad.s b/include/joypad.s
index f7268e8..cc15d02 100644
--- a/include/joypad.s
+++ b/include/joypad.s
@@ -13,6 +13,9 @@
m_joypad1 = $4016
;; m_joypad2 = $4017
+ ;; The previous reading from the latest read controller.
+ zp_prev = $21
+
;; After running a `read_*` function these two variables will contain the
;; given result.
zp_buttons1 = $22
@@ -68,5 +71,7 @@
;; Shortcut for reading the joypad from the first player safely.
.macro READ_JOYPAD1
ldx #$00
+ lda Joypad::zp_buttons1
+ sta Joypad::zp_prev
jsr Joypad::read_x
.endmacro