From bb2990f82f5aa901f0aa83e0bec4658d68548663 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 11 Oct 2014 23:25:28 -0400 Subject: move all game logic out of the nmi interrupt drawing is now done in the main game code, by writing into the $07 page, and the nmi interrupt now just steps through that page and does the drawing actions described there --- main.s | 82 ++++++++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 25 deletions(-) diff --git a/main.s b/main.s index ce612bb..4d8604c 100644 --- a/main.s +++ b/main.s @@ -48,6 +48,7 @@ vram_addr_low DB vram_addr_high DB body_test_x DB body_test_y DB +num_draws DB .ENDE ; }}} ; }}} @@ -169,34 +170,33 @@ NMI: JMP end_nmi draw_game: - LDX #$00 - JSR draw_sprite_at_head - LDA head_x - SEC - SBC length - STA head_x - LDA head_y - SEC - SBC length - STA head_y - LDX #$20 - JSR draw_sprite_at_head - LDA head_x - CLC - ADC length - STA head_x - LDA head_y +- LDA #$00 CLC - ADC length - STA head_y + ADC num_draws + ADC num_draws + ADC num_draws + SEC + SBC #$03 + TAX + LDA $0700, x + STA $2006 + INX + LDA $0700, x + STA $2006 + INX + LDA $0700, x + STA $2007 + LDX num_draws + DEX + STX num_draws + CPX #$00 + BNE - LDA #$20 STA $2006 LDA #$00 STA $2006 - JMP do_dma - do_dma: LDA #$00 STA $2003 @@ -366,6 +366,26 @@ eat_apple: + JSR new_apple end_game_loop: + LDX #$00 + JSR draw_sprite_at_head + LDA head_x + SEC + SBC length + STA head_x + LDA head_y + SEC + SBC length + STA head_y + LDX #$20 + JSR draw_sprite_at_head + LDA head_x + CLC + ADC length + STA head_x + LDA head_y + CLC + ADC length + STA head_y RTS ; }}} read_controller1: ; {{{ ; latch @@ -588,13 +608,25 @@ draw_sprite_at_head: ; {{{ ADC #$00 STA vram_addr_high + TXA + TAY + LDA #$00 + ADC num_draws + ADC num_draws + ADC num_draws + TAX LDA vram_addr_high - STA $2006 + STA $0700, x + INX LDA vram_addr_low - STA $2006 + STA $0700, x + INX + TYA + STA $0700, x - TXA - STA $2007 + LDX num_draws + INX + STX num_draws RTS ; }}} test_body_collision ; {{{ -- cgit v1.2.3-54-g00ecf