nesdev.com
http://forums.nesdev.com/

Rough x/y split ?
http://forums.nesdev.com/viewtopic.php?f=2&t=16437
Page 1 of 1

Author:  dougeff [ Fri Sep 01, 2017 11:27 am ]
Post subject:  Rough x/y split ?

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.

Author:  rainwarrior [ Fri Sep 01, 2017 12:09 pm ]
Post subject:  Re: Rough x/y split ?

Reference:
https://wiki.nesdev.com/w/index.php?title=PPU_scrolling#Summary

It doesn't set any of the fine X bits, and it sets the top bit of fine Y to 0.

Author:  dougeff [ Fri Sep 01, 2017 12:24 pm ]
Post subject:  Re: Rough x/y split ?

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)

Author:  lidnariq [ Fri Sep 01, 2017 12:36 pm ]
Post subject:  Re: Rough x/y split ?

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.

Author:  Bregalad [ Thu Sep 07, 2017 7:14 am ]
Post subject:  Re: Rough x/y split ?

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.

Quote:
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.

Page 1 of 1 All times are UTC - 7 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/