aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-10-12 02:18:48 -0400
committerJesse Luehrs <doy@tozt.net>2014-10-12 02:18:48 -0400
commit0f13de18a3921e3b4ce107dd6f041a356f524e34 (patch)
treea887b3fcd8bd9e958d959c817ddf0d24726e6ba1
parent69fd133fc4e4e16df4964e810424a720b4ede810 (diff)
downloadnes-snake-0f13de18a3921e3b4ce107dd6f041a356f524e34.tar.gz
nes-snake-0f13de18a3921e3b4ce107dd6f041a356f524e34.zip
handle pausing the game
-rw-r--r--main.s32
1 files changed, 30 insertions, 2 deletions
diff --git a/main.s b/main.s
index 44b7c96..a2e00b2 100644
--- a/main.s
+++ b/main.s
@@ -33,8 +33,9 @@ SLOT 1 $0000 ; location doesn't matter, CHR data isn't in main memory
.ENUM $0000
buttons_pressed DB
+prev_buttons DB
sleeping DB
-game_state DB ; 0: menu, 1: playing, 2: redrawing
+game_state DB ; 0: menu, 1: playing, 2: redrawing, 3: paused
head_x DW
head_y DW
length DB
@@ -272,10 +273,35 @@ handle_right:
LDA buttons_pressed
AND #%00000001
CMP #$00
- BEQ handle_frame
+ BEQ handle_pause
LDA #$03
STA direction
+handle_pause:
+ LDA buttons_pressed
+ EOR prev_buttons
+ AND #%00010000
+ CMP #$00
+ BEQ check_pause
+ LDA buttons_pressed
+ AND #%00010000
+ CMP #$00
+ BEQ check_pause
+ LDA game_state
+ CMP #$01
+ BEQ +
+ LDA #$01
+ STA game_state
+ JMP check_pause
++ LDA #$03
+ STA game_state
+
+check_pause:
+ LDA game_state
+ CMP #$03
+ BNE handle_frame
+ JMP end_game_loop
+
handle_frame:
LDX frame_count
INX
@@ -400,6 +426,8 @@ draw_sprites:
end_game_loop:
RTS ; }}}
read_controller1: ; {{{
+ LDA buttons_pressed
+ STA prev_buttons
; latch
LDA #$01
STA $4016