This decomp project has been stopped due to lost interest and a drama that pushed it. If you feel like contacting me, just contact me on discord. If I should take down this repo, or anyone gained interest in it, or really just anything you feel like asking, you can just tell me.
Thanks, moddi out.
Project Yasiki was a work-in-progress decompilation project of Luigi's Mansion for the Nintendo GameCube.
The focus is currently laid on the Japanese release (GLMJ01), but configurations exist for all available versions.
The original creator first focused on the North American release (GLME01), and it's symbols.txt was copied to a backup file.
this will not produce a playable game, if you do not supply it beforehand.
This repo will get updates, but I have personal stuff to do, and so I/t wont be active all the time.
This game does not ship with symbols, so information is scraped together from RTTI and connected games.
Not as simple as most projects, but possible.
For this project specifically:
Yasiki Parlor:
For general, other gc/wii purposes:
GC/Wii Decompilation:
All about modding the game:
Luigi's Bigger Mansion:
| Config ID | Region | Variant | Active? | Release Date | Build Date | SDK Rev. | SDK Build | Apploader Build |
|---|---|---|---|---|---|---|---|---|
| GLMJ01 | Japan | Release | Yes | Sep. 14 2001 | Aug. 28 2001 | 37 | Jul. 19 2001 | Apr. 04 2001 |
| GLME01 | USA | Release | [No] | Nov. 18 2001 | Sep. 24 2001 | 37 | Jul. 19 2001 | Aug. 9 2001 |
| GLME01_1 | USA | Demo | No | Oct. 2001 | Sep. 28 2001 | 45 | Sep. 08 2001 | Sep. 08 2001 |
| GLMP01 | Europe | Demo | No | Mar. 2002 | Jan. 21 2002 | 49 | Dec. 17 2001 | Nov. 30 2001 |
| GLMP01_1 | Europe | Release | No | May 3 2002 | Mar. 2002 | 49 | Dec. 17 2001 | Nov. 30 2001 |
| GLMP01_2 | Europe | Release | No | May 17 2002 | Mar 2002 | 49 | Dec. 17 2001 | Nov. 30 2001 |
note that the Europe Release Rev. 1 left the DOL identical, only changing the movie rating. furthermore, the USA Release had previously been the decomp target, but now the active one is the Japan Release.
This project uses the Decomp-Toolkit template.
Rather early. I was trying to fill out the symbols in the Ghidra repository (read further to learn how to connect to the server), but decided to start with matching libraries instead, as the game code uses them, and it is better to go step for step rather than losing the sight of progress.
The folders are split by categories in the project's root, where non-category folders are lowercase. As follows:
./CategoryName/...
./config/...
./tools/...
Most modules in a library rely on the modular scheme used originally, such as:
./JSystem/System/JKernel/{src|include},
./JSystem/System/JSupport/{src|include},
./JSystem/JAudio/JAInterface/{src|include},
./Project/Kawamoto/{src|include},
./Project/Sotoike/{src|include},
./Project/Koga/{src|include},
and so on.
My goal is to stay as original as possible, while still making it possible to work with for the decompiling efforts.
I’ve also included some small private notes in /docs/game/*.txt, which may contain useful information (if needed).
You are welcome to contribute, even pointing out small mistakes/issues counts as contributing!
The guidelines for contributing have yet to be written, but that hopefully won't stop you.
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.
%PATH%.%PATH%.pip install ninjabrew install ninjabrew install --cask --no-quarantine gcenx/wine/wine-crossoverAfter OS upgrades, if macOS complains about Wine Crossover.app being unverified, you can unquarantine it using:
sudo xattr -rd com.apple.quarantine '/Applications/Wine Crossover.app'
Clone the repository:
git clone https://github.com/Moddimation/Yasiki.git
Copy your game's disc image to orig/<VERSION>.
orig/<VERSION> except orig/<VERSION>/sys/main.dol to save space, if you don't need the assets as reference.python configure.py
To use a version other than GLMJ01 (Japan), specify --version <version. (See all possible versions at the top)
Example usage (See its github for detailed usage):python configure.py --version GLME01 (US Release).python configure.py --version GLMP01_2 (EU Release Rev 1)python configure.py --debug Build with debugpython configure.py --map Build and generate map (for comparison)python configure.py progress Show progress, nothing else
Build:
ninja
ninja diff When failing to build, check the differences (command line only).ninja apply When finished decompiling a file, and marking it as Matching in configure.py, this updates the symbols.txt for correctness.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 to the root, aka the file containing the objdiff.json file. The configuration should be loaded automatically, and if not, ensure that the build generated no errors. If it did, resolve these and try again.
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.

Ghidra is a tool that automatically decompiles code. Although Ghidra's output is not accurate enough to be directly copy-pasted into this decompilation project, it can still be helpful for understanding functions and decompiling them faster. You are free to use other decompilation methods, such as IDA, m2c or manually, but ghidra was chosen as the preferred tool in the gamecube/wii decomp scene.
I've got a shared Ghidra project for LuigisMansion already set up, that I usually update. To get access to this server:
Then wait for an admin to approve your request. Once you have access, you can set up the Ghidra project like so:
Download sectionhere.
(*OPTIONAL) If you wish to load/analyze other binaries for gamecube/wii, you need the Ghidra-GameCube-Loader extension, which you can get on the RootCubed Ghidra page.ghidraRun.File -> New Project.... Select Shared Project and input the following information:main file.Now you have Ghidra set up and ready to use.
For an introduction on how to use Ghidra, you can read this section of the Twilight Princess decompilation's guide.
Project Yasiki
Main App
JSystem Framework
Dolphin SDK
CodeWarrior Runtime
~Moddimation