Rough x/y split ?

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

Post Reply
User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Rough x/y split ?

Post by dougeff »

Dumb question. Can you do a rough X/Y scroll split with 2 writes to $2006.

(If I remember correctly, affecting all but the fine Y bits)

I've never tried it.
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Rough x/y split ?

Post by rainwarrior »

Reference:
https://wiki.nesdev.com/w/index.php?tit ... ng#Summary

It doesn't set any of the fine X bits, and it sets the top bit of fine Y to 0.
User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Re: Rough x/y split ?

Post by dougeff »

Ok, I see. So if your fine X is wrong, 2 writes to $2006 might not be enough for...say...a HUD at the bottom of the screen?

What about...
LDA #0
STA $2005
STA $2005
LDA #something
STA $2006
LDA #something
STA $2006

(ie, during rendering, perhaps after a sprite zero hit)
nesdoug.com -- blog/tutorial on programming for the NES
lidnariq
Posts: 11429
Joined: Sun Apr 13, 2008 11:12 am

Re: Rough x/y split ?

Post by lidnariq »

That makes the math easier, but makes the raster timing much worse. The first write to $2005 will immediately cause glitches for the remainder of the drawn scanline.

In contrast, the 6-5-5-6 method requires more calculation, but only the last two writes need to be during horizontal blanking.
User avatar
Bregalad
Posts: 8055
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: Rough x/y split ?

Post by Bregalad »

dougeff wrote:Dumb question. Can you do a rough X/Y scroll split with 2 writes to $2006.
Of course you can. Most games do it that way. My game does it that way too. Fine X scroll stays the same.
What about...
LDA #0
STA $2005
STA $2005
LDA #something
STA $2006
LDA #something
STA $2006

(ie, during rendering, perhaps after a sprite zero hit)
This is the "standard" way to do it. All games does it that way. The 6-5-5-6 method was only decovered by the reverse-engineering retroscene in the 2000s.
Post Reply