Decompilation of The Legend of Zelda: Majora's Mask
Go to file
rozlette ff958ad932 Rename many functions, structs, and variables to match the oot decomp. Some things have not been renamed as their respective files have not been decompiled yet. 2020-03-15 01:13:53 -05:00
include Rename many functions, structs, and variables to match the oot decomp. Some things have not been renamed as their respective files have not been decompiled yet. 2020-03-15 01:13:53 -05:00
linker_scripts Rename many functions, structs, and variables to match the oot decomp. Some things have not been renamed as their respective files have not been decompiled yet. 2020-03-15 01:13:53 -05:00
src Rename many functions, structs, and variables to match the oot decomp. Some things have not been renamed as their respective files have not been decompiled yet. 2020-03-15 01:13:53 -05:00
tables Rename many functions, structs, and variables to match the oot decomp. Some things have not been renamed as their respective files have not been decompiled yet. 2020-03-15 01:13:53 -05:00
tools parse_dl: Find mesh headers in object files 2020-03-02 17:43:36 -06:00
.gitattributes Actually handle line endings on Windows 2020-02-17 01:08:02 -06:00
.gitignore Set up diff script 2020-03-02 00:21:16 -06:00
.gitmodules Set up diff script 2020-03-02 00:21:16 -06:00
Makefile Set up diff script 2020-03-02 00:21:16 -06:00
README.md Fix various errors in README 2020-01-25 00:22:56 -06:00
asmdiff.sh Fix various errors in README 2020-01-25 00:22:56 -06:00
checksum.md5 Add dmadata vrom symbols. Link rom in two passes: first to generate dmadata, second to apply dmadata symbols. Clean up symbols at low addresses. 2019-11-16 03:28:05 -06:00
diff_settings.py Set up diff script 2020-03-02 00:21:16 -06:00
requirements.txt Set up diff script 2020-03-02 00:21:16 -06:00
textures.csv Normalize line endings 2020-02-19 11:18:03 -06:00
undef.txt Rename many functions, structs, and variables to match the oot decomp. Some things have not been renamed as their respective files have not been decompiled yet. 2020-03-15 01:13:53 -05:00

README.md

Legend of Zelda: Majora's Mask (U) 1.0

This is a decompilation of Legend of Zelda: Majora's Mask (U) 1.0

It builds the following ROM:

  • rom.z64 md5: 2a0a8acb61538235bc1094d297fb6556

Installation

Step 1:

If you're running Windows 10, install WSL. If you're running an older version of Windows, install a Linux VM. If you're already running a Linux OS, you're good to go.

Step 2:

Install the following packages:

make
git
binutils-mips-linux-gnu
python3
pip3

For your convience, you can copy the following:

sudo apt-get update
sudo apt-get install make
sudo apt-get install git
sudo apt-get install binutils-mips-linux-gnu
sudo apt-get install python3
sudo apt-get install python3-pip

Step 3:

Download build_tools.zip from the Releases section and extract it to the tools folder. This contains the compilers the decompilation uses, as well as a modified version of Qemu to emulate them on a modern Linux system. The compilers must go into the tools folder. Qemu may be placed wherever you like.

Step 4:

Open up your .bashrc file (~/.bashrc), scroll to the bottom, and add the following, replacing /path/to/qemu-mips with the location the qemu-mips you extracted from the build tools:

export QEMU_IRIX="/path/to/qemu-mips"
export MIPS_BINUTILS_PREFIX=mips-linux-gnu-

Save and close/reopen your terminal window.

Step 5:

Make a fork of the main repository https://github.com/n64decomp/majora.git and clone your fork.

Step 6:

Navigate to the folder you just cloned. Type the following commands:

git submodule update --init --recursive
pip3 install -r requirements.txt

Step 7:

You will need to acquire a copy of the ROM. The md5 of this ROM should be 2a0a8acb61538235bc1094d297fb6556.

Once this has been done, type, replacing <ROM> with the name of your ROM:

./tools/extract_rom.py <ROM>

This will extract all the individual files in the ROM into a newly created baserom folder, as well as decompress the compressed files in a newly created decomp folder.

Next, type:

make disasm

This will create the build folders as well as a newly created asm folder containing the disassemblies of nearly all the files containing code.

Step 8:

Type the following:

make

If all goes well, a ROM rom.z64 should be built and the following text should be printed:

rom.z64: OK

If you instead see the following:

rom.z64: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

This means that something is wrong with the ROM's contents. Either the baserom files are incorrect due to a bad ROM, or some piece of code is not matching.