tepples wrote:If the last value written read or written on
any PPU register ($2000-$2007 or their mirrors at $2008-$3FFF) is $A5, then reading a write-only PPU register (such as $2000) will return $A5. This behavior, which FCEUX calls "PPUGenLatch", is a result of bus capacitance within the PPU. Coincidentally,
the last time we discussed it also involved
Donkey Kong. It's possible that Nintendulator's memory viewer is emulating PPUGenLatch for the $2000-$3FFF space, but I haven't tested that.
As far as I'm aware, the only NES program that actually uses PPUGenLatch on purpose is my
controller test ROM when it's trying to tell the difference between an NES and a Famicom based on $4016 open bus behavior. Existing games don't, and if future games do, it might just be to set the default language to Japanese or English or change how specialty controllers are read.
Does it mean I won't be able to get a PPU register value from a CPU dump from Nintendulator? There's no option to dump PPU registers and Quietust specified above that PPU dump contains pattern tables, nametables, OAM and palettes, but he didn't mention PPU registers at all, so I infered they would be available from the CPU memory map.
koitsu mentioned Mesen's Trace Logger. I'd rather use Nintendulator, since it's compatible with Wine. I'd try a Virtual Machine with Win 7 x64 if it's necessary (the one I have now runs Win Xp x32, but Mesen's emulator is not compatible with x86 arch).
Edit: Okay, I've seen Mesen is compatible with Linux.
Edit2: I can see the values koitsu gets for $2000 in the Trace Logger. However, all the PPU mapped registers stay $00, so I can't produce a dump to continue practising. How can I solve this? Is there any other way to get the value of the PPU registers?
Edit 3: Ok, I overlooked the paragraph on PPUGenLatch in the wiki article on PPU ports. So, the values in these registers start to decay about a frame after they've been written. Shouldn't it be possible to get a CPU dump just after the values have been written, either in Nintendulator or Mesen? Do they always dump the CPU memory map in a concrete instant of time?
SUMMARY: Is there any way I can dump the CPU memory map including the PPU registers values prior to decaying?