Graphics Microcode - F3DEX/L3DEX Series

Graphics are rendered in Nintendo 64 games by creating a graphics display list, and passing this display list to the RSP. In order for the RSP to process this display list, the application, using system calls, loads graphics microcode. This section discusses the different microcode object files available to applications.

There are 5 basic versions of the graphics microcode, and each basic version has up to 3 subtypes. The basic versions are known as gspFast3D, gspF3DNoN, gspLine3D, gspTurbo3D, and gspSprite2D. Each basic version has a different set of graphics rendering features. Each subtype has the same set of graphics features, but varies according to how the RSP passes commands to the RDP. The three subtypes are regular, .dram and .fifo. The object files for the microcode are labeled, <basicType>.o, <basicType>.dram.o, and <basicType>.fifo.o.

In addition, there are seven versions of gspFast3D, gspF3DNoN, and gspLine3D that have been specially modified to .fifo subtypes to improve performance. These modified versions are gspF3DEX, gspF3DEX.NoN, gspF3DLX, gspF3DLX.NoN, gspF3DLX.Rej, gspF3DLP.Rej, and gspL3DEX.

gspFast3D microcode is the most full-featured of the microcode types. It is also the microcode used in the majority of the demo applications. gspFast3D supports 3D triangles, 3D clipping, z-buffering, near and far clipping, lighting, mip-mapped textures, perspective textures, fog, and matrix stack operations. It does not support the GBI command, gSPLine3D.

gspF3DNoN microcode is similar to gspFast3D microcode, except it does not handle near plane clipping in the same manner. When using gspFast3D microcode, objects between the eye and the near plane are clipped. When using gspF3DNoN microcode, objects between the eye and the near plane are not clipped. However, the area between the eye and the near clipping plane does not implement zbuffering. This means that objects that fall into this area must be rendered in order from far to near.

gspLine3D microcode contains many of the features contained in gspFast3D, except that instead of rendering triangles, it draws 3D lines. This is useful for producing wireframe effects. If a gSP1Triangle command is encountered it will render the three edges of the triangle, but not the center portion of the triangle.

gspTurbo3D microcode is a reduced-feature, reduced-precision, microcode that delivers significantly faster performance. The features not supported by gspTurbo3D are: Clipping, lighting, perspective-corrected textures, and matrix stack operations. The quality of the anti-aliasing also suffers, due to the lack of precision used by gspTurbo3D. This loss of precision can also manifest itself as various visual artifacts, depending on the content. gspTurbo3D uses a different format for the display list.

gspSprite2D microcode is optimized for rendering 2D sprite images. Sprites are implemented as textured screen rectangles. gspSprite2D does not support 3D lines, 3D triangles, vertex operations, matrix operations, lighting, or fog. All of the DP commands such as blender modes, and color combiner modes are supported. Zbuffering can be used to arrange the order of the sprites from front to back.

gspF3DEX (Fast3D Series Improved Version)
The F3DEX series is a tuned version of the previous Fast3D and Line3D microcode. The new version uses .fifo exclusively as the method by which commands are passed from the RSP to the RDP. In addition, the vertex cache size is increased, and the matrix stack is increased from 10 levels to 18 levels. The seven microcode versions in this series are listed below. Among them are several versions designed to improve performance by restricting function.

  1. gspF3DEX.fifo.o

  2. gspF3DEX.NoN.fifo.o

  3. gspF3DLX.fifo.o

  4. gspF3DLX.NoN.fifo.o

  5. gspF3DLX.Rej.fifo.o

  6. gspF3DLP.Rej.fifo.o

  7. gspL3DEX.fifo.o

Copyright © 1999
Nintendo of America Inc. All Rights Reserved
Nintendo and N64 are registered trademarks of Nintendo
Last Updated January, 1999