|
I'm sure someone has checked this before, but to my knowledge it hasn't been documented yet. Anyway, setting aside the fact that you have to load $2006 with your valid VRAM address, trying to access $2007 during screen rendering will either result in the PPU ignoring the $2007 request (returning $FF or $40 or somthing or another), or the $2007 request will actually go through, and the fetch will interrupt a stage in the current render pipeline (causing a graphical glitch in the appropriate spot on the screen- *unless* the read is from name table RAM, and occurs exactly when the render pipeline fetches a name table byte, although this is highly speculative).
Palette RAM theoretically could be read/written during rendering, due to the fact that it's internal to the PPU. However, due to the (likely) shared bus architecture between the palette RAM & external VRAM, plus the fact that it would be impractical to have the palette RAM address loaded in the scroll counters, it could never be useful.
Anyway, there's no point in trying to do somthing with $2007 during rendering, since the scroll counters will be incrementing automatically (assuming you have your playfield enabled). So if you do need to do somthing mid-frame, it's best to either disable the screen, or wait for that small portion of time in the scanline when the PPU isn't messing with the scroll counters (and even then you'll still compromise sprites on that line if active, but this is as good as it gets).
|