I wonder about the nature of the one-byte buffer at $2007.
I could make a test for these, but first I would like to ask if people already know the answers.
― How long is the read buffer at $2007 retained? Is the read buffer actually the PPU's open bus?
― Does a write to any writable register in between of $2000..$2007 cause the contents of the read buffer to be altered? (Especially $2007) Is there any write that can overwrite the read buffer?
― Does the read buffer retain its value, if read, say, 400 frames after the first read (when the background is blanked)?
― Does the read buffer retain its value over a rendered frame? (i.e. if first read at vblank, then a full frame happens, and the second read happens at next vblank)
― Does the read buffer retain its previous content during reads from the palette memory?
If there is uncertainty in these, I'll just go ahead and make a test.
I could make a test for these, but first I would like to ask if people already know the answers.
― How long is the read buffer at $2007 retained? Is the read buffer actually the PPU's open bus?
― Does a write to any writable register in between of $2000..$2007 cause the contents of the read buffer to be altered? (Especially $2007) Is there any write that can overwrite the read buffer?
― Does the read buffer retain its value, if read, say, 400 frames after the first read (when the background is blanked)?
― Does the read buffer retain its value over a rendered frame? (i.e. if first read at vblank, then a full frame happens, and the second read happens at next vblank)
― Does the read buffer retain its previous content during reads from the palette memory?
If there is uncertainty in these, I'll just go ahead and make a test.