Case study
Wind Waker HD decompilation: functions verified against the recompiled Wii U game
Decompiles the USA Wii U release of The Wind Waker HD function by function into readable C++ in zeldaret/tww’s style, and verifies each function by running it beside the original, statically recompiled from the user’s own copy, comparing return values, memory writes and calls on generated and recorded inputs, with coverage and mutation checks. README reports 28,244 of the game’s 39,713 functions verified, including 22,068 of 22,215 GameCube-derived functions. The code calls undecompiled functions by address, so it runs only inside the ZeldaWWHDRecomp port, not as a standalone game build.
Requirements & limits
- README describes a hybrid decompilation of cking.rpx (USA, version 0): decompiled functions call others through their original addresses, so the tree builds no game on its own and runs only with the port’s recompiled code. It reports the HD UI decompiled, while about 11,400 generic-library functions (sead, agl, NW4F, most of JSystem, the Cafe SDK and the C runtime) are not planned. zeldaret/tww is the reference for names and structure, and the docs record HD differences for 838 units compared with the GameCube version.
- Building or verifying needs the user’s own legally obtained game, extracted with the port’s tool from a disc image with its disc key and the Wii U common key. README states that the repository contains no machine code, recompiled code, game assets or keys; small data tables used by the code are included, while model data, the RPX image, recompiled output, game-derived names and recorded inputs are generated locally and git-ignored. The recommended GameCube signature checks also use zeldaret/tww built from the user’s own GameCube disc.
- The harness runs inside a ZeldaWWHDRecomp checkout at the tested commit df2cf51b (v0.2.3), replacing the port’s older tools/verify. It needs Python 3, clang/clang++ with C++20 and the port’s game-extraction requirements; building the port itself is needed only for recording inputs. A full verify_all.py run is long, and some units need tens of GB of memory.
- Each function runs on 10,000 generated inputs on each of two seeds, must reach nearly all basic blocks of the original and is mutation-tested; README reports the whole tree re-verified after the October 2026 readability rewrite. tools/verify/README.md says equivalence is to the recompiled code’s model of the Espresso CPU, not the console, and that timing, threading and the exact stack layout are not checked. The in-game swap-test build is not part of the release, the repository has no CI workflow, and this collection ran nothing.
- CC0 1.0 covers the decompiled source, tools and documentation; the game, Nintendo data and the port runtime keep their own terms. README calls it an unofficial, non-commercial fan project with no donations or paid builds. tools/verify/README.md reports pilot timings for an agent using the tools and two functions written by parallel agents; the reviewed sources establish no REA use.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · ZeldaWWHDDecomp/wwhd · Revision b2811a3
- tools/verify/README.md GitHub · ZeldaWWHDDecomp/wwhd · Revision b2811a3
- docs/review-notes.md GitHub · ZeldaWWHDDecomp/wwhd · Revision b2811a3
- docs/hd-vs-gc-summary.md GitHub · ZeldaWWHDDecomp/wwhd · Revision b2811a3
- docs/decomp-notes.md GitHub · ZeldaWWHDDecomp/wwhd · Revision b2811a3
- tools/verify/assets.py GitHub · ZeldaWWHDDecomp/wwhd · Revision b2811a3
- LICENSE GitHub · ZeldaWWHDDecomp/wwhd · Revision b2811a3
- https://github.com/ZeldaWWHDRecomp/ZeldaWWHDRecomp/tree/df2cf51bd6d02e0b310d46a5da062693bac7314f
More in Games
- SiegeFX: a Dungeon Siege engine reimplementation in alpha · Case study
- Legend of Legaia: a Rust port with disc-local browser tooling · Case study
- RenderDoc · Tool
- AssetRipper · Tool
- Cpp2IL · Tool
- Il2CppDumper · Tool