NSFe has an additional regn section for Dendy support now:
https://wiki.nesdev.com/w/index.php/NSFe#regn
But I believe that we could extend the byte which describes which systems are supported and preferred in the NES, NSF and NSFe. Everywhere in the same way.
My old proposition (with the Dendy flag):
Code: Select all
Byte 12:
7 0
---------
xxxx xDBP
0000 0000 - NTSC only
0000 0001 - PAL only
0000 0010 - Supports NTSC and PAL, but NTSC is preferred
0000 0011 - Supports NTSC and PAL, but PAL is preferred
0000 0100 - Dendy only, but if Dendy mode isn't available in the emulator, use NTSC
0000 0101 - Dendy only, but if Dendy mode isn't available in the emulator, use PAL
0000 0110 - Supports Dendy, NTSC and PAL. Dendy mode is preferred, but if Dendy mode isn't available in the emulator, it will use NTSC
0000 0111 - Supports Dendy, NTSC and PAL. Dendy mode is preferred, but if Dendy mode isn't available in the emulator, it will use PAL
It's simple and almost all cases are covered. But still, it has a drawback: you can't state that a ROM supports Dendy and NTSC only, and can't choose a preferred system separately from the list of supported systems.
So, I have an improved proposition. Let's divide the byte into two nibbles. One part describes which systems are supported, the other one describes which system is preferred.
Code: Select all
Byte 12:
7 0
---------
xdpn xxBP
If higher nibble is 0, use legacy interpretation:
0000 0000 - NTSC only
0000 0001 - PAL only
0000 0010 - Supports NTSC and PAL, but NTSC is preferred
0000 0011 - Supports NTSC and PAL, but PAL is preferred
Otherwise, higher nibble describes supported systems:
d - Dendy
p - PAL
n - NTSC
Lower nibble (bits BP) describes preferred system:
00 - NTSC (a legacy emulator will use NTSC)
01 - PAL (a legacy emulator will use PAL)
10 - Dendy (a legacy emulator will use NTSC, and it is good, because Dendy is closer to NTSC)
If the lower nibble chooses the system which is not marked as a supported system in the higher nibble, fallback to the legacy behavior. Bits 2,3 and 7 should be ignored by emulators, and should be 0 in ROMs.
It seems, that the latter proposition has no drawbacks. It should work perfectly in legacy and in new emulators which support the new NES specification.
Let's extend meaning of this byte in the NES, NSF and NSFe formats! A lot of emulators support Dendy, but this mode can't be utilized in convenient way for ROMs which were designed for Dendy. We really need this extension.
Also I'm curious, why NES 2.0 devotes byte 12 for the TV System while the original iNES 1.0 devotes byte 9 for the same purpose?