As you probably already know, writing anywhere between $2000 - $2007 will also update the PPU's 8-bit internal data bus with the same value. Reading a 'write-only' PPU register should return the last value written to the same area.
Here is an example. Observe the following code:
Code: Select all
LDA #$1F
STA $2007
LDA $2000
Here are 2 screenshots of WedNESday and my Famicom running the test ROM. You can ignore everything on the screen except for the top 3 blue lines of + and -. They represent bits (7 ... 0) read from $2000, $2001 and $2002 respectively. You can also ignore bits 7, 6 and 5 of $2002 as they are readable. The 2 Famicom screen captures themselves were captured about 10 seconds apart with the console being switched off in the meantime.
http://www.frontendjames.com/TestA.png
http://www.frontendjames.com/TestB.png
Can anyone shed more light as to what is happening here? Does this have anything to do with the value decaying after a while? I would not have thought this was the case as the value is tested immediately after being written to.