Nintendo Entertainment System technical specifications

The technical specifications[1] for the Nintendo Entertainment System describe the console's processor, memory, and other components.

Central processing unit

Main article: Ricoh 2A03
Versions of the NES console released in PAL regions incorporated a Ricoh 2A07 CPU.

For its central processing unit (CPU), the NES uses an 8-bit microprocessor produced by Ricoh, based on a MOS Technology 6502 core. It incorporates custom sound hardware and a restricted DMA controller on-die. To avoid patent payments, the Ricoh CPU disabled the 6502's BCD (binary coded decimal) mode by removing several of the transistors necessary for enabling it. NTSC (North America, Japan, and Korea) versions of the console use the Ricoh 2A03 (or RP2A03), which runs at 1.79 MHz.[2] PAL (Europe, Australasia, and South Asia) versions of the console use the Ricoh 2A07 (or RP2A07), which is identical to the 2A03 except that it runs at a slower 1.66 MHz clock rate and has its sound hardware adjusted accordingly.[3]

Memory

A static ram chip from an NES clone 2k × 8 bit.

The NES contains 2 KiB of onboard work RAM. A game cartridge may contain expanded RAM to increase this amount. It also has 2 KiB of video RAM for the use of the picture processing unit (PPU), 256 bytes of OAM (object attribute memory) to hold a display list of sprites, and 28 bytes of palette RAM. The system supports up to 32 KiB of program ROM at a time, but this can be expanded by orders of magnitude by the process of bank switching. Additionally, cartridges may contain 16,352 bytes (nearly 16 KiB) of address space reserved as "Expansion Area", which often contained an 8 KiB SRAM. Expanded Video memory (VROM or VRAM) may also be available on the cartridge (on-cartridge mapping hardware also allowing further video expansion past 12 KiB).[2] The size of NES games varies from 8 KiB (Galaxian) to 1 MiB (Metal Slader Glory), but 128 to 384 KiB was the most common.

Video

The NES uses a custom-made Picture Processing Unit (PPU) developed by Ricoh. The NTSC version (the RP2C02) operates at 5.37 MHz, while the PAL version (the RP2C07) operates at 5.32 MHz.[3] Both versions output composite video and rely on 2KiB of video RAM (VRAM). The PPU also contains 256 bytes of “object attribute memory”(OAM) on-die, along with 28 bytes to store the color palette, both on separate internal buses.[4]

The image output by the PPU is made up of two layers, the background layer and the sprite layer. These in turn are made up of groups of 8 by 8 pixel “tiles”. These tiles use two bits per pixel (BPP), allowing them to utilize 3 colors of the main palette, with the fourth color being transparent. The background layer is represented by a table with indices for each tile, along with a palette selection for each 2 by 2 set of tiles (although "extended attribute mode" of the cartridge-based MMC5 memory mapper relaxed this limit to one per tile). The sprite layer can hold up to 64 sprites at a time and is made up of entries to the OAM. Each entry to consists of four bytes (y coordinate-1, tile index, vertical flip, horizontal flip, background priority, and color palette selection). The advantage of sprites over the background is that they can be positioned anywhere on the screen, allowing for moving objects, although they take up extra memory. VRAM is used for tile maps and attributes, while 8 KiB of tile patterns are stored on the cartridge (can be increased with bank switching).[5]

The NES color palette is based on NTSC values rather than RGB values. While it has a logical palette of 64 colors(6-bit depth), there are only 54 unique entries due to how it was constructed (12 hues each with 4 intensity levels plus 2 sets of 4 greys, with 2 intensities of each set being identical). Normally, 25 colors may be used simultaneously: one background color, four sets of three tile colors and four sets of three sprite colors. To achieve more colors, programmers could switch the color values mid-frame, as well as manipulate “color emphasis” bits to modify individual palette entries at specific screen regions, using carefully timed code.[2]

Up to 64 simultaneous sprites can exist at a time (without reloading sprites mid-frame). Sprites can be either 8 by 8 or 8 by 16 pixels, but this setting affects all sprites, so it must be chosen carefully (Contra and Super Mario Bros. 3 for example use 8x16 mode). There can be up to eight per scan line, with a flag determining when to drop additional sprites, allowing software to rotate sprite priorities. Although this can increase the amount of sprites, doing so almost always causes flicker, as they are simply cycled through.[2]

The background layer can be scrolled both horizontally and vertically. The horizontal scroll can be changed per line for a parallax effect, while the vertical scroll can be changed between scan lines for a split-screen effect.[2] This is often done by trapping Sprite 0 and the non-maskable interrupt (triggered during vertical retrace), but the more advanced memory mappers (see below) generate an interrupt for this purpose.

The standard resolution is 256 by 240 pixels, although it was thought for a time that the NTSC console could only display 256 by 224 pixels, as the top and bottom 8 scan lines are not visible on most television sets. For additional VRAM bandwidth, rendering can be turned off before the raster reaches the bottom of the screen or after it had restarted at the top. The PPU registers and memory can only be accessed by the CPU during the vertical retrace phase, causing NES code to be very sensitive to timing, with the programmer having to alter graphics data between frames.[2]

Arcade versions of the NES's hardware use special variations of the PPU: the PlayChoice-10 uses the RP2C03, while two variants of the Nintendo Vs. Series hardware use the RP2C04 and the RP2C05. All run at 5.37 MHz and output RGB video at NTSC frequencies. The Nintendo Vs. Series versions are modified to prevent easy ROM swapping (the 2C04 came in 4 variations with scrambled palettes, and the 2C05 came in 5 variations with two I/O registers switched and a third register returning a specific value in its normally unused lower bits).[6]

Audio

The NES board supported a total of five sound channels. These included two pulse wave channels of variable duty cycle (12.5%, 25%, 50% and 75%), with a volume control of sixteen levels and hardware pitch bending supporting frequencies ranging from 54 Hz to 28 kHz. Additional channels included one fixed-volume triangle wave channel supporting frequencies from 27 Hz to 56 kHz, one sixteen-volume level white noise channel supporting two modes (by adjusting inputs on a linear feedback shift register) at sixteen preprogrammed frequencies and one differential pulse-code modulation (DPCM) channel with 6-bit resolution, using 1-bit delta encoding at sixteen preprogrammed sample rates from 4.2 kHz to 33.5 kHz. This final channel was also capable of playing standard pulse-code modulation (PCM) sound by writing individual 7-bit values at timed intervals.[2]

Audio/video output

The original Famicom featured an RF modulator plug for audio/video output,[7] while its redesign, the AV Famicom, featured only RCA composite output.[8] On the other hand, the original NES featured both an RF modulator and RCA composite output cables, but the top-loading NES-101 model featured only RF modulator output.[9] The original North American NES was the first and one of the few game consoles to feature direct composite video output, and thus having the ability to be connected to a composite monitor. The French NES, model (FRA) featured a unique "RGB audio/video Output", a proprietary output connector similar to the SNES connector. With the help of an additional PAL-to-RGB chip, it allows this model of NES to output RGB video signal. A specific cable was given with every unit, using the SCART plug to connect it to the TV set.

Memory mappers

Developers quickly reached the Famicom's 32k memory barrier by 1985 and began demanding the ability to create larger, more complex games than was possible with the existing hardware. Nintendo responded with the first of their MMC (Memory Management Controller) chips, which were added to cartridges and allowed bank-switching and other capabilities. The first of these was the MMC1, which allowed battery-backed game saves and the ability to page cartridge ROMs in 16k chunks. Most licensed games used either the MMC1 or the MMC3, which could swap graphics data for animated tiles, diagonal scrolling, and had a built-in interrupt counter for split screen effects, but did not support battery saves. Other games had no mapper and instead only a TTL logic IC to switch out ROM banks.

The most advanced mapper made by Nintendo was the MMC5, which had extra graphics memory and could take some routine tasks like interrupt handling off the CPU, thus freeing more clock cycles for game code. In addition, it used a better battery save method that did not require the user to hold down Reset while powering off the console. Due to its high cost, it was only used in a handful of games (most notably the US version of Castlevania III).

Some third party developers manufactured their own mappers. Konami produced a series of them (the VRC line) which were cheaper to use in Japan than Nintendo's mappers, and in some cases offered sound capabilities beyond those of any Nintendo mapper, but were never used in the US due to the expense of Nintendo of America's approval process and the inability of US consoles to make use of the extra sound hardware.

References

  1. http://problemkaputt.de/everynes.htm
  2. 2.0 2.1 2.2 2.3 2.4 2.5 2.6 "NES Specifications". Retrieved 2007-06-06.
  3. 3.0 3.1 "NES specificaties". Rgame.nl. Retrieved 2007-06-06.
  4. Nutt, Christian; Turner, Benjamin (2003). "Metal Storm: All About the Hardware.". Nintendo Famicom—20 years of fun. Archived from the original on 2005-12-23. Retrieved 2006-05-21.
  5. http://nesdev.com/2C02%20technical%20reference.TXT
  6. "Unisystem VS schematic" (PDF). Retrieved 6 June 2007.
  7. Edwards, Benj (2008-08-07). "Inside Nintendo's Classic Game Console". PC World. Archived from the original on 2010-07-02. Retrieved 2010-06-23.
  8. Edwards, Benj (2006-02-23). "Gotta Love That Fresh "AV Famicom Smell"". Vintage Computing and Gaming. Retrieved 2010-07-01.
  9. "NES Hookups". Nintendo. Retrieved 2010-06-28.