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:
- Available versions
- About this project -> Progress state -> Folder structure -> Documents -> Misc
- Contributing
- Setting up build
- Building
- Diffing
- Setting up Ghidra
- Detailed progress
- Credits
| 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 can put personal stuff in /private/, it is ignored by github.
- I prefer communication through the Discord, Yasiki Parlor, but you can open issues as 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.
- Install Python and add it to
%PATH%.- Also available from the Windows Store.
- Download ninja and add it to
%PATH%.- Quick install via pip:
pip install ninja
- Quick install via pip:
- Install ninja:
brew install ninja - Install wine-crossover:
brew install --cask --no-quarantine gcenx/wine/wine-crossover
After 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'- Install ninja.
- For non-x86(_64) platforms: Install wine from your package manager.
- For x86(_64), WiBo, a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used.
-
Clone the repository:
git clone https://github.com/Moddimation/Yasiki.git -
Copy your game's disc image to
orig/<VERSION>.- Supported formats: ISO (GCM), RVZ, WIA, WBFS, CISO, NFS, GCZ and TGC.
- After initial build, you may remove the image.
- Also delete all files in
orig/<VERSION>exceptorig/<VERSION>/sys/main.dolto save space, if you don't need the assets as reference.
-
Configure:
python configure.pyTo 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 --debugBuild with debugpython configure.py --mapBuild and generate map (for comparison)python configure.py progressShow progress, nothing else
-
Build:
ninja -
Useful:
ninja diffWhen failing to build, check the differences (command line only).ninja applyWhen 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:
- Go to https://ghidra.decomp.dev and link your Discord account.
- Create a Ghidra account by entering a new username and password into the form on the right.
- Request "Read" access to the LuigisMansion server.
Then wait for an admin to approve your request. Once you have access, you can set up the Ghidra project like so:
- To use Ghidra, you first need to install JDK. You can download OpenJDK 17 from here.
- Download the RootCubed Ghidra build ghidra_11.4_DEV_20250425 from the link in the
Download sectionhere. (*OPTIONAL) If you wish to load/analyze other binaries for gamecube/wii, you need theGhidra-GameCube-Loaderextension, which you can get on the RootCubed Ghidra page. - Launch Ghidra with
ghidraRun. - In Ghidra, go to
File -> New Project.... SelectShared Projectand input the following information:- Server Name: ghidra.decomp.dev
- Port Number: 13100
- User ID: (the username that you chose earlier)
- Password: (the password that you chose earlier)
- You should now be able to view the files in the Ghidra project. You should checkout the
mainfile.
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.
- Aug. 24 2000 Presented at SpaceWorld 2000 simply as a tech-demo to show the power of the gamecube
- Aug. 24 2001 Presented at SpaceWorld 2001 as an actual game title
- 2001 - 2002 Various game releases on gamecube
- Sep. 13 2018 3DS port announced
- Oct. 19 2018 3DS port released
- Sep. 9 2022 luigis-mansion channel created in discord
- Dec. 15 2022 Sage-of-Mirrors creates zmansion repo on github
- Dec. 18 2023 Sage-of-Mirrors last activity in #luigis-mansion channel
- Dec. 12 2024 CoNesTra forks Sage-of-Mirrors/zmansion and updates toolchain
- Mar. 20 2024 Moddimation forks CoNesTra/zmansion
- Apr. 9 2025 #luigis-mansion channel is revived
- Apr. 23 2025 project is back on decomp.dev
Project Yasiki
Main App
JSystem Framework
Dolphin SDK
CodeWarrior Runtime
- Nintendo and it's developers for this great masterpiece
- encounter and NWPlayer123 for dtk-template, the used build system.
- Sage-of-Mirrors, EpochFlame and NWPlayer123 for past documentation of Luigi's Mansion.
- Modding community of Luigi's Mansion for research, documentation and modding tools of Luigi's Mansion.
- CoNesTra for updating the dtk tools and research.
- Everyone on the discord for various support.
~Moddimation
