Case study
wii-ipl: a decompilation of the Wii Menu (System Menu 4.3)
A work-in-progress decompilation of the Wii Menu, the console’s System Menu (IPL), targeting version 4.3 in its USA, European, Japanese and Korean builds. It recovers the menu’s own code together with the Revolution SDK, NintendoWare (NW4R), EGG and middleware libraries linked into it, matched unit by unit against the original executable with decomp-toolkit and objdiff. The repository holds no assets or assembly; a build needs the user’s own Wii Menu WAD and yields only main.dol.
- Targets
- Firmware · Game
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- The reviewed main commit has no releases or tags. decomp.dev’s report for that commit puts 4.3U at 58.5% matched code, 8,837 of 12,563 functions (70.3%) and 45.2% fully linked code, with the menu’s own code at 53.6% matched; library READMEs mark each RVL_SDK, NW4R, EGG, RevoEX and middleware component as matching, equivalent or not yet matching. The build yields main.dol, not a WAD, and the README warns that the code is not fully shiftable because no SEL file is generated.
- Users supply their own Wii Menu 4.3 WAD for the selected version (4.3U by default, or 4.3E, 4.3J or 4.3K); the README states that the repository contains no assets or assembly of the executable. Each version’s configuration pins the SHA-1 of the target main.dol.
- Builds need Python and Ninja on Windows, macOS or Linux. configure.py pins decomp-toolkit v1.7.5, objdiff v3.4.5, binutils 2.42-1 and the 20251118 compiler bundle for Metrowerks CodeWarrior (GC/3.0a5.2 as the linker version), and wibo runs the 32-bit Windows tools on macOS and Linux. CONTRIBUTING lists Ghidra with a shared project, IDA/Hex-Rays, m2c and decomp.me as decompiling aids and objdiff for diffing.
- CI builds all four versions in a private container that supplies the original files, then uploads map files and progress reports; the percentages above come from those reports.
- LICENSE is CC0 1.0. The BTE Bluetooth library notes code taken from Android’s bluedroid under Apache-2.0, and the GameSpy SDK subset is BSD-3-Clause. The decompiled third-party middleware (JustSystems ATOK, Zi eZiText, TMC JPEG, eSOL PrFILE2) and the Opera WWW headers carry no separate grants, and the Wii Menu keeps Nintendo’s rights. CONTRIBUTING forbids using AI to decompile code and asks contributors to avoid AI-only matching forks.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- CONTRIBUTING.md GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- configure.py GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- config/43U/config.yml GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- config/43U/build.sha1 GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- .github/workflows/build.yml GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- libs/RVL_SDK/README.md GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- libs/NW4R/README.md GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- libs/RVLMiddleware/README.md GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- libs/RVL_SDK/src/bte/NOTICE GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- src/scene/nakamuraTest/gamespy/README.md GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- LICENSE GitHub · koopthekoopa/wii-ipl · Revision f4c09f4
- https://decomp.dev/koopthekoopa/wii-ipl/43U
More in Games
- c1: a C port of PlayStation Crash Bandicoot · Case study
- Firefighter: a decompiled DOS game ported to Rust · Case study
- Halo: Combat Evolved: an incremental re-implementation patched into the original Xbox executable · Case study
- keen-clone: a Commander Keen 1 C/SDL2 port · Case study
- Metroid Dread: a hand decompilation in progress · Case study
- OpenGOAL: recovering GOAL code and rebuilding the Jak games · Case study