Super Mario 64
This repo contains a full decompilation of Super Mario 64 (J) and (U). The source and data have been decompiled but complete naming and documentation all of the code and data is still a work in progress. Decompiling the (E) ROM is also an ongoing effort.
It builds the following ROMs:
This repo does not include all assets necessary for compiling the ROMs. A prior copy of the game is required to extract the required assets.
1. Copy baserom(s) for asset extraction
For each version (jp/us/eu) that you want to build a ROM for, put an existing ROM at
./baserom.<version>.z64 for asset extraction.
2. Install build dependencies
The build system has the following package requirements:
- binutils-mips >= 2.27
- python3 >= 3.6
Debian / Ubuntu
sudo apt install build-essential pkg-config git binutils-mips-linux-gnu python3 zlib1g-dev libaudiofile-dev
sudo pacman -Sy base-devel python audiofile
Install the following AUR packages:
3. Install qemu-irix
- (For the first two options), copy executable
qemu-irixfrom irix-linux-user to somewhere convenient with a relatively short path. e.g.:
mkdir -p /opt/qemu-irix/bin cp irix-linux-user/qemu-irix /opt/qemu-irix/bin
QEMU_IRIXenvironment variable in your
~/.bashrcto point to this qemu-irix executable.
4. Build ROM
make to build the ROM (defaults to
VERSION=us). Make sure your path to the repo
is not too long or else this process will error, as the emulated IDO compiler cannot
handle paths longer than 255 characters.
make VERSION=jp -j4 # build (J) version instead with 4 jobs make VERSION=eu COMPARE=0 # non-matching EU version still WIP
For Windows, install WSL and a distro of your choice following Windows Subsystem for Linux Installation Guide for Windows 10 We recommend either Debian or Ubuntu 18.04 Linux distributions under WSL.
Then follow the directions in the Linux installation section above.
macOS is currently unsupported as qemu-irix is unable to be built for macOS host. The recommended path is installing a Linux distribution under a VM.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Run clang-format on your code to ensure it meets the project's coding standards.
Official discord: https://discord.gg/27JtCWs