Talk:The skinny on NES scrolling

From NESdev Wiki
Jump to navigationJump to search

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.

- 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)