"One of its technical drawbacks was a limited texture cache, which could only hold textures of small dimensions and reduced color depth, which had to be stretched to cover larger in-game surfaces.
The Nintendo 64′s central processing unit (CPU) is the NEC VR4300,[20] a cost-reduced derivative of the 64-bit MIPS Technologies R4300i. Built by NEC on a 0.35 µm process, the VR4300 is a RISC 5-stage scalar in-order execution processor, with integrated floating point unit, internal 24 KB direct-mapped[21] L1 cache (16KB for instructions, 8KB for data). The 4.6 million transistor CPU is cooled passively by an aluminum heatspreader that makes contact with a steel heat sink above.[22]
Clocked at 93.75 MHz, the N64′s VR4300 was the most powerful console CPU of its generation.[23] Except for its narrower 32-bit system bus, the VR4300 retained the computational abilities of the more powerful 64-bit MIPS R4300i,[20] though software rarely took advantage of 64-bit data precision operations. N64 game-titles generally used faster (and more compact) 32-bit data-operations,[24] as these were sufficient to generate 3D-scene data for the console′s RSP (Reality Signal Processor; see below) unit. In addition, 32-bit code executed faster and required less storage space (which was at a premium on the N64's cartridges) Though powerful, the CPU was hindered by a 250 MB/s bus to the system memory; not only that, but in order to access the RAM, the CPU had to go through the RCP (Reality Co-Processor), and could not use DMA to do so (the RCP could). This problem is further compounded by the RDRAM′s very high access latency.
Emulators—such as UltraHLE and Project64—benefit from the scarcity of 64-bit operations in the game′s executable-code, as the emulator is generally hosted on a 32-bit machine architecture. These emulators performed most calculations at 32-bit precision, and trapped the few OS subroutines that actually made use of 64-bit instructions.
The Nintendo 64 had weaknesses that were caused by a combination of oversight on the part of the hardware designers, limitations on 3D technology of the time, and manufacturing capabilities. One major flaw was the limited texture cache of 4 KB. This made it difficult to load anything but small, low color depth textures into the rendering engine. This small texture limitation caused blurring due to developers stretching small textures to cover a surface, and then the console′s bilinear filtering would blur them further. To make matters worse, due to the design of the renderer, if mipmapping was used, the texture cache was effectively halved to 2 KB. Toward the end of Nintendo 64′s lifetime, creative developers managed to use tricks, such as multi-layered texturing and heavily-clamped, small texture pieces, to simulate larger textures. Perfect Dark, Banjo-Tooie, and Conker's Bad Fur Day are possibly the best examples of this ingenuity, all of which were developed by Rare. Games often also used plain colored Gouraud shading instead of texturing on certain surfaces, especially in games with themes not targeting realism (e.g., Super Mario 64).
There were other challenges for developers to work around. Z-buffering significantly crippled the RDP′s fill rate. Thus, for maximum performance, most Nintendo 64 games were actually fill-rate limited, not geometry limited, which is ironic considering the great concern over the Nintendo 64′s low polygon per second rating of only about 100,000;[39] however, some of the most polygon-intense Nintendo 64 games, such as World Driver Championship, frequently pushed past the Sony PlayStation′s typical in-game polygon counts.
The unified memory subsystem of Nintendo 64 was another critical weakness for the machine. The RDRAM had very high access latency,[40] which nearly negated its high bandwidth advantage. In addition, game developers commented that the Nintendo 64′s memory controller setup was poor. The R4300 CPU was severely limited at memory access since it had to go through the RCP to access main memory, and could not use DMA to do so.
Graphically, results of the Nintendo cartridge system were mixed. The N64′s graphics chip was capable of trilinear filtering, which allowed textures to look very smooth compared to the Saturn or the PlayStation. This was due to the latter two using nearest-neighbor interpolation, resulting in textures that were pixelated.
However, the smaller storage size of ROM cartridges limited the number of available textures, resulting in games that had blurry graphics. This was caused by the liberal use of stretched, low-resolution textures, and was compounded by the N64′s 4096-byte limit[59] on a single texture. Some games, such as Mario Party 2, use a large amount of Gouraud shading or very simple textures to produce a cartoon-like image. This fit the themes of many games, and allowed this style of imagery a sharp look. Cartridges for some later games, such as Resident Evil 2 and Sin & Punishment and Mission: Impossible, featured more ROM space, allowing for more detailed graphics."