Dr. Mario 64 decomp
Go to file
2024-08-28 18:38:16 -04:00
.github/workflows fix ci 2024-08-17 10:16:28 -04:00
.vscode Migrate global bss (#14) 2024-08-23 20:26:56 -04:00
config some debug menu docs 2024-08-28 18:38:16 -04:00
docs git subrepo pull docs/lib/uPlot --force 2024-02-17 17:49:18 -03:00
include some debug menu docs 2024-08-28 18:38:16 -04:00
lib git subrepo pull lib/ultralib 2024-08-23 21:26:43 -04:00
linker_scripts Move many files to a config folder 2024-08-17 10:12:23 -04:00
src some debug menu docs 2024-08-28 18:38:16 -04:00
tools some debug menu docs 2024-08-28 18:38:16 -04:00
.clang-format Change column width limit to 120 2022-12-15 11:59:57 -03:00
.clang-tidy general cleanup 2024-01-10 20:30:03 -03:00
.gitignore Move many files to a config folder 2024-08-17 10:12:23 -04:00
diff_settings.py us: match aifRensaCheck 2024-02-15 14:27:47 -03:00
diff.py diff.py symlink 2022-09-22 14:52:10 -03:00
LICENSE License (#5) 2023-03-23 22:50:53 -03:00
Makefile get rid of useless structs and cleanup some includes 2024-08-23 21:24:38 -04:00
README.md Add option to link using lld instead of gnu ld 2024-06-06 12:50:39 -04:00
requirements.txt get rid of useless structs and cleanup some includes 2024-08-23 21:24:38 -04:00

Dr. Mario 64

Build Status Code us Progress Code cn Progress Code gw Progress

Matching decomp of Dr. Mario 64

Progress graph 📈

Dependencies

All the instructions assume the user is using a Debian/Ubuntu based Linux distro. If you are a Windows user then it is recommended to use WSL2 with Ubuntu.

System packages

The build process has the following package requirements:

  • make
  • git
  • build-essential
  • clang
  • binutils-mips-linux-gnu
  • gcc-mips-linux-gnu
  • python3
  • pip3
  • venv
  • Rust

Under Debian / Ubuntu (which we recommend using), you can install them with the following commands:

sudo apt update
sudo apt install make git build-essential clang binutils-mips-linux-gnu gcc-mips-linux-gnu python3 python3-pip python3-venv

Python dependencies

First you'll need to create a virtual environment for the python packages:

python3 -m venv .venv

To start using the virtual environment on your current terminal run:

source .venv/bin/activate

Take in mind for each new terminal you'll need to active the Python virtual environment again, there's no need to create the virtual environment again.

Now you can install the Python dependencies, to do so run:

python3 -m pip install -U -r requirements.txt

Rust dependencies

To install Rust run the following command and follow the on-screen instructions

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

The following Rust programs are required by the build process:

  • pigment64

To install those programs run the following commands:

cargo install pigment64 --version ">=0.3.0,<1.*"

Building

Copy your big-endian Dr Mario 64 ROM into the repository's root directory and rename it to baserom.us.z64. Then run

make setup
make lib
make extract
make

to download the appropriate compiler versions, build libultra, extract data from the rom using splat, and build the files back into a rom. If successful, the last line of output should say

build/us/drmario64.us.z64: OK

Other versions

This repository supports for the iQue and the Gateway versions of this game too.

To build any of this versions place your ROM in the root of the repo and rename it to baserom.cn.z64 or baserom.gw.z64. Pass VERSION=cn or VERSION=gw to the above make commands.

Contributing

TODO: write some contributing guidelines.

Smaller efforts are appreciated. Just open a PR and try to address any review comments left by other contributors c:

Important note

This matching decomp effort is being done leak-free. If you have looked/worked with leaked materials (i.e. gigaleak) then it's a shame but you can't contribute to this project.

License

This repository is licensed under the MIT license, except for

  • files which declare a different license, and
  • folders that have their own LICENSE file.

In such cases that license takes precedence.

In particular, the src/ folder is licensed under the CC0 license.

N.B.

The intention of this project is to understand the inner workings of this game better, and to make it easier to modify its behaviour.

As such, over and above the actual licensing of the repo, the decomp team requests that this codebase not be used to build binaries targeting non-MIPS machines ("porting").