How Twilight Princess Got Decompiled — A 5-Year Timeline (2020–2026)
From August 2020 to December 2025: how a community of contributors hand-rewrote the entire codebase of Twilight Princess. Verified milestones, contributors, and what made TP decomp uniquely hard.
The reason Dusk exists in 2026 is because a community of reverse engineers spent five years and four months rebuilding the entire source code of Twilight Princess — without Nintendo’s help, without leaks, and without ever seeing the original source. By December 2025, all GameCube versions matched byte-for-byte. Five months later, TwilitRealm shipped Dusk on top of that work.
This is the timeline of that effort.
Why decomp is required for ports
The GameCube version of TP shipped only as a compiled binary on a 1.4 GB disc. Nintendo never released source. To make a native PC port, someone has to reconstruct the source code — meaning: hand-write C/C++ that, when compiled with the original toolchain (Metrowerks CodeWarrior for PowerPC), produces a binary byte-identical to the retail disc.
This process is called matching decompilation. It’s painstaking; there’s no shortcut. Every function, every data layout, every quirky compiler optimization has to be reproduced exactly. The reward: once it’s done, the source is yours to fork, port, modify, or build derivative works on top of — without ever touching Nintendo’s IP.
The timeline
August 2020 — Project starts
- 2020-08-29 —
Pheenoh(Howard Luck) creates the zeldaret/tp repo on GitHub. The first commit message is, charmingly,"ok". - The initial scaffold targets GZ2E01, the GameCube USA version
- The project is set up with C++ as the primary language — unusual for game decomps, which historically targeted C-based games (SM64, OoT, MM). C++ matching is materially harder due to vtables, RTTI, and template name mangling under MWCC.
2020–2022 — Slow ramp
- Pheenoh, Jcw87, and hatal175 establish the build infrastructure: decomp-toolkit, mwcc PowerPC compiler matching, custom build orchestration
- Progress is steady but slow during these years; a small team is bootstrapping tools more than writing matching code
2023 — Acceleration
- TakaRikka joins and becomes the most prolific contributor (eventually leading commit count)
- LagoLunatic (Wind Waker decomp lead, WW Randomizer author) joins and brings tooling expertise
- The project hits Hacker News in November 2023 at partial completion
2024 — Production phase
- PR count climbs into the thousands as more contributors join
- GZ2P01 (GameCube EU/AU PAL) and GZ2J01 (GameCube Japan) are added as additional matching targets — the project now targets all three GameCube regions simultaneously
November 2025 — 99% milestone
- The project reaches 99.02% matching for GameCube versions (GBAtemp coverage, November 2025)
December 2025 — All GameCube versions complete
- 2025-12-23 — The GameCube versions reach 100% matching for all three retail regions: GZ2E01 (NA), GZ2P01 (EU/AU), GZ2J01 (Japan)
- Coverage by Time Extension, GamesRadar, and Gaming Bible
Late February 2026 — TwilitRealm starts porting work
- Per the official Dusk v1.0.0 release post: “Starting in late February, we embarked on the journey to bring the finished decompilation project to more platforms.”
- This is when TwilitRealm forks (or builds atop) the now-complete decomp and begins the Aurora-based porting effort
April 2026 — Wii decomp work continues + ports announced
- Wii revisions (RZDE01_00, RZDE01_02, RZDP01, RZDJ01), Wii Kiosk Demo (DZDE01), and Nvidia Shield China port (Shield/ShieldD) are still in progress
- Time Extension reports two parallel native PC ports: Dusk (TwilitRealm) and Courage Reborn (Linifadomra)
- Total commits in the decomp repo at this point: ~2,365
May 2026 — Dusk ships
- 2026-05-09 21:59 UTC — TwilitRealm releases Dusk v1.0.0 on Windows, macOS (ARM + Intel), Linux (x86 + ARM), Android, and iOS
- The decomp’s GameCube work is the foundation; the Wii / NTSC-J versions are still in progress, and Dusk’s first release accordingly only supports GameCube NA + PAL ROMs
What made TP decomp uniquely hard
Code volume
Per decomp.dev/zeldaret/tp, the project contains roughly 11.5 MB of code + 2.5 MB of data. For comparison:
| Project | Code size | Time to 100% match |
|---|---|---|
| Super Mario 64 | ~250 KB | ~2 years |
| Ocarina of Time | ~1 MB | ~3 years |
| Majora’s Mask | ~1 MB | ~3 years |
| Twilight Princess | ~11.5 MB (C++) | ~5y 4m to GC complete |
TP is roughly 10× larger than the prior C-based decomps in the Zelda family.
C++ compiler matching is materially harder than C
The earlier Zelda decomps (OoT, MM) targeted C source — which has predictable name mangling, no virtual tables, no RTTI, no templates. C++ adds:
- Name mangling that varies per compiler version (MWCC’s mangling scheme is bespoke)
- Vtables that must be laid out byte-perfectly
- RTTI that the compiler emits in formats specific to the CodeWarrior runtime
- Templates that instantiate to specific symbol names depending on the original compiler’s choices
Every one of these has to match the retail binary’s bytes exactly. Mistakes don’t show up as “wrong behavior” — they show up as a different ROM, which means the matching test fails.
Per-revision differences
Three retail GameCube regions plus a Debug build plus the Wii revisions plus the Nvidia Shield port (China). Each has small differences that the codebase has to cleanly handle via conditional compilation. The repo does this; making it work without breaking other targets is a constant tension.
”Largest decompilation project ever completed” claim
TwilitRealm’s v1.0 announcement said:
“the largest decompilation project ever completed”
Is this true? Plausibly yes. Skyward Sword (zeldaret/ss, also C++) is comparable in scale and is much earlier-stage. Wind Waker (zeldaret/tww, C++) is similar size and still in progress. By “largest fully-matching console game decompilation, completed status, as of late 2025” — TP appears to hold the record. It’s not formally certified, but no one has produced a counter-example.
ROM versions tracked by the project
| Version ID | Platform / Region | Decomp status (May 2026) |
|---|---|---|
| GZ2E01 | GameCube NA | ✅ 100% matching |
| GZ2P01 | GameCube EU/AU (PAL) | ✅ 100% matching |
| GZ2J01 | GameCube Japan | ✅ 100% matching |
| RZDE01_00 | Wii NA rev 0 | 🔄 In progress |
| RZDE01_02 | Wii NA rev 2 | 🔄 In progress |
| RZDP01 | Wii EU/AU | 🔄 In progress |
| RZDJ01 | Wii Japan | 🔄 In progress |
| DZDE01 | Wii Kiosk Demo | 🔄 In progress |
| Shield | Nvidia Shield China | 🔄 In progress |
| ShieldD | Shield Debug | 🔄 In progress (used to recover symbols/types) |
The decomp.dev dashboard summary as of fetch: 100.00% decompiled, 87.13% fully linked. The remaining 12.87% is the Wii→GC alignment work.
Top contributors (by commit count)
Pulled from gh api /repos/zeldaret/tp/contributors:
- TakaRikka — 409 commits
- Pheenoh (Howard Luck) — 375 commits (founder)
- hatal175 — 301
- caseif — 127
- Jcw87 — 123
- carter-ktb21 — 114
- LagoLunatic — 86
- YunataSavior — 85
- lepelog — 77
- jdflyer — 64
Beyond the top 10, hundreds of other contributors made smaller contributions — the project has a long tail.
Why this matters in 2026
The fact that the TP decomp completed in late 2025 is the reason Dusk could ship in May 2026. Before December 2025, native PC ports of TP were impossible without leaked source. After: trivial in principle, just slow porting work.
This is the same pattern as Ocarina of Time: zeldaret/oot reached high completion → Ship of Harkinian launched. The decomp is the upstream library; the port is the downstream consumer-facing product.
The next likely beneficiaries of this pattern:
- Wind Waker (
zeldaret/tww) — once it matches, expect a Ship-of-Harkinian-style port - Skyward Sword (
zeldaret/ss) — earlier stage, but watching it - Breath of the Wild (
zeldaret/botw) — the high-profile one; very early
Related
- Every Zelda decompilation project, ranked — current status of all 8 zeldaret repos
- What is Dusk? — explainer of decomp port concept
- Dusk Pillar guide — what TwilitRealm built on top of this work
Sources
- github.com/zeldaret/tp — repo
- decomp.dev/zeldaret/tp — progress dashboard
- twilitrealm.dev/posts/2026-05-09-dusk-v1-released — Dusk v1 release post
- Time Extension: TP decomp completed (Dec 2025)
- Time Extension: Two PC ports announced (Apr 2026)
- GBAtemp 99% milestone (Nov 2025)
- HN November 2023 thread
Last updated: 2026-05-10. We update this page as the Wii / NTSC-J / Shield decomp work progresses.
← Decomp hub · Pillar guide →