Gauntlet Dark Legacy
OriginGameCube
TechnologyNative C/C++ port (engine reimplementation)
Available forWindows, Linux, macOS
View official projectAbout the project
Gauntlet Dark Legacy es un videojuego de acción y aventura publicado por Midway Games en 2001.
Official project information
Gauntlet Dark Legacy

<!--
The progress badges and graphic above are served by https://decomp.dev.
They stay blank until the repository is registered there: sign in at
decomp.dev with GitHub and add this project. CI already uploads the
`report.json` progress report on every build of the default branch, which
decomp.dev ingests automatically once the project is registered.
-->
A work-in-progress decompilation of Gauntlet Dark Legacy for the Nintendo GameCube, built with decomp-toolkit and the dtk-template project structure.
This repository does not contain any game assets or assembly whatsoever. An existing copy of the game is required.
The required original main.dol input is:
| Version | Game ID | SHA-1 |
|---|---|---|
| Rev 1 (USA) | GUNE5D | 7cba77aa496eb0fc5ffec60efd9680aa9635d679 |
Dependencies
Windows
On Windows, it's highly recommended to use native tooling. WSL or msys2 are not required.
When running under WSL, objdiff is unable to get filesystem notifications for automatic rebuilds.
- Install Python and add it to
%PATH%. - Download ninja and add it to
%PATH%.- Quick install via pip:
pip install ninja
- Quick install via pip:
macOS / Linux
- Install ninja.
wibo, a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used to run the CodeWarrior compilers.
All other tools (compilers, objdiff-cli, sjiswrap, etc.) are downloaded automatically during the build.
The optional, locally derived GC/1.2.5s and GC/1.2.5sn matching profiles
are not distributed in the compiler archive. Their open, hash-pinned setup is
documented in tools/gdl/mwcc_p6/README.md.
Building
-
Clone the repository:
git clone https://github.com/sabishii-bit/Gauntlet-Dark-Legacy-Decompilation.git -
Copy your game's disc image into
orig/GUNE5D/.- Supported formats: ISO (GCM), RVZ, WIA, WBFS, CISO, NFS, GCZ, TGC
- Alternatively, place extracted files directly (e.g.
orig/GUNE5D/sys/main.dol). - After the initial build, the disc image can be deleted to save space (objects are extracted to the filesystem).
-
Configure:
python configure.py -
Build:
ninja
The build is verified against config/GUNE5D/build.sha1, which targets the extab-cleaned reference, not the original input hash above.
ExceptionPPC.cpp links from stock GC 1.2.5 output without postprocessing.
Its runtime header retains a user-approved NMWEXCEPTION_CPP compatibility
split between inline and out-of-line exception methods; this has a strict
C++ one-definition-rule caveat, documented in AGENTS.md.
NMWException.cpp itself still uses an extracted fallback object.
Diffing
Once the initial build succeeds, an objdiff.json should exist in the project root.
Download the latest release from encounter/objdiff. Under project settings, set Project directory. The configuration should be loaded automatically.
Select an object from the left sidebar to begin diffing. Changes to the project will rebuild automatically: changes to source files, headers, configure.py, splits.txt or symbols.txt.
Xbox debug symbols
research/xbox_symbols/ contains ~3,500 type definitions (structs, enums, unions — with exact field offsets and sizes) extracted from leaked PDB debug symbols of the Xbox version of the game. Because Midway shared the game codebase across platforms, these layouts carry over to the GameCube binary.
[!NOTE] Verified: decompiling
AtreeFindNode/AtreeMatchin the GUNE5D DOL shows every field offset, struct size, and array stride matching the PDB definitions ofatree,anode,anodeinfo,atreelist, andatreeinfoexactly (11/11 offsets checked — e.g.atree.nanodes@ 0x3C,sizeof(anode)= 0x28,atreeinfo.offset@ 0x20).
