Hi everyone,
I've got a status bar which is working fine (with sprite 0 hit) here's the code in my NMI routine :
Everything's fine for now.
What I'd like to do is to swap some colors in the palette for the status bar, and put the original colors back for the rest of the screen.
I manage to do this BUT instead of having the $2000 nametable starting "below" the status bar, it begins "under" the status bar. Am I clear ? (not sure ...)
Here's the code I used :
I guess I'm doing something wrong, writing to a wrong register, or forgetting to write to a register ...
Any advice ?
I've got a status bar which is working fine (with sprite 0 hit) here's the code in my NMI routine :
Code:
LDA #$00
STA $2006
STA $2006
STA $2005
STA $2005
; switch CHR bank
LDA #$03
TAX
STA bankTable,X
; switch nametable to $2400
LDA ctrl_var
EOR #%00000001
STA $2000
@WaitNotSprite0:
LDA $2002
AND #%01000000
BNE @WaitNotSprite0 ; wait until sprite 0 not hit
@WaitSprite0:
LDA $2002
AND #%01000000
BEQ @WaitSprite0 ; wait until sprite 0 is hit
LDX #$10
@WaitScanline:
DEX
BNE @WaitScanline
; switch CHR bank
LDA #$00
TAX
STA bankTable,X
; switch nametable back $2000
LDA ctrl_var
STA $2000
STA $2006
STA $2006
STA $2005
STA $2005
; switch CHR bank
LDA #$03
TAX
STA bankTable,X
; switch nametable to $2400
LDA ctrl_var
EOR #%00000001
STA $2000
@WaitNotSprite0:
LDA $2002
AND #%01000000
BNE @WaitNotSprite0 ; wait until sprite 0 not hit
@WaitSprite0:
LDA $2002
AND #%01000000
BEQ @WaitSprite0 ; wait until sprite 0 is hit
LDX #$10
@WaitScanline:
DEX
BNE @WaitScanline
; switch CHR bank
LDA #$00
TAX
STA bankTable,X
; switch nametable back $2000
LDA ctrl_var
STA $2000
Everything's fine for now.
What I'd like to do is to swap some colors in the palette for the status bar, and put the original colors back for the rest of the screen.
I manage to do this BUT instead of having the $2000 nametable starting "below" the status bar, it begins "under" the status bar. Am I clear ? (not sure ...)
Here's the code I used :
Code:
LDA #$00
STA $2006
STA $2006
STA $2005
STA $2005
; PALETTE SWAP
LDA #$3f
STA $2006
LDA #$01
STA $2006
LDA #$30
STA $2007
LDA #$00
STA $2006
STA $2006
; switch CHR bank
LDA #$03
TAX
STA bankTable,X
; switch nametable to $2400
LDA ctrl_var
EOR #%00000001
STA $2000
@WaitNotSprite0:
LDA $2002
AND #%01000000
BNE @WaitNotSprite0 ; wait until sprite 0 not hit
@WaitSprite0:
LDA $2002
AND #%01000000
BEQ @WaitSprite0 ; wait until sprite 0 is hit
LDX #$10
@WaitScanline:
DEX
BNE @WaitScanline
LDA #%00000001 ; rendering disabled + grayscale
STA $2001
; PALETTE SWAP
LDA #$3F
STA $2006
LDA #$01
STA $2006
LDA #$1A
STA $2007
LDA #$00
STA $2006
STA $2006
; switch CHR bank
LDA #$00
TAX
STA bankTable,X
; switch nametable back $2000
LDA ctrl_var
STA $2000
STA $2006
STA $2006
STA $2005
STA $2005
; PALETTE SWAP
LDA #$3f
STA $2006
LDA #$01
STA $2006
LDA #$30
STA $2007
LDA #$00
STA $2006
STA $2006
; switch CHR bank
LDA #$03
TAX
STA bankTable,X
; switch nametable to $2400
LDA ctrl_var
EOR #%00000001
STA $2000
@WaitNotSprite0:
LDA $2002
AND #%01000000
BNE @WaitNotSprite0 ; wait until sprite 0 not hit
@WaitSprite0:
LDA $2002
AND #%01000000
BEQ @WaitSprite0 ; wait until sprite 0 is hit
LDX #$10
@WaitScanline:
DEX
BNE @WaitScanline
LDA #%00000001 ; rendering disabled + grayscale
STA $2001
; PALETTE SWAP
LDA #$3F
STA $2006
LDA #$01
STA $2006
LDA #$1A
STA $2007
LDA #$00
STA $2006
STA $2006
; switch CHR bank
LDA #$00
TAX
STA bankTable,X
; switch nametable back $2000
LDA ctrl_var
STA $2000
I guess I'm doing something wrong, writing to a wrong register, or forgetting to write to a register ...
Any advice ?