Decompilation of all Super Mario Odyssey versions, from 1.0.0 to 1.3.0.
[!IMPORTANT] Reminder: this will not produce a playable game. This project will not allow you to play the game if you don't already own it on a Switch.
While Linux is not a hard requirement, it is strongly advised to set up WSL to simplify the setup process. Ubuntu 22.04 is usually a good choice.
The instructions below assume that you are using Linux (native or WSL) or macOS.
Depending on your system and preferences, the required programs and libraries can be setup differently.
Across all platforms, using the included Visual Studio Code Dev Container should work fine. In this case, just clone and open the folder in VS-Code, press F1 and select Dev Containers: Rebuild and Reopen in Container
. You can copy the NSO executable into the container using docker cp /path/to/main.nso [container-id]:/workspaces/main.nso
, where [container-id]
is the ID listed in docker container ls
.
[!WARNING] As Dev Containers add another layer of complexity to your system, compiling the project and working with the differ will be slower. If possible, prefer to install the dependencies on your system and use this project natively instead of through the container.
When working with NixOS or any other system with the Nix package manager, flake.nix
should be properly set up to use on your system. Make sure that direnv
is installed in your system or shell. Then create a file called .envrc.private
with the following content:
export USE_NIX=true
Finally, run direnv allow
to setup all dependencies. The remainder of this section can be skipped.
All other systems have to manually install the required packages and programs. We will need:
Ubuntu users can install those dependencies by running:
sudo apt install python3 ninja-build cmake ccache xdelta3 clang libssl-dev libncurses5
If you are running Ubuntu 23.10 or later, the libncurses5
package won't be available anymore. You can install it from the archive using:
wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.4-2_amd64.deb && sudo dpkg -i libtinfo5_6.4-2_amd64.deb && rm -f libtinfo5_6.4-2_amd64.deb
For other systems, please check for the corresponding libncurses5
backport, for example ncurses5-compat-libs for Arch-based distributions.
Additionally, you'll also need:
capstone colorama cxxfilt pyelftools ansiwrap watchdog python-Levenshtein toml
(install them with pip install ...
)Clone this repository. If you are using WSL, please clone the repo inside WSL, not on the Windows side (for performance reasons).
Run git submodule update --init --recursive
Next, you'll need to acquire the original 1.0 main
NSO executable.
Run tools/setup.py [path to the NSO]
build/
--cmake_backend
to specify it.To start the build, just run
tools/build.py
By default, a multithreaded build is performed. No need to specify -j
manually.
Use --clean
to perform a clean build, and --verbose
to enable verbose output.
To check whether everything built correctly, just run tools/check
after the build completes.
Anyone is welcome to contribute to this project, just send a pull request!
tools/check
This decompilation uses this as a reference for the sead library used. Big thanks to their research!