From f1bdf7c32dc65673f10ebf1f17c58e29dc568087 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 6 Oct 2014 11:36:43 -0400 Subject: restructure code to move things out of the nmi interrupt --- main.s | 80 +++++++++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 30 deletions(-) diff --git a/main.s b/main.s index d48f436..32194b2 100644 --- a/main.s +++ b/main.s @@ -17,6 +17,7 @@ BANKS 1 .ENUM $0000 buttons_pressed DB +sleeping DB head_x DB head_y DB direction DB ; 0: up, 1: down, 2: left, 3: right @@ -73,6 +74,7 @@ clrmem: ; initialize variables in ram LDA #$00 STA buttons_pressed + STA sleeping STA direction STA frame_count LDA #$80 @@ -107,34 +109,11 @@ LoadPalettesLoop: STA $2000 loop: - JMP loop - - -read_controller1: - ; latch - LDA #$01 - STA $4016 - LDA #$00 - STA $4016 - - ; clock - LDX #$00 -read_controller1_values: - CPX #$08 - BPL end_read_controller1 + INC sleeping +sleep: + LDA sleeping + BNE sleep - LDA $4016 - AND #%00000001 - ASL buttons_pressed - ORA buttons_pressed - STA buttons_pressed - INX - JMP read_controller1_values - -end_read_controller1: - RTS - -NMI: JSR read_controller1 handle_up: @@ -174,7 +153,7 @@ handle_frame: INX STX frame_count CPX frame_skip - BMI draw_snake + BMI next_frame LDA #$00 STA frame_count @@ -199,7 +178,17 @@ apply_direction: ADC head_x, y ; head_x offset by 1 is head_y STA head_x, y -draw_snake: +next_frame: + JMP loop + + +NMI: + PHA + TXA + PHA + TYA + PHA + LDA head_y STA $0200 LDA #$00 @@ -214,9 +203,40 @@ draw_snake: LDA #$02 STA $4014 -nmi_return: + LDA #$00 + STA sleeping + + PLA + TAY + PLA + TAX + PLA RTI +read_controller1: + ; latch + LDA #$01 + STA $4016 + LDA #$00 + STA $4016 + + ; clock + LDX #$00 +read_controller1_values: + CPX #$08 + BPL end_read_controller1 + + LDA $4016 + AND #%00000001 + ASL buttons_pressed + ORA buttons_pressed + STA buttons_pressed + INX + JMP read_controller1_values + +end_read_controller1: + RTS + palette: .db $0F,$31,$32,$33,$0F,$35,$36,$37,$0F,$39,$3A,$3B,$0F,$3D,$3E,$0F .db $0F,$1C,$15,$14,$0F,$02,$38,$3C,$0F,$1C,$15,$14,$0F,$02,$38,$3C -- cgit v1.2.3-54-g00ecf