NES 2.0 submappers/Proposals
This page collects proposals for NES 2.0 submappers that are not yet ready for implementation.
- Explain what game or ROM is incompatible with existing submappers.
- Explain how the proposed submapper should be implemented.
- Allow one or more other members of the community to independently verify that both 1 and 2 are correct. (We'll perform peer review, commentary, and possible revision/iteration here.)
- Allocate and document the new submapper, listing the relevant game/ROM.
When allocating new submappers, please consult kevtris' original proposal before choosing a number. If it is something he already assigned that we have just not adopted yet, use his existing assignment: submappers.txt
If there is no existing game or ROM that requires a submapper, it should not yet be allocated. There is no end to possible variations of hardware, and there is no need to speculate on the future. If you want to work on a project that will require a new mapper, engage the community and/or seek help from others. Do not pre-emptively add a new mapper to the spec until there is something we can run with it. The spec will still be here when you're finished your project.
005: MMC5
Status: Wishlist
Vertical split mode:
0: SL (all known hardware)
1: CL
If only one kind (battery or non-battery) of PRG-RAM present:
0: PRG-RAM is contiguous (EKROM, EWROM)
2: PRG-RAM is not contiguous; is split in half across two chips
If both kinds of PRG-RAM present:
0: Chip 0 is battery-backed (ETROM (note: verify this))
2: Chip 1 is battery-backed
Pulse waves volume:
0: R1 is 6.8kΩ (as in all games that use expansion audio)
4: R1 is 15kΩ (the nominal value of this resistor)
It is safe to leave the submapper number at 0 for all known games.
016: Bandai FCG boards
KH assigned the following redundant submappers. All are deprecated in favor of using the actual mapper numbers and/or NVRAM size field.
0: iNES Mapper 153 (SRAM)
1: iNES Mapper 157 (Datach)
2: iNES Mapper 159 (128B EEPROM)
3: "Normal" iNES Mapper 016 behavior. (256B or no EEPROM)
019: Namco 129 and 163
Status: Problem outline
Mapper 19 designates the Namco 129 and 163, which supports expansion sound, IRQs, and ROM nametables.
Different 163-using PCBs used a different resistor to change the volume of the expansion audio relative to the internal 2A03 audio. It is unclear if this variation warrants a submapper.
KH allocated a submapper specifically for the N163-using game Mindseeker. It is not known what is different about this game.
Tentative suggestion:
Mapper 19:
1: KH assigned to Mindseeker. Specifics unknown. Deprecated until such time as sufficient documentation is made.
2: N163, expansion audio unused (mixing resistor: 0Ω)
3: N163, mixing resistor: 4.7kΩ
4: N163, mixing resistor: 10kΩ
5: N163, mixing resistor: 15kΩ
9: N129. Expansion audio is known buggy relative to N163, but other differences are not known.
Source: KH's submappers
083: Cony
There's actually three different versions of the hardware, all assigned to the same mapper.
Unfortunately, we have no idea which is which.
Here's Kevtris's assignments:
083: 0
"Bog-standard Cony mapper. 1K CHR ROM banks, no WRAM."
083: 1
"Same, but with 2K CHR ROM banks instead."
083: 2
"This is the standard Cony mapper with the following changes:
- 1K CHR ROM banks (like 83.0)
- a 4 bit 256K CHR/PRG bank select register:
- B000h: bits 6 and 7 select the 256K superbank
- 1 byte of RAM at 5103h (stores the last game played) Game will not start without this RAM byte.
- WRAM at 6000-7FFFh. WRAM is banked with the PRG/CHR superbank. This gives a total of 32K. It is battery backed.
iNES Mapper 185
Status: Draft
A few NROM-like games were released on CNROM boards where all four bits of the latch were solely used as an anti-piracy measure. While a documented heuristic exists for which values were used, we tentatively suggest that the submapper here indicate the value to be written to the latch for normal operation (submapper = (latch&0x30)/4+(latch&3))
3210 |||| |||+- Bit 0 (bank number) ||+-- Bit 1 (bank number) |+--- Bit 4 (diode config) +---- Bit 5 (diode config)
In the case that any of the bits are "don't care", use 0.
On second thought, lidnariq would be happier with
3210 xxCC |||| |||+- Bit 0 (bank number) ||+-- Bit 1 (bank number) ++--- Always "01", so that submapper 0 (use heuristic) doesn't collide with "write 0 for correct operation"
References
- Atari Age forum post - Kevtris' Analogue NT Mini firmware notes including a slightly updated submapper list.