Talk:The skinny on NES scrolling
Changes 1/08/2013
I made the following changes:
- I removed the first example, since it appeared to be broken w.r.t. fine Y scroll.
- I added a note about $2007 having side effects on v, please elaborate or correct it if anything is wrong. I note that nintendulator does a weird Y-1 thing if rendering is enabled when it is used? I'm not sure what is going on there.
- Bit 14 of t was inconsistently sometimes referred to as bit 15.
- Added a note about Y increment of v, which appears to occur on pixel 250 in nintendulator? I find this confusing, so I would appreciate if someone with authoritative knowledge could correctly explain the timing for the Y increment of v. Complete wrapping logic would also be helpful.
- The imaginary bit 15 was removed from the examples at the top of the page, for clarity and consistency.
- Added examples for simple scrolling, where only X, or no split is needed.
- Revised the $2006, $2005, $2005, $2006 example to be a more practical example, explaining how to set the scroll for a specific X/Y/nametable.
- Explanation of why the registers work this way, trying to make it easier to remember.
Please check for errors, and make corrections as necessary. We could also use some information on tile/attribute fetching, timings and which/whether can be changed mid-scanline.
- Rainwarrior 03:31, 8 January 2013 (MST)
Temporary X?
Does x also have a corresponding temporary/reload register that gets copied into x at the beginning of each line?
Correct me if I'm wrong, but can't I write $2005 anywhere in the scanline, and x should be reloaded to the expected value at the start of the next line. If there was no reload value for it, and x is immediately set by $2005, it would be absolutely critical where in the scanline I happen to set it, and I don't remember this ever being the case when trying it on an NES.
- Rainwarrior 05:01, 8 January 2013 (MST)