I can't figure out what the 9th consecutive sprite on a horizontal plane won't display. If I move the 9th sprite down by 8px, it will display. If someone could take a look at the code and tell me what I'm doing wrong, I would appreicate it (please ignore some of the strange tabbing, it's a UBB thing, and not in my code):
Code:
;;--- CODE START ---;;
; INES header stuff
.inesprg 1 ; 1 bank of code
.ineschr 1 ; 1 bank of spr/bkg data
.inesmir 1 ; something always 1
.inesmap 0 ; we use mapper 0
.bank 1 ; following goes in bank 1
.org $FFFA ; start at $FFFA
.dw 0 ; dw stands for Define Word and we give 0 as address for NMI routine
.dw Start ; give address of start of our code for execution on reset of NES.
.dw 0 ; give 0 for address of VBlank interrupt handler, we tell PPU not to
; make an interrupt for VBlank.
.bank 0 ; bank 0 - our place for code.
.org $8000 ; code starts at $8000
test = $00
Start:
lda #%00001000 ; do the setup of PPU
sta $2000 ; that we
lda #%00011110 ; talked about
sta $2001 ; on a previous day
ldx #$00 ; clear X
lda #$3F ; have $2006 tell
sta $2006 ; $2007 to start
lda #$00 ; at $3F00 (pallete).
sta $2006
loadpal: ; this is a freaky loop
lda tilepal, x ; that gives 32 numbers
sta $2007 ; to $2007, ending when
inx ; X is 32, meaning we
cpx #32 ; are done.
bne loadpal ; if X isn't =32, goto "loadpal:" line.
ldx #$00
waitblank: ; this is the wait for VBlank code from above
lda $2002 ; load A with value at location $2002
bpl waitblank ; if bit 7 is not set (not VBlank) keep checking
lda #$00 ; these lines tell $2003
sta $2003 ; to tell
lda #$00 ; $2004 to start
sta $2003 ; at $0000.
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$00
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$08
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$10
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$18
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$20
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$28
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$30
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$38
sta $2004
;this one won't display\/
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$40
sta $2004
;this one will \/
lda #$10
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$40
sta $2004
bne waitblank
infin:
jmp infin ; JuMP to infin. note that this loop never ends. :)
tilepal: .incbin "test.pal" ; include and label our pallete
.bank 2 ; switch to bank 2
.org $0000 ; start at $0000
.incbin "test.bkg" ; empty background first
.incbin "test.spr" ; our sprite pic data
; note these MUST be in that order.
;;--- WERE DONE / CODE END ---;;
; INES header stuff
.inesprg 1 ; 1 bank of code
.ineschr 1 ; 1 bank of spr/bkg data
.inesmir 1 ; something always 1
.inesmap 0 ; we use mapper 0
.bank 1 ; following goes in bank 1
.org $FFFA ; start at $FFFA
.dw 0 ; dw stands for Define Word and we give 0 as address for NMI routine
.dw Start ; give address of start of our code for execution on reset of NES.
.dw 0 ; give 0 for address of VBlank interrupt handler, we tell PPU not to
; make an interrupt for VBlank.
.bank 0 ; bank 0 - our place for code.
.org $8000 ; code starts at $8000
test = $00
Start:
lda #%00001000 ; do the setup of PPU
sta $2000 ; that we
lda #%00011110 ; talked about
sta $2001 ; on a previous day
ldx #$00 ; clear X
lda #$3F ; have $2006 tell
sta $2006 ; $2007 to start
lda #$00 ; at $3F00 (pallete).
sta $2006
loadpal: ; this is a freaky loop
lda tilepal, x ; that gives 32 numbers
sta $2007 ; to $2007, ending when
inx ; X is 32, meaning we
cpx #32 ; are done.
bne loadpal ; if X isn't =32, goto "loadpal:" line.
ldx #$00
waitblank: ; this is the wait for VBlank code from above
lda $2002 ; load A with value at location $2002
bpl waitblank ; if bit 7 is not set (not VBlank) keep checking
lda #$00 ; these lines tell $2003
sta $2003 ; to tell
lda #$00 ; $2004 to start
sta $2003 ; at $0000.
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$00
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$08
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$10
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$18
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$20
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$28
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$30
sta $2004
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$38
sta $2004
;this one won't display\/
lda #$08
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$40
sta $2004
;this one will \/
lda #$10
sta $2004
lda #$00
sta $2004
lda #%00000000
sta $2004
lda #$40
sta $2004
bne waitblank
infin:
jmp infin ; JuMP to infin. note that this loop never ends. :)
tilepal: .incbin "test.pal" ; include and label our pallete
.bank 2 ; switch to bank 2
.org $0000 ; start at $0000
.incbin "test.bkg" ; empty background first
.incbin "test.spr" ; our sprite pic data
; note these MUST be in that order.
;;--- WERE DONE / CODE END ---;;