aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-10-09 18:51:53 -0400
committerJesse Luehrs <doy@tozt.net>2014-10-09 18:52:18 -0400
commitbfa5d4aeeb976ebf7718e27cd4d82f930cbdbece (patch)
tree31213dcf79a60e0ab7af2a63c9a8db8c42ba8678
parent74e56d8c86ab7e1e373dbc5d2ed684a7094e316e (diff)
downloadnes-snake-bfa5d4aeeb976ebf7718e27cd4d82f930cbdbece.tar.gz
nes-snake-bfa5d4aeeb976ebf7718e27cd4d82f930cbdbece.zip
move snake drawing to the background layer
since we can only have 8 sprites per scanline and 64 sprites total this implementation doesn't erase old tiles yet
-rw-r--r--main.s61
1 files changed, 52 insertions, 9 deletions
diff --git a/main.s b/main.s
index c280059..724a4ce 100644
--- a/main.s
+++ b/main.s
@@ -43,6 +43,8 @@ frame_count DB
rand_state DB
rand_out DB
apple INSTANCEOF point
+vram_addr_low DB
+vram_addr_high DB
.ENDE
; }}}
; }}}
@@ -148,23 +150,64 @@ NMI:
PHA
LDA game_state
- BEQ reset_sprites
+ BEQ reset_sprites_jmp
CMP #$01
BEQ draw_game
- CMP #$02
- BEQ end_nmi
+ JMP end_nmi
+reset_sprites_jmp:
+ JMP reset_sprites
draw_game:
+ LDA #$20
+ STA vram_addr_high
+ LDA #$E0
+ STA vram_addr_low
+
LDY #$01
LDA (head), y
- STA $0200
- LDA #$00
- STA $0201
- LDA #$00
- STA $0202
+ SEC
+ SBC #$35
+ LSR
+ LSR
+ LSR
+ TAX
+- CLC
+ LDA vram_addr_low
+ ADC #$20
+ STA vram_addr_low
+ LDA vram_addr_high
+ ADC #$00
+ STA vram_addr_high
+ DEX
+ BNE -
+
LDY #$00
LDA (head), y
- STA $0203
+ SEC
+ SBC #$40
+ LSR
+ LSR
+ LSR
+ CLC
+ ADC #$08
+ ADC vram_addr_low
+ STA vram_addr_low
+ LDA vram_addr_high
+ ADC #$00
+ STA vram_addr_high
+
+ LDA vram_addr_high
+ STA $2006
+ LDA vram_addr_low
+ STA $2006
+
+ LDA #$00
+ STA $2007
+
+ LDA #$20
+ STA $2006
+ LDA #$00
+ STA $2006
LDA apple.y
STA $0204