Talk:The skinny on NES scrolling: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(→‎hblank: new section)
Line 30: Line 30:


- [[User:Rainwarrior|Rainwarrior]] 05:01, 8 January 2013 (MST)
- [[User:Rainwarrior|Rainwarrior]] 05:01, 8 January 2013 (MST)
:I guess this one doesn't matter. If it is reloaded we can just refer to the reload value as ''x''. - [[User:Rainwarrior|Rainwarrior]] 06:42, 8 January 2013 (MST)


== hblank ==
== hblank ==

Revision as of 13:42, 8 January 2013

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)

I guess this one doesn't matter. If it is reloaded we can just refer to the reload value as x. - Rainwarrior 06:42, 8 January 2013 (MST)

hblank

Making scroll writes during hblank... Some threads have suggested this, but is it possible, and how? When I've tried to do scrolling in the past, I could never seem to get timings that accurate, so it was always necessary to pull it back from the right edge and accept some amount of glitching on the end of the line. Glitches like this seem to be very normal for games with split scrolling... can it actually be avoided? Is it bad advice to suggest timing it during hblank?

- Rainwarrior 05:33, 8 January 2013 (MST)