Nintendo 64 programming characteristics

Last updated

The Nintendo 64's programming characteristics describe the elements of writing software for the Nintendo 64 (N64) gaming system.

Contents

History

The Nintendo 64 was released in 1996. At the time, The Economist described the system as "horrendously complex". [1] The difficulties were said to be a combination of oversight on the part of the hardware designers, limitations on 3D graphics, technology limits of that time, and manufacturing issues.

As the Nintendo 64 reached the end of its lifecycle, hardware development chief Genyo Takeda referred to its programming challenges using the word hansei (Japanese : 反省 "reflective regret"). Takeda said, "When we made Nintendo 64, we thought it was logical that if you want to make advanced games, it becomes technically more difficult. We were wrong. We now understand it's the cruising speed that matters, not the momentary flash of peak power." [2]

Memory

The console uses high-bandwidth but high-latency Rambus DRAM. [3] It is hosted from the Reality Coprocessor (RCP) having an internal interconnect across the Reality Signal Processor, Reality Display Processor, and the IO (including microprocessor) interfaces.

There is a physical address space into which the majority of resources are mapped, including the Game Pak, the RSP instruction and data local storage, but neither the RDP texture local storage nor any CPU cache. The RSP, RDP, and IO interfaces each have their own DMA engine, programmable by registers that are exposed through the physical address space. The RSP can address only its local storage, and can program its DMA engine. The RDP DMA engine handles command buffers (so-called display lists); the RDP has a further memory front end for accessing video buffers and data, able to directly fetch from the RSP data local storage through a separate data path.

The R4300 CPU is connected to the RCP through the microprocessor interface, and can perform programmed IO through its cache and memory frontend.

Reality Display Processor

The Reality Display Processor is a fixed-pipeline rasterizer and shader, with Z-buffering, outputting a framebuffer for the video interface to scan out to the display.

Texture cache

The texture cache was 4  KB in size. Its small size led developers to stretch small textures over a comparatively larger space. The console's bilinear filtering only blurs them. When mipmapping is used, texture width requirements and the extra storage for the mipmap levels limit the largest mipmap level to 2 KB. Toward the end of the Nintendo 64's market cycle, some developers precomputed their textures using multi-layered texturing and small texture pieces that were heavily clamped, to simulate larger textures. Examples of this workaround are found in Rare's Perfect Dark , Banjo-Tooie , Conker's Bad Fur Day , and in Factor 5's Indiana Jones and the Infernal Machine . [4] Some games with non-realistic aesthetics use plain colored Gouraud shading instead of texturing on certain surfaces (e.g., Super Mario 64 ). [5]

The big strength was the N64 cartridge. We use the cartridge almost like normal RAM and are streaming all level data, textures, animations, music, sound and even program code while the game is running. With the final size of the levels and the amount of textures, the RAM of the N64 never would have been even remotely enough to fit any individual level. So the cartridge technology really saved the day.

Factor 5, Bringing Indy to N64, IGN [4]

Fill rate

Many Nintendo 64 games are fill-rate limited, not geometry limited. For example, Z-buffering when enabled is a significant share of memory access, otherwise needed for textures and the frame-buffer. Optimization is possible by pushing this function onto the RSP and CPU using a custom microcode. [6] [4] Significant performance Optimization can be found by using a microcode appropriate for each game. The Nintendo 64's polygon per second rating is about 160,000 with hardware features enabled. [7] Some of the more polygon-intense Nintendo 64 games include World Driver Championship , Turok 2: Seeds of Evil , and Indiana Jones and the Infernal Machine . [4]

Reality Signal Processor

The Reality Signal Processor (RSP) accepts microcode, [8] through which, a developer can access different operations, create new effects, and optimize for speed or quality. The RSP is a RISC processor, less capable than the CPU, but with an 8-way 16-bit vector engine. The efficacious use of this engine is governed by the microcode, which defines a small instruction sequence for each complex instruction. While promoting the feature of custom microcodes, Nintendo initially refused to share information on how to use the related microcode tools. This was due to the fear that it would be copied by their competitors. However during the console's last few years, Nintendo shared the microcode information with a few developers. Nintendo's official code tools are basic, with no debugger and poor documentation.

SGI's default microcode for Nintendo 64 is called "Fast3D", which some developers claimed was poorly profiled for use in games. Although it generates more than 100,000 high accuracy polygons per second, this microcode is optimized more for accuracy than for speed, and performance suffered. Nintendo's "Turbo3D" microcode allows 500,000–600,000 normal accuracy polygons per second. However, due to the graphical degradation, Nintendo officially discouraged its use. Companies such as Factor 5, [4] Boss Game Studios, and Rare were able to write custom microcode that reportedly runs their game engines better than SGI's standard microcode.

One of the best examples of custom microcode is Factor 5's N64 port of the Indiana Jones and the Infernal Machine PC game. The Factor 5 team aimed for the high resolution mode of 640×480 [9] because of its visual crispness. The machine was said to be operating at its limits while running at 640×480. The Z-buffer could not be used because it alone consumed the already constrained texture fill rate. To work around the 4 KB texture cache, programmers came up with custom texture formats and tools. Each texture was analyzed and fitted to best texture format for performance and quality. They took advantage of the cartridge as a texture streaming source to squeeze as much detail as possible into each environment and work around RAM limitations. They wrote microcode for real-time lighting, because the supplied microcode from SGI was not optimized for this task, and because they wanted to have more lighting than the PC version. Factor 5's microcode allows almost unlimited realtime lighting and significantly boosts the polygon count. In the end, the N64 version is said to be more feature-rich than the PC version, and is considered to be one of the unit's most advanced games. [4]

Factor 5 again used custom microcode with games such as Star Wars: Rogue Squadron and Star Wars: Episode I: Battle for Naboo . In Star Wars: Rogue Squadron, the team tweaked the microcode for a landscape engine to create the alien worlds. For Star Wars: Battle for Naboo, they used what they learned from Rogue Squadron and made the game run at 640×480, also implementing enhancements for particles and the landscape engine. Battle for Naboo has a long draw distance and large amounts of snow and rain, even in high resolution mode. [10]

In reality, N64 games with high resolution (480i) modes rarely ran at 640x480, in Factor 5 games case, the high resolution was instead set to 400x440, Turok 2, Turok 3 and Turok Rage Wars used 480x360 while Perfect Dark used 640x222 in NTSC, 448x268 in PAL. [11]

See also

Related Research Articles

<span class="mw-page-title-main">Doctor V64</span>

The Doctor V64 is a development and backup device made by Bung Enterprises Ltd that is used in conjunction with the Nintendo 64. The Doctor V64 also had the ability to play Video CDs, audio CDs and had an option for applying stereo 3D effects to the audio.

In processor design, microcode (μcode) is a technique that interposes a layer of computer organization between the central processing unit (CPU) hardware and the programmer-visible instruction set architecture of a computer. Microcode is a layer of hardware-level instructions that implement higher-level machine code instructions or internal finite-state machine sequencing in many digital processing elements. Microcode is used in general-purpose central processing units, although in current desktop CPUs, it is only a fallback path for cases that the faster hardwired control unit cannot handle.

<span class="mw-page-title-main">Nintendo 64</span> Home video game console

The Nintendo 64 (N64) is a home video game console developed by Nintendo. The successor to the Super Nintendo Entertainment System, it was released on June 23, 1996 in Japan, on September 29, 1996 in North America, and on March 1, 1997 in Europe and Australia. It was the last major home console to use cartridges as its primary storage format until the Nintendo Switch in 2017. It competed primarily with the Sony PlayStation and the Sega Saturn.

<span class="mw-page-title-main">Video game console</span> Computer system for running video games

A video game console is an electronic device that outputs a video signal or image to display a video game that can be played with a game controller. These may be home consoles, which are generally placed in a permanent location connected to a television or other display devices and controlled with a separate game controller, or handheld consoles, which include their own display unit and controller functions built into the unit and which can be played anywhere. Hybrid consoles combine elements of both home and handheld consoles.

<i>Turok: Dinosaur Hunter</i> 1997 video game

Turok: Dinosaur Hunter is a first-person shooter video game developed by Iguana Entertainment and published by Acclaim for the Nintendo 64 console and Microsoft Windows. It was released in 1997 in North America and Europe. Turok is an adaptation of the Valiant Comics comic book series of the same name. The player controls Turok, a Native American warrior, who must stop the evil Campaigner from conquering the universe with an ancient and powerful weapon.

The Panasonic M2 is a video game console platform developed by 3DO and then sold to Matsushita, a company known outside Japan by the brand Panasonic. Initially announced as a peripheral chip for the 3DO Interactive Multiplayer, it was later unveiled as a standalone console. The console was cancelled in 1997, but the M2 technology was incorporated into other devices.

<span class="mw-page-title-main">Super FX</span> 3D graphics chip used in Super Nintendo games

The Super FX is a coprocessor on the Graphics Support Unit (GSU) added to select Super Nintendo Entertainment System (SNES) video game cartridges, primarily to facilitate advanced 2D and 3D graphics. The Super FX chip was designed by Argonaut Games, who also co-developed the 3D space rail shooter video game Star Fox with Nintendo to demonstrate the additional polygon rendering capabilities that the chip had introduced to the SNES.

The Quake engine is the game engine developed by id Software to power their 1996 video game Quake. It featured true 3D real-time rendering and is now licensed under the terms of GNU General Public License v2.0 or later.

<i>Turok 2: Seeds of Evil</i> 1998 video game

Turok 2: Seeds of Evil is a first-person shooter video game developed by Iguana Entertainment and published by Acclaim Entertainment. It was released for the Nintendo 64 console in 1998 and ported to Microsoft Windows computers in 1999. Seeds of Evil is the second game in the Turok video game series and a sequel to Turok: Dinosaur Hunter. The game follows the story of a Turok and his efforts to stop a powerful alien entity from escaping the confines of his Lightship. A different game set in the same fictional universe, also titled Turok 2: Seeds of Evil, was released for the Game Boy Color alongside the Nintendo 64 game.

<i>Star Wars Episode I: Battle for Naboo</i> 2000 arcade-style action video game

Star Wars Episode I: Battle for Naboo is an arcade-style action game co-developed by Factor 5 and LucasArts. It is a spiritual successor to Star Wars: Rogue Squadron released two years earlier. Despite the similarities between the two games, the development team designed a new game engine for Battle for Naboo and included land- and water-based combat in addition to aerial combat. The player can control various air, land, and water vehicles; each offers a unique armament arrangement, as well as varying degrees of speed and maneuverability. Bonus power-ups that improve these crafts' weapons or durability are hidden in different levels throughout the game. The player's performance is checked against four medal benchmarks after the completion of each level. Acquiring these medals promotes the player's rank and helps unlock hidden content.

<i>Turok: Rage Wars</i> 1999 video game

Turok: Rage Wars is a first-person shooter video game developed by Acclaim Studios Austin and published by Acclaim Entertainment. It was released for the Nintendo 64 video game console in 1999. Rage Wars is a non-canon game in the Turok video game series, with a heavy emphasis on multiplayer. It supports a maximum of four players simultaneously via split-screen. The game also supports the Nintendo 64 Expansion Pak for high-resolution graphics, but does not require it. A separate game, also titled Turok: Rage Wars, which is set in the same universe but features a different gameplay and storyline, was released for the Game Boy Color in 1999.

<i>WWF War Zone</i> 1998 professional wrestling video game

WWF War Zone is a professional wrestling video game developed by Iguana West and released by Acclaim Entertainment in 1998 for the PlayStation, Nintendo 64, and Game Boy. The game features wrestlers from the World Wrestling Federation.

<i>World Driver Championship</i> 1999 video game

World Driver Championship is an automobile racing video game. It was developed by Boss Game Studios and published for the Nintendo 64 by Midway Games. It is notable for having especially high quality graphics.

<span class="mw-page-title-main">SGI Onyx</span> Supercomputers

SGI Onyx is a series of visualization systems designed and manufactured by SGI, introduced in 1993 and offered in two models, deskside and rackmount, codenamed Eveready and Terminator respectively. The Onyx's basic system architecture is based on the SGI Challenge servers, but with graphics hardware.

This article describes the processor, memory, and other components of the 1996 Nintendo 64 home video game console.

<span class="mw-page-title-main">Nintendo 64 Game Pak</span> Nintendo 64 storage medium

Nintendo 64 Game Pak is the brand name of the consumer ROM cartridge product that stores game data for the Nintendo 64, released in 1996. As with Nintendo's previous consoles, the Game Pak's design tradeoffs were intended to achieve maximal system speed and minimal base console cost—with lesser storage space and a higher unit cost per game. Integrating a CD-ROM drive, with its expensive and slow moving parts, would have drastically increased the console's price and reduced its performance.

<span class="mw-page-title-main">PlayStation 2 technical specifications</span> Overview of the PlayStation 2 technical specifications

The PlayStation 2 technical specifications describe the various components of the PlayStation 2 (PS2) video game console.

<span class="mw-page-title-main">Super Nintendo Entertainment System Game Pak</span> Cartridges for the Super Nintendo Entertainment System

The Super Nintendo Entertainment System Game Pak is the system's default ROM cartridge medium. It is called Game Pak in most Western regions, and Cassette in Japan and parts of Latin America. While the Super NES can address 128 Megabits, only 117.75 Megabits are actually available for cartridge use. A fairly normal mapping can easily address up to 95 Megabit of ROM data with 8 Megabits of battery-backed RAM. However, most available memory access controllers only support mappings of up to 32 Megabits. The largest games released contain 48 Megabits of ROM data, while the smallest games contain 2 Megabits.

<span class="mw-page-title-main">PlayStation technical specifications</span> Overview of the technical specifications of the PlayStation

The PlayStation technical specifications describe the various components of the original PlayStation video game console.

References

  1. "Nintendo Wakes Up." The Economist Aug 03 1996: 55-. ABI/INFORM Global; ProQuest Research Library. Web. 24 May 2012.
  2. Croal, N'Gai; Kawaguchi, Masato; Saltzman, Marc. "It's Hip To Be Square." Newsweek 136.10 (2000): 53. MasterFILE Premier. Web. 23 July 2013.
  3. "Difference Between RDRAM and DDR" . Retrieved 2009-01-15.
  4. 1 2 3 4 5 6 "Bringing Indy to N64". IGN. 2000-11-09. Retrieved September 24, 2013.
  5. "Super Mario Galaxy" . Retrieved 2009-01-11.
  6. "Hidden Surface Removal" (PDF). Archived from the original (PDF) on March 4, 2009. Retrieved April 24, 2014.
  7. Next Generation , issue 24 (December 1996), page 74
  8. "Nintendo 64". Archived from the original on 2007-07-10. Retrieved 2009-01-14.
  9. "Indiana Jones and the Infernal Machine". IGN. December 12, 2000. Retrieved September 24, 2013.
  10. "Interview: Battling the N64 (Naboo)". IGN64. 2000-11-10. Retrieved 2008-03-27.