3GenGames recently made an MMC1 based multicart engine. The biggest thing it does that my own engine doesn't is the mirroring switch, which MMC1 can do but #34 (oversize BNROM) can't. On #nesdev, we got to discussing how I could port Action 53 to MMC1. Testing such a port would need emulator support because there aren't any existing MMC1 boards over 512 KiB, nor does the PowerPak support such an oversized PRG ROM. And in any case, we'd first need to define an extension to the MMC1 to handle PRG ROM larger than 512 KiB for emulator and PCB makers to implement. Because of how existing PRG ROM select bits are arranged in existing MMC1 cartridge boards, this is tougher than the "obvious" oversize extensions to many of the discrete mappers.
SNROM, SOROM, SUROM, and SXROM reuse unused bits of the CHR bank address as follows:
How should PRG ROM bigger than 512 KiB work? Would the bank bits be added in reverse order like in mapper 87? That would look like this:
SNROM, SOROM, SUROM, and SXROM reuse unused bits of the CHR bank address as follows:
Code:
43210 PRG ROM and RAM bank ($A000)
PSSxC
||| |
||| +- Select half of a bank (ignored in 8 KiB CHR mode)
|++--- SOROM: Select PRG RAM chip at $6000 (0: scratchpad; 2: save)
| SXROM: Select save RAM bank at $6000 (0-3)
+----- SNROM: Disable PRG RAM (0: enable; 1: open bus)
SUROM, SXROM: Select 256 KiB PRG ROM bank (PRG A18)
PSSxC
||| |
||| +- Select half of a bank (ignored in 8 KiB CHR mode)
|++--- SOROM: Select PRG RAM chip at $6000 (0: scratchpad; 2: save)
| SXROM: Select save RAM bank at $6000 (0-3)
+----- SNROM: Disable PRG RAM (0: enable; 1: open bus)
SUROM, SXROM: Select 256 KiB PRG ROM bank (PRG A18)
How should PRG ROM bigger than 512 KiB work? Would the bank bits be added in reverse order like in mapper 87? That would look like this:
Code:
43210 PRG ROM and RAM bank ($A000)
PRGxC
||| |
||| +- Select half of a bank (ignored in 8 KiB CHR mode)
||+--- Select 1 MiB PRG ROM bank (PRG A20)
|+---- Select 512 KiB PRG ROM bank (PRG A19)
+----- Select 256 KiB PRG ROM bank (PRG A18)
PRGxC
||| |
||| +- Select half of a bank (ignored in 8 KiB CHR mode)
||+--- Select 1 MiB PRG ROM bank (PRG A20)
|+---- Select 512 KiB PRG ROM bank (PRG A19)
+----- Select 256 KiB PRG ROM bank (PRG A18)