http://www.youtube.com/watch?v=G43rWW0kRJw
With attribute writing minus nametable writing
http://www.youtube.com/watch?v=aoTIABWVEo0
The other nametable flashes on and off while it scrolls right. No glitches scrolling left. Here's what is seemingly ruled out:
- Fat NMI. Even without the nametable update, the attribute update still causes the glitch. (Updating the nametable minus the attribute is fine).
- Unintended write to bit 0 of $2000. Obviously the glitch would still happen in any case.
- Badly timed sprite 0. Again, I'd expect this to happen even without updating the attribute table.
I narrowed it to the PPUADDR write in the attribute update. This is kind of hair pulling because it's not apparent what is different about the nametable update. Because PPUADDR also affects the scrolling here's the attribute updating routine in case someone catches it.
(Forgot to mention: Everything is peachy keen without a sprite zero hit.)
[Deleted code since it has nothing to do with the glitch. See below.]
With attribute writing minus nametable writing
http://www.youtube.com/watch?v=aoTIABWVEo0
The other nametable flashes on and off while it scrolls right. No glitches scrolling left. Here's what is seemingly ruled out:
- Fat NMI. Even without the nametable update, the attribute update still causes the glitch. (Updating the nametable minus the attribute is fine).
- Unintended write to bit 0 of $2000. Obviously the glitch would still happen in any case.
- Badly timed sprite 0. Again, I'd expect this to happen even without updating the attribute table.
I narrowed it to the PPUADDR write in the attribute update. This is kind of hair pulling because it's not apparent what is different about the nametable update. Because PPUADDR also affects the scrolling here's the attribute updating routine in case someone catches it.
(Forgot to mention: Everything is peachy keen without a sprite zero hit.)
[Deleted code since it has nothing to do with the glitch. See below.]