Wii Menu Decompilation brought to you by fans.
  • C 63.9%
  • C++ 34.2%
  • Python 1.9%
Find a file
KoopTheKoopa cecd3d5a5b
Merge pull request #8 from kr1viah/main
NCDSetting matching
2026-05-04 12:25:41 +01:00
.github/workflows Equilavent match scene/board 2026-01-22 16:39:57 +00:00
.vscode More ChansVM Functions 2026-04-25 09:04:56 +01:00
config tiPredictLang 100% 2026-04-16 21:42:17 +02:00
include Merge pull request #8 from kr1viah/main 2026-05-04 12:25:41 +01:00
libs getPrivacyLen() 100% 2026-05-04 11:35:53 +02:00
misc Typo fix 2025-01-12 16:07:57 +00:00
orig Move to dtk-template 2025-01-03 13:06:52 +00:00
src Merge pull request #8 from kr1viah/main 2026-05-04 12:25:41 +01:00
tools Update dtk-template 2025-12-11 20:04:56 +00:00
.clang-format Say hello, clang-format 2026-03-15 13:32:23 +00:00
.clangd keyboard: tiToolBar 100% 2026-04-13 23:18:55 +02:00
.flake8 Port symbols for 4.3E, J and K 2024-11-10 13:57:58 +00:00
.gitattributes Move to dtk-template 2025-01-03 13:06:52 +00:00
.gitignore Say hello, clang-format 2026-03-15 13:32:23 +00:00
configure.py tiPredictLang 100% 2026-04-16 21:42:17 +02:00
CONTRIBUTING.md fix silly errors 2026-04-12 11:10:13 +01:00
LICENSE Match OS and EXI 2025-04-07 01:01:59 +01:00
README.md Equilavent match scene/board 2026-01-22 16:39:57 +00:00


Wii Menu
Build Status Discord Badge

A work-in-progress decompilation of the Wii Menu (4.3)

This repository does not contain any assets or assembly of the executable whatsoever. An existing WAD of the Wii Menu is required.

Supported versions:

  • 43U - Version 4.3U (USA)
  • 43E - Version 4.3E (Europe)
  • 43J - Version 4.3J (Japan)
  • 43K - Version 4.3K (Korean)

Progress

Version Progress
Wii Menu 4.3U FuncBadgeV43U DecompBadgeV43U LinkBadgeV43U
Wii Menu 4.3E FuncBadgeV43E DecompBadgeV43E LinkBadgeV43E
Wii Menu 4.3J FuncBadgeV43J DecompBadgeV43J LinkBadgeV43J
Wii Menu 4.3K FuncBadgeV43K DecompBadgeV43K LinkBadgeV43K

You can see the full progress and its history by clicking on one of the versions in the table.

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

macOS

  • Install ninja:

    brew install ninja
    

wibo, a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used.

Linux

wibo, a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used.

Building

  • Clone the repository:

    git clone https://github.com/koopthekoopa/wii-ipl.git
    
  • Copy your WAD to orig/[Wii Menu Version].

  • Configure:

    python configure.py
    

    To use a version other than the default one, 4.3U, use the --version argument.

  • Build:

    ninja
    

Note

This does not produce a WAD file, only the executable file, main.dol.

Warning

Due to the SEL file not being generated on build, the code is not 100% shiftable.
Most of it works aside from a couple of things, such as Wii Settings and a couple of Channel Banners like the Forecast Channel.

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.