Let's take a look at the components inside an N64, and what their capabilities are. [Be sure to check out How Video Game Consoles Work first for a general introduction to game consoles.]
Processor: 64-bit R4300i "Reality Engine"
- Processor clock speed: 93.75 MHz
- Bus speed: 562.5 MB per second
Co-Processor: "Reality Co-Processor," 62.5 MHz custom chip that combines the graphics and audio systems.
Graphics: "Reality Immersion Processor"
- Processor clock speed: 62.5 MHz
- MIPS (Million Instructions Per Second): 500
- Resolution: 640x480, 320x240 or 256x224 interlaced
- Colors: 21-bit (2,097,152) maximum
- Polygon rendering: 150,000 polygons per second
- Geometry engine: anti-aliasing, perspective correction, Gouraud shading,trilinear mip mapping, environment mapping
Audio: "Reality Signal Processor"
- Channels: 64
- Sample rate: 44.1 KHz
- Memory: uses system memory
Memory: 4 MB Rambus D-RAM (expands to 8 MB)
Operating system: Proprietary
Game medium: Cartridge
Similar to the PlayStation, the CPU in the N64 is a RISC processor. RISC stands for reduced instruction set computer, and means that the instructions and computations performed by the processor are simpler and fewer. Also, RISC chips are superscalar -- they can perform multiple instructions at the same time. This combination of capabilities, performing multiple instructions simultaneously and completing each instruction faster because it is simpler, allows the CPU to perform better than many chips with a much faster clock speed.
To lower production costs, the graphics and audio processors are combined into a single application specific integrated circuit, or ASIC. Simply put, the ASIC which serves as the N64's co-processor is a customized chip created to manage components that would otherwise be handled by multiple chips.
Some special features of the N64 include perspective correction and trilinear mip mapping. Perspective correction makes the texture map resize at the same rate as the object that it is mapped on.
Trilinear mip mapping is a cool process. In this form of texture mapping, three sizes of each texture map are made, a large, a medium and a small version. In essence, it replaces the appearance of an object with a more detailed image as you move closer to the object in the game. Let's take a look at how it uses these maps:
- The system calculates the distance from your viewpoint to an object in the game.
- The system loads the texture maps for the object. Our three maps will be 64x64 (large), 32x32 (medium), and 8x8 (small).
- The system determines the exact size that the image map needs to be -- let's say 16x16 for our example here.
- Based on the size, it decides which two texture maps to use. For our example, it might choose the medium and small texture maps.
- It then interpolates (averages) between the two texture maps, creating a custom texture map that is 16x16, which it then applies to the object.
Environment mapping is no less amazing. Simple in concept, it means that reflections of objects are rendered and mapped onto the reflecting surface. The sheer amount of calculating that is done by the graphics processor to determine the angle and transparency for each reflected object, and then render it in real time, is extraordinary. An incredible number of calculations have to happen for every single polygon in a game. And there can be over a hundred thousand polygons on the screen at any given time!
The games come on proprietary ROMs housed in plastic cartridges. When a game is put in the console, the following happens:
- You turn the power on.
- The console loads portions of the operating system from ROM into RAM.
- The game initialization sequence is loaded into RAM.
- You interact with the game via the controller.
- As each specific part of the game is requested, the application code, video, audio and hardware-render geometry are loaded into RAM.
- The CPU coordinates everything. It receives the input from the controller, pulls the data from RAM and directs the graphics and audio processing.
- You are finally beaten by the game and turn it off.