NES Hardware Specifications
Detailed NES Hardware Specifications
- CPU Type: modified 6502 8-bit (NMOS)
- Clock Speed: 1.773447MHz (PAL) or 1.7897725MHz (NTSC)
- Processor: 8-Bit PPU (Picture Processing Unit)
The CPU is based off the 6502 NMOS line of 8-bit processors. It is manufactured by Ricoh, and its name is RP2A03G. Its instruction set does not contain any CMOS “STZ” instructions, and more importantly, this NES CPU does not have a working decimal mode. You can set and clear the decimal flags all you want, but any arithmetic instructions on the NES will be calculated in base 16. The custom NES CPU also has 5 different sound channels built-in.
- RAM Memory: 16 Kbit (2 Kb)
- Video RAM: 16 Kbit (2 Kb)
- Game Program Memory: 128K, 32K, 16K or 8K Bytes, 1 Meg, 256K, or 64K Bits
- Game Character Memory: 128K, 32K, 16K or 8K Bytes, 1 Meg, 256K, or 64K Bits
- Scrolling: Horizontal and Vertical
- Sound: PSG sound (2 Square Waves, 1 Triangle Wave, 1 White Noise)
The 6502 CPU has only a 16-bit address bus. That means it can only access up to 65536 bytes of either ROM or RAM at one time. And the NES is designed to access half that much ROM. As programmers want to have more complex games, they need a way to spread a game across more than 32K of ROM. Thus, memory mappers are devices which switch different banks of program code into the 32K window of ROM which the CPU can access.
After increasing the address space, the more modern memory mappers really improved the amount of character graphics available to the game, and how it can combine them. The first mapper that changed graphics did it 8K at a time. However, the later mappers allowed games to swap in much smaller sections of CHR ROM, to allow for more animation in the backgrounds. Plus, of course, many game companies came out with their own mappers which had IRQ timers, and allowed tricks to be performed with the PPU. Several mappers also had additional sound chips, to add to the complexity of the music in games.
- Color: Colors Displayed: 16
- Colors Available: 52
- Sprite Colors: 4 per Sprite from the 52 possible
Ordinarily, the NES can display 13 different background colours, and 12 different sprite colours, giving a total of 25 colours on-screen, at once. However, using PPU trickery, one can display all of the NES’ 64 palette values at once. (And if you used the Colour Emphasis bits as well as PPU trickery, I guess you could say that you can have a maximum of 512 colours on-screen, at once. But that would really be stretching things. For one, there would most likely be some duplication across the palette entries.) Anyhow, let’s just say that the normal colour maximum is 25.
- Minimum Sprite Size: 8×8 Pixels
- Maximum Sprite Size: 8×16 Pixels
- Maximum Sprites: 64 sprites
- Maximum Sprites per Scanline: 8
- Minimum Cart Size: 128 Kbit
- Maximum Cart Size: 4 Mbit
- Picture Resolution: 256 x 240
The NES resolution is 256×240. For many years, people have thought that the NTSC NES has a lower resolution than the PAL NES, and so emulators have been programmed to show only 256×224. It is true that on many video screens or television sets, the top and bottom 8 lines of the NES screen are cut off; however, that is a function of the display device, not necessarily the NES. On my video monitor, using my NTSC NES, I can see lines 8 to 240 (and then 3 additional scanlines.) Ordinarily, then, all of lines 233-240 (once thought hidden) are being broadcast by the NES. The top 8 scanlines (1-8) are also assumed to be hidden, but may not be. For example, when I video capture the NES’ display, lines 4-onwards are visible. PAL NESes do display all 240 scanlines, no question about that.
The NTSC NES still has some ambiguities. The bottom line (no pun intended) is, if you are making an emulator, you should provide an option to display the top 8 and bottom 8 scanlines or not. If you are writing a demo or game for the NES, you should assume that players might be able to see what you have put in the first and last pattern rows of the screen.