Funny stuff about Cybernoid (NTSC)

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Funny stuff about Cybernoid (NTSC)
by on (#71487)
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?

by on (#71532)
Nestopia is aware of Cybernoid bus conflict issues and does actually emulate the bus conditions. Don't remember if it does this for all boards that have them or just special cases for games that need it.