ArticleslgStudy

engineering

Memory management controller

Memory management controller is a engineering topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Memory management controller rather than just read about it. In short: 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.

Memory management controller — main illustration
Memory management controller — illustration

Key takeaways

  • Memory management controller belongs to engineering; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Memory management controller to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Memory management controller from memory before moving on to harder problems.

Reference excerpt

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.

Illustrations

Memory management controller: The Nintendo Entertainment System is enhanced by MMC chips in cartridges.
The Nintendo Entertainment System is enhanced by MMC chips in cartridges.
Memory management controller: A Tetris cartridge showing an MMC1B1 chip
A Tetris cartridge showing an MMC1B1 chip
Memory management controller: The MMC3 chip, soldered onto a PCB containing Super Mario Bros. 3 and others
The MMC3 chip, soldered onto a PCB containing Super Mario Bros. 3 and others
Memory management controller: The VRC4
The VRC4
Memory management controller: The VRC6
The VRC6

Worked examples

Example 1 — a first encounter with Memory management controller

Start with the simplest possible case. Write down what Memory management controller claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In engineering, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Memory management controller before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Memory management controller ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Memory management controller

In research
Memory management controller appears in engineering research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Memory management controller in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Memory management controller is common in secondary-school and first-year university syllabi. It links to neighbouring topics Integrated circuits, Memory management, so understanding it makes those chapters shorter.
In everyday life
Look for Memory management controller outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Memory management controller in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Memory management controller means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Memory management controller out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Memory management controller in simple terms?

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 ga…

Why does Memory management controller matter?

Because it connects several engineering ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Memory management controller?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Memory management controller.

Tags

  • Integrated circuits
  • Memory management

Keep exploring