I've got three J.Y. Company multicart ROM images that use some variation of mapper 90/209/211. The variation lies in what register $D003 does.
Regular mappers 90/209/211: Used by all single-game releases, as well as the 1998 Super 45-in-1 multicart (JY-120A, Mapper 90). Register $D003:
Variation 1: Used by the 1997 Super HIK 4-in-1 multicart (JY-052), which has 512 KiB each of PRG-ROM and CHR-ROM. A single bit in register D003 selects both PRG and CHR outer banks:
Variation 2: Used the 1997 Super HIK 21-in-1 multicart (JY-105), which has 1 MiB each of PRG-ROM and CHR-ROM, and the 1998 Super HIK 5-in-1 multicart (JY-114), also 1 MiB each of PRG/CHR. Like regular mappers 90/209/211, except that the outer PRG-ROM bank is 256 KiB in size, and Extended Mirroring is selected differently. Register $D003:
The 1997 Super HIK 4-in-1 multicart (Variation 1) is already in GoodNES 3.23b, tagged as Mapper 90, and to my knowledge does not run in any emulator other than Nestopia Plus which identifies it by CRC. The others were dumped by CaH4e3, who permits release of them once they're emulated. I can assign two submappers of mapper 209 (not 90 since Extended Mirroring is selectable) and write one of those dreaded test ROMs, or assign two entirely new NES 2.0 mapper numbers in the 256-511 range. Which one is preferred?
Regular mappers 90/209/211: Used by all single-game releases, as well as the 1998 Super 45-in-1 multicart (JY-120A, Mapper 90). Register $D003:
Code:
7654 3210
---- ----
M.BC CPPC
| || |||+- Select 256 KiB outer CHR-ROM bank if M==0
| || |++-- Select 512/1024 KiB outer PRG-ROM bank
| |+-+---- Select 512/1024 KiB outer CHR-ROM bank
| +------- CHR Banking Mode
| 0=Use outer 256 KiB CHR-ROM bank, masking off the regular CHR bank registers' bits ($9000-$AFFF) that select 256 KiB+ bank numbers
| 1=Do not use outer 256 KiB CHR-ROM bank; use the regular CHR bank registers' bits ($9000-$AFFF) unmasked
+--------- MMC2/4 Mode (effective in 4 KiB CHR banking mode, ignored otherwise)
0=Do not automatically change CHR banks
1=Automatically change CHR banks when encountering CHR tiles $FD and $FE (same as Nintendo MMC2/4)
Extended Mirroring is always off for Mapper 90, always on for Mapper 211, and selectable for Mapper 209 by register $D000 bit 5. Final Fight 3, Shin Samurai Spirits II and Tekken 2 all set bit 5 to select 256 KiB+ CHR-ROM banks directly, indicating that they are running on hardware that otherwise would mask off the higher-order CHR bank register bits and replace them with the outer bank.---- ----
M.BC CPPC
| || |||+- Select 256 KiB outer CHR-ROM bank if M==0
| || |++-- Select 512/1024 KiB outer PRG-ROM bank
| |+-+---- Select 512/1024 KiB outer CHR-ROM bank
| +------- CHR Banking Mode
| 0=Use outer 256 KiB CHR-ROM bank, masking off the regular CHR bank registers' bits ($9000-$AFFF) that select 256 KiB+ bank numbers
| 1=Do not use outer 256 KiB CHR-ROM bank; use the regular CHR bank registers' bits ($9000-$AFFF) unmasked
+--------- MMC2/4 Mode (effective in 4 KiB CHR banking mode, ignored otherwise)
0=Do not automatically change CHR banks
1=Automatically change CHR banks when encountering CHR tiles $FD and $FE (same as Nintendo MMC2/4)
Variation 1: Used by the 1997 Super HIK 4-in-1 multicart (JY-052), which has 512 KiB each of PRG-ROM and CHR-ROM. A single bit in register D003 selects both PRG and CHR outer banks:
Code:
7654 3210
---- ----
.... ...C
+- Select 256 KiB outer PRG-ROM bank
+- Select 256 KiB outer CHR-ROM bank
PRG ($8000-$8FFF) and CHR ($9000-$AFFF) bank select register bits that select 256 KiB banks are masked off. Extended Mirroring is selected by register $D001 (Mirroring) bit 3.---- ----
.... ...C
+- Select 256 KiB outer PRG-ROM bank
+- Select 256 KiB outer CHR-ROM bank
Variation 2: Used the 1997 Super HIK 21-in-1 multicart (JY-105), which has 1 MiB each of PRG-ROM and CHR-ROM, and the 1998 Super HIK 5-in-1 multicart (JY-114), also 1 MiB each of PRG/CHR. Like regular mappers 90/209/211, except that the outer PRG-ROM bank is 256 KiB in size, and Extended Mirroring is selected differently. Register $D003:
Code:
7654 3210
---- ----
.... CPPC
|||+- Select 256 KiB outer CHR-ROM bank
|++-- Select 256/512 KiB outer PRG-ROM bank
+---- Select 512 KiB outer CHR-ROM bank
PRG ($8000-$8FFF) and CHR ($9000-$AFFF) bank select register bits that select 256 KiB banks are masked off. Extended Mirroring is selected by register $D001 (Mirroring) bit 3, as in Variation 1.---- ----
.... CPPC
|||+- Select 256 KiB outer CHR-ROM bank
|++-- Select 256/512 KiB outer PRG-ROM bank
+---- Select 512 KiB outer CHR-ROM bank
The 1997 Super HIK 4-in-1 multicart (Variation 1) is already in GoodNES 3.23b, tagged as Mapper 90, and to my knowledge does not run in any emulator other than Nestopia Plus which identifies it by CRC. The others were dumped by CaH4e3, who permits release of them once they're emulated. I can assign two submappers of mapper 209 (not 90 since Extended Mirroring is selectable) and write one of those dreaded test ROMs, or assign two entirely new NES 2.0 mapper numbers in the 256-511 range. Which one is preferred?