I was toying around with Cybernoid yesterday and noticed some funny details. Some of this stuff might be of interest to emulator authors.
- The game doesn't initialize all of the RAM, in particular it doesn't initialize the music on/off flag ($5FB). So, Nintendulator and FCEUX don't play music by default (they init to 0) and Nestopia does (init to $FF I guess).
- Music can be turned on by pausing the game by pressing START, then pressing A. The game writes $F to $D418, which happens to be a C64 SID register. This hints that the games music was originally done on a C64, and they forgot to remove part of the SID initialization.
- That write to $D418 also causes a CHR-ROM bankswitch to occur (game uses CNROM), however since CNROM has bus conflicts and ROM at $D418 contains $50, it's unreliable (again hinting that it was left there by accident). In Nintendulator the write causes graphics to get corrupted (last bank is switched in). I don't really understand why that doesn't happen in FCEUX and Nestopia, although Nestopia might be emulating bus conflicts in a way that causes the PRG-ROM $50 to "win", switching in 8K CHR bank 0 instead of 3?
- The game doesn't initialize all of the RAM, in particular it doesn't initialize the music on/off flag ($5FB). So, Nintendulator and FCEUX don't play music by default (they init to 0) and Nestopia does (init to $FF I guess).
- Music can be turned on by pausing the game by pressing START, then pressing A. The game writes $F to $D418, which happens to be a C64 SID register. This hints that the games music was originally done on a C64, and they forgot to remove part of the SID initialization.
- That write to $D418 also causes a CHR-ROM bankswitch to occur (game uses CNROM), however since CNROM has bus conflicts and ROM at $D418 contains $50, it's unreliable (again hinting that it was left there by accident). In Nintendulator the write causes graphics to get corrupted (last bank is switched in). I don't really understand why that doesn't happen in FCEUX and Nestopia, although Nestopia might be emulating bus conflicts in a way that causes the PRG-ROM $50 to "win", switching in 8K CHR bank 0 instead of 3?