The Technical Archive

Thanks to the webmaster of 8 Bits of Power for this information. If anyone can add to the info here, please feel free to send it to me.

The NES programmers had limited resources available to them. It makes one appreciate the effort that went into simply creating Donkey Kong Jr.
Hardware Overview
CPU: Western Design 6502 (capabilities include):
  • 8-bit internal registers
  • 16-bit physical address space
  • 1.79MHz
CPU Memory: 2 Kilobytes
Graphic work RAM: 2 Kilobytes
Graphic capabilities:
  • Screen resolution: 256x224 (NTSC)
  • Tile size: 8x8 pixels
  • Scrollable tile map
  • Sprite size: 8x8 pixels or 8x16 pixels
  • 64 simultaneous sprites
  • 16 simultaneous colors from a palette of 52
Sound capabilities:
  • 2 square wave channels
  • 1 triangle wave channel, plays an octave lower than the squarewave channels
  • 1 noise channel, good for drums and also sound effects
  • 1 PCM (Pulse Code Modulation) channel, a square wave with separately variable peaks and troughs, usually abused to make speech


Inside a Cartridge:
A NES ROM occupies only a small fraction of the actual cartridge volume that is available. It bears a complete set of 72 connector pins through which it interfaces with the NES. The PRG and CHR ROM chips are the 2 largest components mounted on it. If you can program a computer then you might understand the distinction between these 2 as the PRoGram and the CHaRacter ROMs. Think of them as code and data segments for the assembly language representations of the games-- because that's exactly what they are. The code, the 6502 machine language instructions, are in the PRG ROM and the graphical data is in the CHR ROM, if there is one. Sometimes, there is no CHR ROM and all the graphical data is stored along with the code in the PRG ROM.

Memory Constraints:

The brain of an NES is a Motorola 6502 which can physically address 16 bits of memory, or 64 Kilobytes. When the NES first came out in the mid-1980s, this relatively small amount of memory was adequate. But games evolved and game developers eventually wanted to do more complex things. They wanted to make games with more area and depth as well as be able to save a player's progress so the player didn't have to finish the game in one sitting.
This is where devices called memory mappers came on the scene. The earlier NES cartridges had 1-32KB PRG bank and 1-8KB CHR bank. The memory mappers performed something called a bank switch to swap banks of memory in and out of a the 6502's limited address space. As it turns out, when Nintendo designed their Gameboy, based on another 8-bit processor, the Zilog Z80, they learned a lesson from the NES and built bank switching capabilities into the Gameboy's hardware.
Nintendo Power mentions 5 different types of memory management controllers, or MMCs, throughout their issues. According to Marat's documentation, they function as follows:
MMC #1 (NP)Mapper #1 (Marat)

MMC #2 (NP)[not supported] (Marat)

MMC #3 (NP)Mapper #2 (Marat)

MMC #4 (NP)Mapper #3 (Marat)

MMC #5 (NP)Mapper #4 (Marat)

[not discussed] (NP)Mapper #5 (Marat)

[not discussed] (NP)Mapper #11 (Marat)


(Return to NES Nation's Main Page)