Are you new to 6502, NES, or even programming in general? Post any of your questions here. Remember - the only dumb question is the question that remains unasked.
Moderator: Moderators
battagline
Posts: 152 Joined: Wed Sep 05, 2018 11:13 am
Location: Colorado
Contact:
Post
by battagline » Tue Oct 16, 2018 8:41 am
When I was looking through rainwarrior's ca65 template, setting up the nametable seemed pretty straight forward. He was using the x and y register and looping 960 times doing a STA on $2007. I was able to play around with that code and thought I understood it. But when I'm trying that in the game I'm working on, it seems to only be setting the left column of background tiles.
I'm calling this proc on reset:
Code: Select all
.proc load_background
stx nametable_reg_x
sty nametable_reg_y
lda PPU_STATUS ; PPU_STATUS = $2002
lda #$20
sta PPU_ADDR ; PPU_ADDR = $2006
lda #$00
sta PPU_ADDR ; PPU_ADDR = $2006
ldx #32 ; start out at 0
lda #2
background_x_loop:
ldy #30
background_y_loop:
sta PPU_DATA ; PPU_DATA = $2007
dey
bpl background_y_loop ; loop until y == -1
dex
bpl background_x_loop ; loop until x == -1
ldx nametable_reg_x
ldy nametable_reg_y
rts
.endproc
Attachments
nesteroids.nes
Notice the left column has the letter 'B' which is tile #2 in my CHR (40.02 KiB) Downloaded 126 times
dougeff
Posts: 3078 Joined: Fri May 08, 2015 7:17 pm
Post
by dougeff » Tue Oct 16, 2018 9:01 am
Are you sure PPU control $2000 is set to +1 mode and not +32 mode?
xxxx x0xx
This bit should be zero.
nesdoug.com -- blog/tutorial on programming for the NES
battagline
Posts: 152 Joined: Wed Sep 05, 2018 11:13 am
Location: Colorado
Contact:
Post
by battagline » Tue Oct 16, 2018 9:07 am
dougeff wrote: Are you sure PPU control $2000 is set to +1 mode and not +32 mode?
xxxx x0xx
This bit should be zero.
It was set to 0 because I'm writing to PPU Address $2000. Is that not right?
Thanks
battagline
Posts: 152 Joined: Wed Sep 05, 2018 11:13 am
Location: Colorado
Contact:
Post
by battagline » Tue Oct 16, 2018 9:09 am
dougeff wrote: Are you sure PPU control $2000 is set to +1 mode and not +32 mode?
xxxx x0xx
This bit should be zero.
Actually you were right. I was setting $2000 to #%10011100 earlier than I thought I was.
Thanks!