From b37293abdf2f7a8c55e193d0a4cbff8a273f4dfe Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 2 Oct 2014 14:09:57 -0400 Subject: start drawing sprites --- mario.chr | Bin 0 -> 8192 bytes test.s | 54 ++++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 mario.chr diff --git a/mario.chr b/mario.chr new file mode 100644 index 0000000..d150ccc Binary files /dev/null and b/mario.chr differ diff --git a/test.s b/test.s index aaefd0a..5b76d03 100644 --- a/test.s +++ b/test.s @@ -4,12 +4,13 @@ DEFAULTSLOT 0 SLOT 0 $8000 SLOT 1 $E000 SLOT 2 $6000 +SLOT 3 $0000 .ENDME .ROMBANKMAP -BANKSTOTAL 2 +BANKSTOTAL 3 BANKSIZE $2000 -BANKS 2 +BANKS 3 .ENDRO @@ -35,13 +36,13 @@ clrmem: LDA #$00 STA $0000, x STA $0100, x - STA $0200, x + STA $0300, x STA $0400, x STA $0500, x STA $0600, x STA $0700, x LDA #$FE - STA $0300, x + STA $0200, x ;move all sprites off screen INX BNE clrmem @@ -49,7 +50,21 @@ vblankwait2: ; Second wait for vblank, PPU is ready after this BIT $2002 BPL vblankwait2 - LDA #%10000000 ;intensify blues +LoadPalettes: + LDA $2002 ; read PPU status to reset the high/low latch + LDA #$3F + STA $2006 ; write the high byte of $3F00 address + LDA #$00 + STA $2006 ; write the low byte of $3F00 address + LDX #$00 +LoadPalettesLoop: + LDA palette.w, x ;load palette byte + STA $2007 ;write to PPU + INX ;set index to next byte + CPX #$20 + BNE LoadPalettesLoop ;if x = $20, 32 bytes copied, all done + + LDA #%10010000 ;intensify blues and enable sprites STA $2001 LDA #%10000000 ; enable NMI interrupts @@ -83,21 +98,21 @@ end_read_controller1: RTS turn_blue: - LDA #%10000000 + LDA #%10010000 STA $2001 LDA #$00 STA current_state.w RTS turn_green: - LDA #%01000000 + LDA #%01010000 STA $2001 LDA #$01 STA current_state.w RTS turn_red: - LDA #%00100000 + LDA #%00110000 STA $2001 LDA #$02 STA current_state.w @@ -106,6 +121,19 @@ turn_red: NMI: JSR read_controller1 + LDA #$00 + STA $2003 + LDA #$02 + STA $4014 + + LDA #$80 + STA $0200 + STA $0203 + LDA #$00 + STA $0201 + LDA #$00 + STA $0202 + ; if A is not pressed, return LDA buttons_pressed.w AND #%10000000 @@ -133,6 +161,11 @@ color_set: .bank 1 slot 1 + .orga $E000 +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 + .orga $FFFA ;first of the three vectors starts here .dw NMI ;when an NMI happens (once per frame if enabled) the ;processor will jump to the label NMI: @@ -145,3 +178,8 @@ color_set: .org $0000 buttons_pressed: .ds 1, $00 current_state: .ds 1, $00 + + + .bank 2 slot 3 + .org $0000 + .incbin "mario.chr" -- cgit v1.2.3-54-g00ecf