I've heard of NSF files using three or more expansion sound chips. But it has come to my attention that certain Famicom synths won't work together because their registers overlap. For example, it is believed that the Sunsoft 5B (address: $C000; data: $E000) and Namco 163 (address: $F800; data: $4800) overlap because the Sunsoft 5B's data port is thought to be mirrored in $E000-$FFFF. There's a workaround for this pair, namely to write $0E to the Sunsoft 5B address when communicating with the N163 so that writes to the N163 address go to the data port of the unused AY I/O on the Sunsoft 5B. But I can't see such an easy workaround for VRC7's $9010 and $9030 when they overlap VRC6's $9000.
Fixing this in the NSF specification will need a few steps:
Fixing this in the NSF specification will need a few steps:
- Make test ROMs for each mapper to determine whether each board responds to writes to the mirrors, and run them on authentic Famicom game PCBs.
- Determine a "pecking order" to decode writes when multiple chips are present. For example, in a multi-chip environment, VRC6 would ignore writes to VRC7 registers, and FDS would write-protect RAM in $8000-$DFFF.
- Set down guidelines for multi-chip playback engines to conform to this pecking order. For example, a multi-chip NSF MUST NOT write to mirrored ports but instead MUST write only to the port's canonical address.