Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Project516/sm64dx/llms.txt

Use this file to discover all available pages before exploring further.

sm64dx builds byte-for-byte matching ROMs for all five regional releases of Super Mario 64 from fully decompiled C source. The instructions below target Ubuntu and Debian — the fastest path to a working build. If you are on another platform, follow the linked guides at the bottom of this page.
You must own a legal copy of Super Mario 64. The build system extracts assets from your original ROM — it does not include any copyrighted game data. Place your ROM as baserom.<VERSION>.z64 in the project root before running make.
1

Install build dependencies

On Ubuntu or Debian, install the required packages with:
sudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3
This provides the MIPS cross-compiler (mips-linux-gnu-), GNU make, Python 3, and pkg-config — everything the Makefile needs.
2

Clone the repository

Clone sm64dx from within your Linux shell. Keep the path under 255 characters — long paths cause build errors.
git clone https://github.com/Project516/sm64dx.git
cd sm64dx
3

Place your baserom

Copy your original ROM into the project root. Replace <VERSION> with the version you want to build (jp, us, eu, sh, or cn):
cp /path/to/your/rom.z64 baserom.us.z64
The build system reads this file to extract textures, audio, and other assets that cannot be distributed with the source.
4

Build the ROM

Run make to build the US version (the default):
make
To build a different version, pass VERSION=<VERSION>. Add -j4 to parallelize the build across four CPU cores:
make VERSION=jp -j4       # Japan version, 4 parallel jobs
make VERSION=eu COMPARE=0 # Europe version, skip hash check
The compiled ROM is written to build/<VERSION>/sm64.<VERSION>.z64.

Expected SHA-1 checksums

When COMPARE=1 (the default), the build verifies that the output ROM matches the original byte-for-byte. The expected checksums for each version are:
VersionROM fileSHA-1
jpsm64.jp.z648a20a5c83d6ceb0f0506cfc9fa20d8f438cafe51
ussm64.us.z649bef1128717f958171a4afac3ed78ee2bb4e86ce
eusm64.eu.z644ac5721683d0e0b6bbb561b58a71740845dceea9
shsm64.sh.z643f319ae697533a255a1003d09202379d78d5a2e0
cnsm64.cn.z642e1db2780985a1f068077dc0444b685f39cd90ec
A hash mismatch means the build used a non-default COMPILER, GRUCODE, or NON_MATCHING setting. Pass COMPARE=0 to skip the check if you are intentionally building a non-matching binary.

Build on other platforms

Linux

Full dependency instructions for Debian, Ubuntu, Arch, and other distributions.

macOS

Homebrew and Docker setup for macOS developers.

Windows

WSL configuration for building under Windows 10 and 11.

Build docs developers (and LLMs) love