World of Mappers, Part 1

Usually, all the cartridges in our retro game collections look pretty much the same from the outside. But are they the same inside?

Before you rush to disassemble your cartridges and discover for yourself, rest assured that they are all quite different inside. It all depends on the game's mapper.

But first, let's figure out what a mapper is, and how it effects what is possible in the game it holds. To do that, we'll have to look at some engineering decisions from the early days of home consoles and computers.

ZX Spectrum vs NES

ZX Spectrum. I like this computer. But there are several different models of this computer. The simplest configuration is the ZX Spectrum 48. And although this model had only 48 kilobytes of RAM on board, this turned out to be enough for thousands of wonderful games to be created for it.

But progress did not stand still, and the next model was released very soon: the ZX Spectrum 128. It is easy to guess that this model had 128 kilobytes of RAM. This model also had its fair share of games.

However, there was a problem. Users who had an old model computer could not start games for a new one, or they could run them in a very limited way - without music or without additional graphics. Therefore, they were forced to upgrade their computer on their own or buy a new one.

But Japanese engineers chose a different way. They designed the console so that the game code and all game data was stored on the cartridge. The console does not contain any memory at all. That's why I love NES.

Mariozoic Era

The first carts were very simple. This is what Super Mario looks like from the inside:

Super Mario ROM Check

As we can see, the console allows you to address 32k PRG-ROM (ROM, where you store the code: two green banks of 16 kilobytes each) and 8k CHR-ROM (the blue bank, where the game’s graphics are stored).

I think we will be able to call this a “basic configuration”, and a lot of great games were created for it, such as Super Mario, Galaxians, Dig-Dug, Ice Climber, and more. Such a mapper is commonly called NROM.

However, these are not very large numbers for a serious game - 8 kilobytes of graphics are not enough. In order to diversify the game world as much as possible, the developers began to add additional chips to the cartridge for storing code and graphics.

The logic that allowed these additional banks to be “mapped” to the main address space was called “mapper”.

CNROM

Each mapper is unique. I think any NES fan knows a game like The Adventures of Dino Riki - three unique colorful levels, a nice soundtrack, and great physics. Let's see what it takes to have these additions:

Adventures of Dino Riki ROM Space Checker

This is the CNROM mapper, and it is a classic configuration: the same 32 kilobytes of code, but with 32 kilobytes of graphics instead of 8. It is clear that this game has become better and stronger compared to its ancestors from the Mariozoic era.

Theoretically, you can add up to 256 banks of 8 kilobytes to this board. Yes, this is possible, and it will also be CNROM, but with two megabytes of graphics on board!

UNROM/UOROM

This mapper deserves special attention. Unlike previous mappers, this cartridge stores PRG-ROM graphics, and uses CHR-RAM instead of CHR-ROM to fill banks with graphics on the fly, with any tiles we want, creating unique tilesets for a unique scene of our game. The standard configuration is UNROM 128 (like the Spectrum!) Or 256 kilobytes of PRG-ROM. But technically this mapper supports up to 4 megabytes of PRG-ROM.

UNROM Space Checker

A lot of cool games will be done for UNROM: Contra, Castlevania, Duck Tales, Gun Smoke, Jackal and so on. 

MMC3

But of course, the leader of all the mappers is MMC3. This mapper allows you to have a PRG-ROM capacity of up to 512 kilobytes and a CHR-ROM of up to 256 kilobytes. In addition, the mapper made it possible to split the PPU window into pages of 2 and 1 kilobytes in size, which allowed programmers to study the technique of animating the background of the game.

Also, the mapper allowed to "catch" the beam of a CRT tube, which was used to create all kinds of raster effects:

 MMC3 Raster Effect

Some of the coolest games for NES that you remember were coded for this mapper. Remember this whenever you play Darkwing Duck or TMNT 3.

However, this is only the beginning of the many types of mappers that can be talked about. We will discuss more in future installments of this series, but if you are just starting out, try choosing a simple mapper. Even with the simplest NROM, you can still create many great games.

After all, it's not just about the tools, but how you use them!

 

Eager to learn and talk more about retro consoles, retro/modern dev, and more? Come join our Discord! We don't bite, and your hands will turn into paws in no time.

MMC3 nes dev nes development nes mappers NROM retro dev retro development UNROM

← Older Post Newer Post →