I helped BootGod modify his CopyNES so that he could verify everything I'd transcribed from naruko's notes; he said he agrees with the behavior I've transcribed on the wiki.
With one bonus: Masamune is weird. The four epoxy blob version of Masamune is bizarre in a completely inscrutable way that we couldn't figure out. If the smallest epoxy blob is destroyed or disabled, the cartridge seems to act like a perfectly normal N163 cartridge. If the smallest epoxy blob is functional, writes to internal RAM must first be written to $6000, and then the write to $4800 uses the value that had been written to $6000. Reads act as normal regardless. However: the game seems to work perfectly fine regardless of whether the behavior is proper N163 or this bizarro-land variant.
etabeta wrote:
is the above correct?
I'd say that your summary is, with the specificity that "CHR-ROM to PPU RAM" means specifically "as pattern tables"
etabeta wrote:
1. is there any game which actually uses CIRAM as PPU RAM?
I'd like to have a test case to see if I'm emulating it correctly
Naruko and BootGod both verified the behavior, but couldn't find a specific game that relied on it. Disch claims that specific games exist that rely on this behavior, but doesn't provide a name.
etabeta wrote:
2. docs are not 100% clear about $f800 reg. it seems to work both as External RAM protect *and* for sound address... but when is it used for one and when for the other? does the effect depend on bit4 or on something else? or is it always used for both?
It is always both. So there's some hilarious dances in (i think?) e.g. King of Kings to update music registers at the same time as it keeps PRG-RAM writeable.
I don't know whether there's actually two separate registers inside, but it looks like that should be academic: if the register
is shared, when the auto-increment bit is set, PRG-RAM is write-protected.
Quote:
at the moment, I won't emulate the sound capabilities (I'm not really a sound guy, so I'll ask help to some other MAMEdev for that), but I'd like to have CIRAM and WRAM correct before that
The N163 natively generates samples at 119kHz always, and rotates between all the channels. A good resampler should be the only hard part about it.