A mapper is a piece of hardware soldered to a cartridge's printed circuit board that performs address decoding, bank switching, and possibly other tasks. Some mappers can generate interrupts for timing; some Famicom games' mappers even have extra audio channels.
NES cartridges can include extra hardware which allows the use of large program and graphics ROMs and extra features. This extra hardware is usually referred to as a "mapper", as it is used primarily to map the relatively small CPU and PPU address spaces to a portion of the larger address space of the ROM(s) on the cartridge.
Mappers vary in how they translate addresses. The various CPU memory mapping schemes expand the maximum program size above the standard 32 KiB to larger powers of 2, while PPU memory mapping schemes can add new graphic features.
Most mappers fall into one of two categories: discrete logic, and ASIC based. Some discrete logic mappers are susceptible to bus conflicts. Nintendo uses the term Memory Management Controller (or MMC for short) for its ASIC mappers ("Why Game Paks Never Forget" article in Nintendo Power) (note: it may have originally stood for "Multi Memory Controller", at least according to Japanese).
Discrete logic mappers are often referred to by the name of a board that they are commonly used in (e.g. "UNROM"). ASIC mappers are named after the ASIC (e.g. "MMC1" or "FME-7"), except in boards that use an ASIC in an unusual way (such as "TQROM", "TLSROM", or "NES-EVENT"). The emulation community generally refers to mappers by a numbering scheme that originated with the iNES emulator (e.g. "mapper 002").
The notation used in Disch's docs is explained here.
iNES 1.0 mapper grid
Most icons next to mapper numbers refer to publishers. Nintendo-made boards with numerous publishers get the Nintendo icon; Nintendo-made boards dominated by one publisher get that publisher's icon. Other icons refer to status:
- This mapper is "bad": it was used for something other than an actual cartridge. Some are mapper hacks designed for early disk-based copiers. Others are duplicate mappers that were assigned by mistake.
- "Bad" mappers reserved for use by tools, such as emulator internal use or private use during development of a new mapper.
- Mappers developed by members of the NES homebrew scene for cart releases.
- "Pirate MMC3" mappers. Many are used for unauthorized demakes of 16-bit fighting games.
- Mappers used primarily by illegally copied games, usually multicarts, sometimes single-game mapper hacks.
- Mappers for which we have some information but no identified manufacturer.
- Mappers that are not yet documented on this wiki. Do not assume undocumented mappers are currently unassigned; consult the Nestopia and Nintendulator source code.
Supplementary Multilingual Plane
Plane 1 (NES 2.0 mappers 256-511) is reserved for mappers used by games released outside the East Asian market. By the end of 1996, commercial development of NES games had ceased. The vast majority of mappers used in commercial NES games prior to the end of 1996 had been discovered prior to 2013, when the "planes" system for NES 2.0 mapper number allocation was described. A few ultra-rare prototypes of commercial games may still be discovered, but most of these mappers will be new mappers devised for homebrew games.
Supplementary Ideographic Plane
Plane 2 (NES 2.0 mappers 512-767) is reserved for new East Asian mappers. Famiclones were still popular in China in the 2000s decade, and companies were still producing new games and new pirate multicarts for the Chinese market.
- Nintendo: MMC1, MMC2, MMC3, MMC4, MMC5 with audio, MMC6
- Konami: VRC1, VRC2, VRC3, VRC4, VRC6 with audio, VRC7 with audio, VRC IRQs
- Others: Color Dreams, Namco 163 with audio, NINA-001, NINA-03/06, SUBOR, Sunsoft FME-7 with audio (Sunsoft 5B)
- List of mappers with board names
- List of discrete logic mappers
- List of iNES mapper numbers
- Comparison of Nintendo mappers
- List of mapper names and corresponding iNES mapper numbers
- Hardware pinout, including mapper pinouts
- Nintendulator source code
- Nestopia source code
- FCEUX source code
- Planes proposal