Some PPU Reset stuff is documented here: http://wiki.nesdev.com/w/index.php/PPU_power_up_state
While trying to verify that info, I've found out something else:
Port 2007h.READs are also locked during the reset period.
Even if VRAM is completely filled with nonzero values, 2007h.READs do always return 00h during the "reset period". I don't know why it is THAT value (I'd guess that the "00h" is actually "open bus").
On my PAL NES, the "reset period" lasts until 311 lines after reset (=until END of vblank), as said in the wiki article.
On tepple's NTSC NES, that "reset period" lasts until around 261 lines after reset (=until END of vblank), that's different as in the wiki article; which says around 241 lines after reset (=until BEGIN of vblank).
Looks as if the wiki article is wrong about NTSC reset timings. Or are there different NTSC PPUs with different timings?
Well, or maybe BOTH is correct: 2007h.READs (what I was testing) being unlocked 261 lines after reset, and things like 2006h.WRITEs (what the wiki ariticle talks about) being unlocked 241 lines after reset - though that'd be pretty odd.
The test program that I was using can be found here: viewtopic.php?p=99773#p99773 (pputest.zip). The first two lines show reset related timings (in "loop cycle" steps; the actual "clock cycle" values would be somewhat higher). First line is time from Reset till 2007h.READ unlocking, and second line is time from 2007h.READ unlocking till next vblank NMI.
On my PAL NES (manufactured around 1991) with RP2A07A CPU/APU and RP2C07-0 PPU I am getting values 0BB9 and 0029EA (=reset period is 311 lines long).
On tepple's NTSC NES, the values are 0A7D and 002CBC (=reset period is 261 lines long, or maybe a little bit shorter).
According to the timings in the wiki article, the test results would be around 09B0 and 003070 (=reset period would be 241 lines long).
While trying to verify that info, I've found out something else:
Port 2007h.READs are also locked during the reset period.
Even if VRAM is completely filled with nonzero values, 2007h.READs do always return 00h during the "reset period". I don't know why it is THAT value (I'd guess that the "00h" is actually "open bus").
On my PAL NES, the "reset period" lasts until 311 lines after reset (=until END of vblank), as said in the wiki article.
On tepple's NTSC NES, that "reset period" lasts until around 261 lines after reset (=until END of vblank), that's different as in the wiki article; which says around 241 lines after reset (=until BEGIN of vblank).
Looks as if the wiki article is wrong about NTSC reset timings. Or are there different NTSC PPUs with different timings?
Well, or maybe BOTH is correct: 2007h.READs (what I was testing) being unlocked 261 lines after reset, and things like 2006h.WRITEs (what the wiki ariticle talks about) being unlocked 241 lines after reset - though that'd be pretty odd.
The test program that I was using can be found here: viewtopic.php?p=99773#p99773 (pputest.zip). The first two lines show reset related timings (in "loop cycle" steps; the actual "clock cycle" values would be somewhat higher). First line is time from Reset till 2007h.READ unlocking, and second line is time from 2007h.READ unlocking till next vblank NMI.
On my PAL NES (manufactured around 1991) with RP2A07A CPU/APU and RP2C07-0 PPU I am getting values 0BB9 and 0029EA (=reset period is 311 lines long).
On tepple's NTSC NES, the values are 0A7D and 002CBC (=reset period is 261 lines long, or maybe a little bit shorter).
According to the timings in the wiki article, the test results would be around 09B0 and 003070 (=reset period would be 241 lines long).