Memory Management Controller

Memory Management Controller

Multi-Memory Controllers or Memory Management Controllers[1] (MMC) are different kinds of special chips designed by various video game developers for use in Nintendo Entertainment System (NES) cartridges. These chips extended the capabilities of the original console and made it possible to create NES games with features the original console could not offer.

With the advent of NES emulators, the code written to emulate these chips became known as mappers.


List of MMC chips


Early NES mappers were made of 7400 series discrete logic chips.[1]:29 The UNROM, implemented with two such chips, divided the program space into two 16 KiB banks. The mapper allowed a program to switch one bank while keeping one bank always available. [2] Instead of a dedicated ROM chip to hold graphics data (called CHR by Nintendo), games using UNROM stored graphics data on the program ROM and copied it to a RAM on the cartridge at run time.[1]:29


The MMC1 was Nintendo's first custom mapper integrated circuit to incorporate support for saved games and multi-directional scrolling configurations.[1]:30 The chip comes in at least five different versions: MMC1A, MMC1B1, MMC1B2, MMC1B3 and MMC1C. The differences between the different versions are slight, mostly owing to savegame memory protection behavior. The MMC1 chip allowed for switching of different memory banks. Program ROM could be selected in 16KB or 32KB chunks, and character ROM could be selected in 4KB or 8KB chunks. An unusual feature of this memory controller was that its input was serial, rather than parallel, so 5 sequential writes (with bit shifting) were needed to send a command to the circuit.[3]


  • Manufacturer: Nintendo
  • Games used in: Mike Tyson's Punch-Out!!

The MMC2 is only used in Mike Tyson's Punch-Out!! and the later rerelease which removed Mike Tyson. A single 8KB bank of program ROM could be selected (with the remaining 24KB locked) and character ROM could be selected in two pairs of 4KB banks, which would be automatically switched when the video hardware attempted to load particular graphic tiles from memory, thus allowing a larger amount of graphics to be used on the screen without the need for the game itself to manually switch them.[4]


The MMC3 chip, soldered onto a PCB containing Super Mario Bros. 3 and others.

The MMC3 was Nintendo's most popular MMC chip. It comes in MMC3A, B, and C revisions. The MMC3 added a scanline based IRQ counter to make split screen scrolling easier to perform (mainly to allow the playfield to scroll while the status bar would remain motionless at the top or bottom of the screen), along with two selectable 8KB program ROM banks and two 2KB+four 1KB selectable character ROM banks.[5]


This chip is only used in three games, all of which were released only for the Famicom in Japan, and were developed by Intelligent Systems. Functionally, it is nearly identical to the MMC2, where the only difference is that the MMC4 switches program ROM in 16KB banks instead of 8KB banks and has support for a battery-backed SRAM to save game data.[6]


Castlevania III: Dracula's Curse(NA/EU), Just Breed, Metal Slader Glory, Laser Invasion, Uchuu Keibitai SDF, Nobunaga's Ambition II, Nobunaga no Yabou - Sengoku Gunyuu Den, Bandit Kings of Ancient China, Romance of the Three Kingdoms II, Uncharted Waters, Aoki Ookami to Shiroki Mejika - Genchou Hishi, Gemfire, L'Empereur, Ishin no Arashi, Shin 4 Nin Uchi Mahjong - Yakuman Tengoku

The MMC5 was Nintendo's largest mapper. It was also the most expensive, making developers avoid it. Only Koei seemed to use this chip regularly in their games once it was released. The chip has 1 KB of extra RAM, extra sound channels (two square waves), supports vertical split screen scrolling, improved graphics capabilities (making 16,384 different tiles available per screen rather than only 256, and allowing each individual 8x8-pixel background tile to have its own color assignment instead of being restricted to one color set per 2x2 tile group), highly configurable program ROM and character ROM bank switching, and a scanline-based IRQ counter.[7]


The MMC6 is similar to the MMC3, with an additional 1 KB of RAM which can be saved with battery backup.[8]

Famicom Disk System

The Famicom Disk System's ASIC was an extended chip, which supports additional sound channels.


The A*ROM mapper, named after the AMROM, ANROM, and AOROM cartridge boards that use it, was developed by Chris Stamper of Rare Ltd., and manufactured by Nintendo. It is found in games developed by Rare for Nintendo, Tradewest, GameTek, Acclaim, and Milton Bradley.[9] It uses 32 KB ROM switch and a CHR RAM. Unlike other chips, it uses one screen mirroring.[10]

Third-party chips

As only first-party hardware was allowed in North America and Europe, these third party chips were supposed to be used only in Japan. However, recently some of them had been found in a few North American cartridges as well.


The VRC2 is a chip from Konami that allows program ROM to be switched in 8KB banks, and character ROM to be switched in 1KB banks. This mapper had two known revisions: VRC2a and VRC2b. [11]


The VRC4.


The VRC6.

The VRC6 (Virtual Rom Controller) was an advanced MMC chip from Konami, supporting bank switching for both program code and graphics as well as a scanline-based IRQ counter. The chip also contained support for 3 extra sound channels (two square waves and one sawtooth wave). It was used in Akumajou Densetsu (the Japanese version of Castlevania III: Dracula's Curse), while the western version used the MMC5 from Nintendo. Since the NES, unlike the Famicom, did not allow cartridges to add additional sound channels, the soundtrack on the western versions could only access the original five sound channels built into the NES and had to be reworked.


The VRC7 with a post-processor for the FM synthesis.

The VRC7 was a very advanced MMC chip from Konami, not only supporting bank switching and IRQ counting equivalent to the VRC6 but also containing a YM2413 derivative providing 6 channels of FM Synthesis audio. This advanced audio was used only in the Famicom game Lagrange Point; while the Japanese version of Tiny Toon Adventures 2 also used the VRC7, it did not make use of the extended audio.[12]


  • Manufacturer: Namco
  • Games used in: Erika to Satoru no Yumebouken, Final Lap, King of Kings, Mappy Kids, Megami Tensei II, Namco Classic II, Sangokushi 2, Youkai Douchuuki, Rolling Thunder(JP)

All of these games were only released in Japan. NAMCO106 was an advanced chip using 4-bit sample table synthesis, that supports up to 8 extra sound channels, with aliasing increasing with the number of active channels.


The FME-7 was a memory mapping circuit developed by Sunsoft for use in NES and Famicom cartridges. It allows the program ROM to be switched in 8KB banks and the character ROM to be switched in 1KB banks. It also contains hardware allowing the cartridge to generate IRQ signals after a specified number of CPU clock cycles, thus enabling split-screen effects with minimal use of processing power. A special version of this mapper, labeled as "SUNSOFT 5" rather than "FME-7", contains sound generation hardware which appears to be a subset of the well-known General Instrument AY-3-8910 (3 square waves). This sound generation hardware was used on only one Famicom title – Gimmick!

Unlicensed/Homebrew MMCs

Some individual and unlicensed developers made custom mappers for the NES, most of which simply expanded the available memory.


228 was a simple bank switching mapper developed for use in the notoriously poor-quality games Action 52 and Cheetahmen II. It does not have a nametable control bit. In the Action 52 multicart, it also contains a small 16-bit register area that contains the old menu selection when exiting a game.

External links


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • DOS memory management — This article is about a class of DOS device drivers. For the general concept, see: memory management. Physical memory areas of the IBM PC family. In IBM PC compatible computing, DOS memory management refers to software and techniques employed to… …   Wikipedia

  • Memory address — A digital computer s memory, more specifically main memory, consists of many memory locations, each having a memory address, a number, analogous to a street address, at which computer programs store (except when the address is in mask ROM) and… …   Wikipedia

  • Controller Pak — The Controller Pak was the Nintendo 64 s memory card, comparable to those seen in the PlayStation and other CD ROM based video game consoles.Certain games allowed saving of game files to the Controller Pak, which plugged into the back of the… …   Wikipedia

  • memory cache —    An area of high speed memory on the processor that stores commonly used code or data obtained from slower memory, eliminating the need to access the system s main memory to fetch instructions.    The Intel 82385 cache controller chip was used… …   Dictionary of networking

  • Flash memory — Computer memory types Volatile RAM DRAM (e.g., DDR SDRAM) SRAM In development T RAM Z RAM TTRAM Historical Delay line memory Selectron tube Williams tube Non volatile …   Wikipedia

  • Intel Active Management Technology — (AMT) is hardware based technology for remotely managing and securing PCs out of band.] cite web |title=New Intel Based Laptops Advance All Facets of Notebook PCs|url=… …   Wikipedia

  • Flat memory model — In computer systems design, a flat memory model refers to a linear addressing paradigm, such that the CPU can directly (and sequentially) address all of the available memory locations, without having to resort to any sort of bank switching or… …   Wikipedia

  • Process management (computing) — Operating systems …   Wikipedia

  • Multi-Memory Controller — Multi Memory Controllers or Memory Management Controllers [ Why Game Paks Never Forget from Nintendo Power ] (MMC) are different kinds of special chips designed by various video game developers for use in Nintendo Entertainment System (NES)… …   Wikipedia

  • Upper Memory Area — UMB (Upper Memory Block, englisch für „oberer Speicherblock“) ist ein Begriff aus der Speicherverwaltung von DOS und bezeichnet die frei nutzbaren Bereiche im UMA (Upper Memory Area, englisch für „oberer Speicherbereich“) oberhalb des… …   Deutsch Wikipedia