Multi-memory controllers or memory management controllers (MMC) are different kinds of special chips designed by various video game developers for use in Nintendo Entertainment System (NES) cartridges. These chips extend the capabilities of the original console and make it possible to create NES games with features the original console cannot offer alone. The basic NES hardware supports only 40KB of ROM total, up to 32KB PRG and 8KB CHR, thus only a single tile and sprite table are possible. This limit was rapidly reached within the Famicom's first two years on the market and game developers began requesting a way to expand the console's capabilities. In the emulation and Homebrew community, these chips are also known as mappers.
List of MMC chips
CNROM Manufacturer: Nintendo Games: Gradius, Ghostbusters, Gyruss, Arkanoid CNROM is the earliest banking hardware introduced on the Famicom--the first game to use it was Ninja Jajamaru-kun, which was released in late 1985. It consists of a single 7400 series discrete logic chip. CNROM supports a single fixed PRG bank and up to eight CHR banks for 96KB total ROM. Some third party variations supported additional capabilities. The vast majority of CNROM games have 32k CHR ROM however some have 16k CHR ROM. Three games (Ninja Jajamaru-kun, Joust, and City Connection (J)) have 16k PRG ROM and 16k CHR ROM. A few Famicom CNROM games incorporated a weak copy protection consisting of a diode setup designed to prevent access to the CHR data if the game detected that it was running in RAM instead of ROM. Most CNROM games put the game's level data in unused portions of the CHR ROM and blank the PPU to read it; this frees up PRG ROM space for additional game logic or other data.
UNROM Manufacturer: Nintendo Games: Pro Wrestling, Ikari Warriors, Mega Man, Contra, Castlevania Early NES mappers are composed of 7400 series discrete logic chips. UNROM appeared in late 1986. It supports a single fixed 16KB PRG bank, the rest of the PRG being switchable. Instead of a dedicated ROM chip to hold graphics data (called CHR by Nintendo), games using UNROM store graphics data in the program ROM and copy it to a RAM on the cartridge at run time. This allows for effects such as animated tiles or graphics transformations, and it requires fewer total tiles than CHR ROM games as the latter often have to duplicate tiles between banks. However some of the PRG ROM will have to be used to hold the graphics, leaving less room for code or other data. The vast majority of UNROM games have 128k PRG ROM, a few such as Paperboy 2 use 256k. A single game, Crazy Climber, has the fixed PRG bank at $8000-$BFFF instead of the normal $C000-$FFFF in order to support PCM channel samples.
MMC1
Manufacturer: Nintendo Games: The Legend of Zelda, Mega Man 2, Metroid, Godzilla: Monster of Monsters!, Teenage Mutant Ninja Turtles, and more. The MMC1 is Nintendo's first custom MMC integrated circuit to incorporate support for PRG RAM, battery-backed saves, and multi-directional scrolling configurations. It is the most widely used first party mapper and there are more variants of MMC1 cartridge boards than any other type. Maximum memory capacity is 512k of PRG ROM and 128k of CHR ROM. Optionally CHR RAM may be used in which case the graphics are stored in the PRG ROM and copied to CHR RAM as needed. 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 save game memory protection behavior. The MMC1 chip allows for switching of different memory banks. Program ROM can be selected in 16KB or 32KB chunks, and character ROM can be selected in 4KB or 8KB chunks. An unusual feature of this memory controller is that its input is serial, rather than parallel, so 5 sequential writes (with bit shifting) are needed to send a command to the circuit. MMC1 does not have the ability to disable write access to the PRG RAM so games that use a battery save would require the Reset button to be held down at power off to avoid possible corruption of the save data. The chip's registers are accessed serially so several writes are required and consequently switching ROM banks on MMC1 is slow.
MMC2 Manufacturer: Nintendo Games: Mike Tyson's Punch-Out!! The MMC2 is only used in Mike Tyson's Punch-Out!! and the later rerelease which replaced Mike Tyson. A single 8KB bank of program ROM can be selected (with the remaining 24KB locked) and character ROM can be selected in two pairs of 4KB banks, which would be automatically switched when the video hardware attempts 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.
MMC3
Manufacturer: Nintendo Games: Mega Man 3, 4, 5, 6, Super Mario Bros. 2NA/EU, Super Mario Bros. 3, Kirby's Adventure, and more. The MMC3 was introduced in 1988 and 8 Eyes is the first game it was used in. It adds an IRQ timer to allow split screen scrolling without the sacrifice of sprite 0, along with two selectable 8KB program ROM banks and two 2KB+four 1KB selectable character ROM banks, which allows easy instant swapping of sprite and tile data. 8KB of save game RAM is supported. Maximum ROM capacity is 512k PRG and 256k CHR. The single screen mirroring mode from MMC1 is not present. The MMC3 supports disabling write access to the PRG RAM so that it is unnecessary to hold Reset down at power off to prevent data loss in games that use a battery backed save. MMC3 registers only require two writes to access so it can switch ROM banks faster than MMC1. There were two different MMC3 variants manufactured by Sharp and NEC; the NEC chips only support a single IRQ while the Sharp ones allow one every eight rows of screen.
MMC4 Manufacturer: Nintendo Games: Fire Emblem, Fire Emblem Gaiden, and Famicom Wars 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, with the only difference being 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.
… excerpt ends here. Continue reading the full article.






