Welcome to our page dedicated to Gamecube reverse engineering! The Gamecube was a popular gaming console released by Nintendo in 2001, and has since become a beloved classic of the gaming world. If you’re interested in learning more about the technical aspects of this console and how it works, you’ve come to the right place.
On this page, we’ve compiled a list of links to other pages that cover various topics related to Gamecube reverse engineering. Whether you’re interested in understanding the hardware architecture of the console, analyzing game code, or exploring the many mods and hacks that have been created by enthusiasts over the years, you’ll find a wealth of resources and information on the pages we’ve linked to.
So grab your Gamecube controller, and get ready to dive into the exciting world of Gamecube reverse engineering!
Hardware
The Nintendo Gamecube has fairly sophisticated hardware for the time, this was when Nintendo was still trying to compete with raw processing power. The hardware would then be used as a basis of both the Wii and Wii U consoles in the future.
Retail Hardware
Rodrigo Copetti has an excellent in-depth article about the hardware architecture of the Nintendo Gamecube, it is a must read for anyone wanting to reverse engineer Gamecube games as you will need to know all about the low level architecture.
Development Hardware
Unreleased Hardware
In China there were plans to release a version of the Gamecube with DVD playback functionality and additional security. This was to be a sequel to the iQue Player which was a Chinese only Nintendo 64 plug and play device. However half way through development the resources were moved to work on the Nintendo Wii instead.
Gamecube Games
The Nintendo Gamecube has an excellent library of games just begging to be reverse engineered, it is always a good idea to do some research before you start, this is where this section comes in as it deals with specific games.
Games with Debug Symbols
If you are interested in reverse engineering a Gamecube game, the first step is to find out if the game has its debug symbols available, this makes it much easier to reverse as all the functions will have nice friendly human readable names.
Gamecube Exclusives
The most valuable reverse engineering projects tend to be the platform exclusives that have never been re-released as these are the games that can benefit the most from enhancements on modern hardware.
Wikipedia maintains a list of Gamecube exclusives - GameCube-only games - Wikipedia
Prototype Games
Prototype games are ideal targets for reverse engineering as many of them contain developer information inside them and some games never got a retail release, making them even more interesting!
Games with Emulators ON Gamecube
A few Gamecube games have emulator code built into them either as bonus content (Animal Crossing, Fight Night Round 2) or as the main game (Sonic Mega Collection).
Here is a list of known games that have emulators built in:
- Fight Night Round 2 (uses an emulator called SNESticle to play Super Punch Out, ROM file is called SNS4Q0.471 on the Disc, same filename as seen in Nintendo Lot-Check Leaks)
Fight Night Round 2
The Gamecube game Fight Night Round 2 has a playable version of the SNES game Super Punch Out on the Disc called SNS4Q0.471. This file must have come from Nintendo as it matches the Nintendo Lot-check naming scheme that Nintendo uses internally.
The cool thing about this is that the emulator was written by Icer Addis who was the co-creator of one of the first ever NES emulators known as NESticle. An easter egg of sorts can be found when looking at the strings inside the executable, they called the SNES emulator for gamecube SNESticle!
Not only that but a project was launched to try to get other SNES ROMS to work with the emulator known as the The SNESticle Liberation Project which consisted of a Multi-ROM menu SNES Rom and a Python script to inject ROMS and put everything together (fn22snesticle.py).
The devlog is a very good read and is available here: Devlog - The SNESticle Liberation Project
This drew the attention of Icer who decided to release the full source code for SNESticle (PS2 & Dreamcast): iaddis/SNESticle: SNESticle source code (circa ~2004)
Game Engines for the Nintendo GameCube
Before Unity and the modern Unreal Engine dominated the scene it was common for developers to create their own in-house game engine, or license a third party engine.
Merkury engine by Krome Studios (in-house)
Krome Studios used the Merkury Engine for many of its own titles, particularly on the GameCube and other last-generation systems. A programmer for Krome Studios, Tony Ball managed to get the engine running on the GameCube hardware only took a couple of weeks, with development running simultaneously with the PlayStation 2 version.
Here are the games that used the Merkury Engine for the GameCube:
- Ty the Tasmanian Tiger (2002) - The first in the franchise and a flagship Merkury title.
- The Adventures of Jimmy Neutron: Jet Fusion (2003) - Also released on PS2.
- Ty the Tasmanian Tiger 2: Bush Rescue (2004)
- King Arthur (2004)
- Ty the Tasmanian Tiger 3: Night of the Quinkan (2005)
- The Legend of Spyro: A New Beginning (2006) - Developed by Krome for the GameCube, PS2, Xbox, and GBA.
If you are interested in learning more we have a specific post about the Merkury engine:
Reverse Engineering
Console security
Modern Vintage Gamer explains how GameCube security was defeated. The video provides context for the platform’s disc formats, homebrew tools and reverse-engineering workflows.
GameCube specific File Formats
We have a specific post that covers all the file formats that can be found in gamecube games (or file formats used to store gamecube games) here:
Recognising PowerPC Compiler Patterns
Ordinary C arithmetic can look elaborate in a PowerPC disassembly. The decomp.wtf PowerPC guide provides recognition clues; use instruction semantics to test each interpretation rather than assigning an original C type from one opcode 1.
These patterns are useful starting points for the GameCube’s integer and scalar floating-point code 2:
| Pattern | Interpretation to test |
|---|---|
clrlwi r3,r3,24 |
Keep the low eight bits, as in a mask or an unsigned-byte conversion |
cmpw versus cmplw |
Signed versus unsigned comparison at this operation |
cntlzw followed by a right shift of five |
Produce one for a zero input and zero otherwise |
fctiwz, followed by a store and integer load |
Convert floating point to a signed integer with truncation toward zero, then transfer the result |
frsp |
Round a floating-point register value to single precision |
For example, this illustrative sequence computes a zero test into r3:
cntlzw r3,r4
srwi r3,r3,5
A zero 32-bit input has 32 leading zero bits; any nonzero input has at most 31.
Shifting that count right by five gives a value equivalent to r4 == 0.
This identifies the operation, not whether the programmer wrote !x, a comparison or a conditional expression.
Floating-Point Expressions Need Extra Care
An integer-to-floating-point conversion may construct a double-precision bit pattern in memory and subtract a bias. The constants can look like unrelated game data until the surrounding stores and floating-point load are traced 1.
The fmadds instruction combines multiplication and addition with a single rounding to single precision.
It can implement an expression shaped like a * b + c, but separate multiply and add instructions can round differently 3.
Preserve operand order and check the compiler’s floating-point settings when matching.
Likewise, frsp establishes a rounding operation; it does not alone prove there was a source-level double variable.
Compare these candidates with the matching-decompilation workflow, keeping the project’s compiler and flags fixed while testing expression changes.
Runtime Thunks and Register Inputs
Some runtime helpers use inputs outside the ordinary C argument registers.
The decomp.wtf tests include a CodeWarrior member-function-pointer dispatch helper, __ptmf_scall, that reads a descriptor through r12 before assigning that register 4.
Trace the caller’s setup of r12 and the helper’s loads before declaring an ordinary C function prototype.
A wrapper that adjusts an object pointer and branches indirectly may implement language runtime machinery rather than game logic.
Compare against the project’s runtime library before attempting an independent reconstruction.
For general checks, see function boundaries and unusual calling conventions.
All Posts
Introduction Welcome to our page dedicated to the technical details of the Gamecube game 007 Agent Under Fire!
If you’re a fan of this classic first-person shooter game, you might be interested in learning more about the technical aspects that...
...
Introduction In 2020 and 2021 numerous secret files have been leaked from Nintendo thanks to Zammis Clark.
Included in these files were source code for a variety of Wii internal applications such as a Diagnostic tool known as DIAG4.
This...
...
AMC Dolphin Development Hardware (DDH) The earliest Gamecube development hardware available to game developers was known as the Dolphin Development Hardware or simply DDH for short.
This system was sold before the other development kits were finalised, allowing game developers...
...
If you are interested in reverse engineering a Gamecube game, the first step is to find out if the game has its debug symbols available, this makes it much easier to reverse as all the functions will have nice friendly... ...
Emulation File Formats The table below lists the relevant entries.
Extension Description rvz Compressed ISO Format (Dolphin) iso Disc Image (Uncompressed) Formats Used on Disc The table below lists the relevant entries.
Extension Description .GSF Sound File .SNI Sound Include...
...
Introduction On the 21st August 2021 the full source code to the classic GTA clone staring The Simpsons was released online.
This included both the C++ source code plus the editable asset files in Maya format!
This post will cover...
...
On the 20th July 2021 the Nintendo Leaks (aka Gigaleaks) continued after a long hiatus, the content was obtained by Zammis Clark and then leaked online by anonymous individuals.
Files Leaked The files that were leaked on the 20th July...
...
In the Nintendo leak on 20th July 2021 an archive called DIAG4RVL.7z was released to the internet, this archive contains a CVS repository containing 3 different software development kits for the Wii (codename Revolution).
The three folders that were contained...
...
Introduction In 2020 and 2021 numerous secret files have been leaked from Nintendo thanks to Zammis Clark.
Included in these files were documentation and source code for an unreleased console for the Chinese market with the codename BB2 (BroadOn Board...
...
Magazine Interviews
The magazine index collects developer interviews tagged for this system across all indexed magazines.
| Magazine | Issue | Pages | Developer | Platforms | Description |
|---|---|---|---|---|---|
| Retro Gamer | 133 | pp. 10-11 | Yoshiaki Hirabayashi | GameCube, PC, PlayStation 4 | The producer discusses remastering the GameCube Resident Evil. |
| Retro Gamer | 139 | pp. 84-89 | Hiroyuki Kobayashi | GameCube | The Capcom producer discusses remaking Resident Evil for GameCube. |
| Retro Gamer | 143 | pp. 18-25 | F-Zero-influenced racing developers | SNES, GameCube, PC | Racing developers discuss the influence of Nintendo’s F-Zero. |
| Retro Gamer | 150 | p. 31 | Mark Pacini and Kensuke Tanabe | GameCube | The developers discuss design choices behind Metroid Prime. |
| Retro Gamer | 150 | pp. 100-103 | Hiroyuki Kobayashi | GameCube | The Capcom producer describes the prototypes and design changes behind Resident Evil 4. |
| Retro Gamer | 158 | pp. 92-97 | Gregg Tavares | PC, PlayStation, GameCube | Tavares discusses his game development career. |
| Retro Gamer | 160 | pp. 83-89 | Phil Tossell | GameCube | The Rare developer discusses developing for the GameCube. |
| Retro Gamer | 164 | pp. 92-97 | Goichi Suda | PlayStation, GameCube, Wii | Suda51 discusses his career and Grasshopper Manufacture’s games. |
| Retro Gamer | 168 | pp. 20-27 | Ryan Kaufman and Julian Eggebrecht | Nintendo 64, GameCube | LucasArts and Factor 5 staff discuss the Rogue Squadron games. |
| Retro Gamer | 173 | pp. 18-27 | Yoshiaki Koizumi | GameCube | Koizumi recalls developing Super Mario Sunshine. |
| Retro Gamer | 177 | p. 39 | Mike Keith | GameCube | The Factor 5 programmer discusses making Rogue Leader for GameCube. |
| Retro Gamer | 178 | pp. 76-81 | Paul Hughes | PC, PlayStation 2, Nintendo GameCube | Hughes recalls founding Warthog Games and developing its varied catalogue. |
| Retro Gamer | 198 | pp. 78-83 | Elisabeth Pellen and Nathalie Moschetti-Nogard | PC, PlayStation 2, Xbox, GameCube | The writer and art director discuss adapting the comic XIII into a shooter. |
| Retro Gamer | 208 | pp. 80-85 | Denis Dyack | GameCube | Dyack describes making the psychological horror game Eternal Darkness: Sanity’s Requiem. |
| Retro Gamer | 215 | pp. 82-85 | David Perry | PlayStation 2, Xbox, GameCube, PC | Perry revisits Shiny Entertainment’s ambitious film tie-in Enter the Matrix. |
| Retro Gamer | 218 | pp. 88-95 | David Doak and Free Radical Design developers | PlayStation 2, GameCube, Xbox | The team revisits the creation and evolution of the TimeSplitters series. |
| Retro Gamer | 220 | pp. 86-89 | Patrick Lipo and Tom Odell | GameCube, PlayStation 2, Xbox | Raven designers recall making the action role-playing game X-Men Legends. |
| Retro Gamer | 222 | pp. 92-97 | Charles Martinet | Nintendo 64, GameCube | Martinet reflects on recording Mario and other voices for Nintendo games. |
| Retro Gamer | 223 | pp. 90-97 | Jason Wiggin, Eric DeMilt, David Maldonado and Jon Hales | PlayStation 2, Xbox, GameCube | Black Isle and Snowblind veterans discuss developing the Baldur’s Gate: Dark Alliance games. |
| Retro Gamer | 225 | p. 24 | Paul Gardner | GameCube, PlayStation 2, PSP | Gardner answers questions about developing Super Monkey Ball Adventure. |
| Retro Gamer | 228 | pp. 86-89 | Hudson Piehl, Jason Epps and Scott Evans | PlayStation 2, GameCube, Xbox | Developers revisit The Lord of the Rings: The Two Towers. |
| Retro Gamer | 229 | pp. 90-95 | Bret Robbins and Arcadia Kim | PlayStation 2, GameCube, Xbox, PC | EA developers explain how they adapted The Lord of the Rings: The Return of the King. |
| Retro Gamer | 232 | pp. 86-91 | Christopher Mitchell, Nigel Brooke and Steve Bocska | GameCube, PlayStation 2, Xbox, PC | The Radical Entertainment team revisits The Simpsons: Hit & Run. |
| Retro Gamer | 244 | pp. 18-27 | Alex Moore and Chuck Beaver | GameCube, Xbox 360, PlayStation 3 | Survival-horror designers discuss the influence of Resident Evil 4 on later games. |
| Retro Gamer | 247 | pp. 8-9 | Koji Nakajima | Switch, GameCube | The producer discusses remastering the Baten Kaitos games for Switch. |
References
-
IBM AIX 7.1 Assembler Language Reference, instruction entries for clrlwi, cmp, cmpl, cntlzw, fctiwz and frsp. ↩