NES 2.0 submappers/Proposals

From Nesdev wiki
Jump to: navigation, search

This page collects proposals for NES 2.0 submappers that are not yet ready for implementation.

  1. Explain what game or ROM is incompatible with existing submappers.
  2. Explain how the proposed submapper should be implemented.
  3. 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.)
  4. 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:

  1. 1K CHR ROM banks (like 83.0)
  1. a 4 bit 256K CHR/PRG bank select register:
    • B000h: bits 6 and 7 select the 256K superbank
  1. 1 byte of RAM at 5103h (stores the last game played) Game will not start without this RAM byte.
  1. WRAM at 6000-7FFFh. WRAM is banked with the PRG/CHR superbank. This gives a total of 32K. It is battery backed.

086: Jaleco JF-13

There is a bootleg variant that uses a UM5100 (DPCM) instead of µPD7756C (ADPCM).

086: 0

Uses µPD7756C (Standard).

086: 1

Uses UM5100 (Bootleg).

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))

|||+- 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

|||+- 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"


  • Atari Age forum post - Kevtris' Analogue NT Mini firmware notes including a slightly updated submapper list.