« GameCube Architecture (index)

GameCube Architecture

Chapter 4: Graphics


Table of Contents

  1. Architecture and design
    1. Database
    2. Geometry
    3. Texture
    4. Render
  2. Interactive comparison
    1. The upgrade
    2. The update
  3. Creativity
  4. Video output system
  5. Connections

This is one of the most critical sections of this console, it basically makes the GameCube, a GameCube.

The history of this console's GPU has some interesting connections: Wei Yen, the director of N64's SoC (the RCP), later founded ArtX and landed a contract with Nintendo to develop their next-gen chip: Flipper.

Image
Super Mario Sunshine (2002).

There were lots of advancements done from the previous iteration, for instance, the subsystem was severely simplified down to a single (but powerful) core.

During the development process, ArtX got acquired by ATI, which in turn was sold to AMD six years later. Hence, this is why you see an ATI sticker stamped on the front of the case.

Architecture and design

Flipper is a complex block that handles multiple services , so let's focus on the graphics component for now (since it's the one responsible for bringing our geometry to life). We'll call this area the GPU or Graphics Engine and, if you've been reading the N64 article, just letting you know that the core is now functional out of the box, so programmers won't need to worry about injecting code to make it work. Nevertheless, there will be some interesting parts that are customisable.

Image
Pipeline design of Flipper's GPU.

As always, in order to draw a frame on the screen, our data will be pumped through the GPU's pipeline. Data goes through lots of different components which we can group into four stages:

Database

Image
Database stage diagrams.

The CPU and GPU communicate to each other using a fixed-length FIFO buffer in main RAM, this is a reserved portion where the CPU will write drawing commands that the GPU will read (and eventually display), this functionality is natively supported by the CPU and GPU.

Furthermore, the CPU and GPU don't have to be pointing at the same FIFO at the same time, so the CPU can fill a separate one while the GPU is reading the first one . This prevents idling.

Issuing individual commands to construct our geometry can get very tedious with complex scenes, so official libraries included tools that generated the required Display Lists (pre-compiled set FIFO commands) from the game's assets, this chunk only needs to be copied to RAM to let the GPU effectively display them.

The GPU contains a command processor which is in charge of fetching commands from FIFO.

Geometry

Image
Vertex stage diagram using indirect mode.

Here primitives are transformed to shape accordingly for the desired scenery and prepared for rasterising. The engine uses a dedicated Vertex unit or 'VU' to accomplish this.

There are two vertex modes available to handle primitives issued through FIFO:

Once loaded, the primitives can be transformed, clipped, lighted (each vertex will have an RGB value that can also be interpolated for Gouraud Shading purposes) and finally, projected.

Texture

Image
Texture stage diagram using a default setup.

Now it's time to apply textures and effects to our models, and for that the GPU includes multiple units which will process our pixels. Now, this is a very sophisticated (yet quite complex) procedure, so if you find it difficult to follow, just think of it as a big assembly line that processes pixels. Having said that, there are three groups of units available:

All of this is assisted by 1 MB of Texture memory (1T-SRAM type) which can be split into cache and Scratchpad memory (fast RAM). Real-time hardware decompression for SRTC (S3 Texture Compression) textures is also available to fit more textures in that single meg. of memory available.

Render

Image
Render stage diagram.

The final stage of the rendering process includes applying some optional but useful touches to our scene:

The resulting frame is finally written to the frame buffer in the embedded 1T-SRAM, but this is still locked inside Flipper (the area is called 'Embedded Frame Buffer' or 'EFB', though it also includes the z-buffer). So, to display it on our TV, we have to copy it to the External Frame-Buffer or 'XFB' , which can be picked up the Video Interface or 'VI'. Besides, the copy process can apply effects like Antialiasing (reduces blocky edges), Deflicker (smooths sudden changes in brightness), RGB to YUV conversion (a similar format that occupies less space in memory) and Y-scaling (vertically scales the frame).

It's worth mentioning that the XFB area can also be manipulated by the CPU, this enables it to combine previously-rendered bitmaps with our recently-rendered frame; or when certain games need to render very colour-rich frames which can't fit in the EFB, so they are rendered in parts and merged by the CPU afterwards (always keeping in-sync with the VI).

Interactive comparison

Time to put all of this into perspective, check out how programmers evolved the designs of their previous games to take advantage of the new graphics capabilities of this console. Don't forget the examples are interactive!

The upgrade

The famous Mario model which had to be stripped down due to polygon counting on the previous generation got completely redesigned for this one, take a closer look at how the model evolved from plain faces to wrinkled sleeves.

3D model 3D model 3D model
Interactive model available in the modern edition
Super Smash Bros (1999) for the N64.
320 triangles.

3D model 3D model 3D model
Interactive model available in the modern edition
Super Smash Bros. Melee (2001) for the GC.
4,718 triangles.

It's really impressive how much detail has been gained in just two years, eh?

The update

In this case, Sonic Team already designed a Sonic model for their unique console, but after porting their game to the GameCube they found themselves able to add more polygons to their model, achieving better detail.

3D model 3D model 3D model
Interactive model available in the modern edition
Sonic Adventure (1999) for the DC.
1,001 triangles.

3D model 3D model 3D model
Interactive model available in the modern edition
Sonic DX (2003) for the GC.
1,993 triangles.

Creativity

As you can see from the inner working of this pipeline, graphics technology has been evolving to point that programmers can now take control of certain functions of the rendering process.

Image
The Legend of Zelda: The Wind Waker (2003).

During the same time, PC graphics cards were starting to discard fixed-function pipelines in favour of shader cores (units that run small programs which define how pixels are operated). Flipper still contains a fixed-function GPU, however, by including components such as the TEV unit, one could argue that Nintendo provided their own shader-like solution.

I guess one of the best examples of games that exploited this new capability is The Legend of Zelda: Wind Waker which implements a unique colour/lighting technique known as Cel shading to make its textures look cartoonish.

Video output system

The video signal outputs a resolution of up to 640x480 pixels (or 768×576 px in PAL) with up to 16.7 million colours (24-bit depth). Additionally, the system could broadcast its signal in progressive mode (which has a clearer image, but not every TV may have supported it during that time).

The XFB can have multiple dimensions, so for compatibility reasons, the Video interface will try its best to display the frame by re-sampling the XFB to fit the TV screen based on the region.

Connections

The console included not one, but two video output connectors:

Image
A/V Connections on the back.


Previous: 3. CPU

Next: 5. Audio


Rodrigo Copetti © 2026 RSS Feed

Switch to modern edition

Home · Writings · Support · About author · About website