diff --git a/Jenkinsfile b/Jenkinsfile index 9ac8aa40ea..e8c8862271 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,7 +7,7 @@ pipeline { stage('Copy ROM') { steps { echo 'Setting up ROM...' - sh 'cp /usr/local/etc/roms/mm.us.rev1.z64 baserom.z64' + sh 'cp /usr/local/etc/roms/mm.us.rev1.z64 baserom.mm.us.rev1.z64' } } stage('Build') { diff --git a/Makefile b/Makefile index 1a46449ad2..51974e90b1 100644 --- a/Makefile +++ b/Makefile @@ -67,8 +67,8 @@ CFLAGS += -G 0 -non_shared -Xfullwarn -Xcpluscomm -Iinclude -I./ -Isrc -Wab,-r43 #### Files #### # ROM image -MM_BASEROM ?= baserom.z64 -MM_ROM_NAME ?= rom +MM_BASEROM ?= baserom.mm.us.rev1.z64 +MM_ROM_NAME ?= mm.us.rev1.rom ROM := $(MM_ROM_NAME).z64 UNCOMPRESSED_ROM := $(MM_ROM_NAME)_uncompressed.z64 ELF := $(MM_ROM_NAME).elf diff --git a/README.md b/README.md index 649c10f7a1..1d0b142dce 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,19 @@ -# Legend of Zelda: Majora's Mask (U) 1.0 +# Legend of Zelda: Majora's Mask (US) 1.0 + +[![Build Status][jenkins-badge]][jenkins] [![Decompilation Progress][progress-badge]][progress] [![Contributors][contributors-badge]][contributors] [![Discord Channel][discord-badge]][discord] + +[jenkins]: https://jenkins.deco.mp/job/MM/job/master +[jenkins-badge]: https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins.deco.mp%2Fjob%2FMM%2Fjob%2Fmaster + +[progress]: https://zelda64.dev/progress.html +[progress-badge]: https://img.shields.io/endpoint?url=https://zelda64.dev/reports/progress_shield_mm.us.rev1.json + +[contributors]: https://github.com/zeldaret/mm/graphs/contributors +[contributors-badge]: https://img.shields.io/github/contributors/zeldaret/mm + +[discord]: https://discord.zelda64.dev +[discord-badge]: https://img.shields.io/discord/688807550715560050?color=%237289DA&logo=discord&logoColor=%23FFFFFF + ```diff - WARNING! - @@ -10,13 +25,87 @@ source code base for general changes. This repo does not include all assets necessary for compiling the ROM. A prior copy of the game is required to extract the required assets. -This is a decompilation of Legend of Zelda: Majora's Mask (U) 1.0 +This is a decompilation of Legend of Zelda: Majora's Mask (US) 1.0 It builds the following ROM: -* rom.z64 `md5: 2a0a8acb61538235bc1094d297fb6556` +* mm.us.rev1.rom.z64 `md5: 2a0a8acb61538235bc1094d297fb6556` -Please refer to the Installation guide in the Wiki for setup instructions. +Please refer to the following for more information: Website: https://zelda64.dev/ Discord: https://discord.zelda64.dev + +## Installation + +### Windows + +For Windows 10, install WSL and a distribution by following this +[Windows Subsystem for Linux Installation Guide](https://docs.microsoft.com/en-us/windows/wsl/install-win10). +We recommend using Debian or Ubuntu 18.04 Linux distributions. + +### Linux (Native or under WSL / VM) + +#### 1. Install build dependencies + +The build process has the following package requirements: + +* make +* git +* build-essential +* binutils-mips-linux-gnu +* python3 +* pip3 + +Under Debian / Ubuntu (which we recommend using), you can install them with the following commands: + +```bash +sudo apt update +sudo apt install make git build-essential binutils-mips-linux-gnu python3 python3-pip +``` + +#### 2. Fork the repository + +Create your own fork of the repository at `https://github.com/zeldaret/mm`. Then clone your fork where you wish to have the project, with the command: + +```bash +git clone https://github.com//mm.git +``` + +#### 3. Prepare a base ROM + +Copy your ROM to inside the root of this new project directory, and rename the file of the baserom to reflect the version of ROM you are using. ex: `baserom.mm.us.rev1.z64` + +#### 4. Make and Build the ROM + +To start the extraction/build process, run the following command: + +```bash +make init +``` + +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. This will create the build folders as well as a new folder with the ASM as well as containing the disassemblies of nearly all the files containing code. + +This make target will also build the ROM. If all goes well, a new ROM called "mm.us.rev1.rom.z64" should be built and the following text should be printed: + +```bash +mm.us.rev1.rom.z64: OK +``` + +If you instead see the following: + +```bash +mm.us.rev1.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 of the code is not matching. + +Running `make init` will also make the `./expected` directory and copy all of the files there, which will be useful when running the diff script. The diff script is useful in decompiling functions and can be ran with this command: `./tools/asm-differ/diff.py -wmo3 ` + +## Contributing + +All contributions are welcome. This is a group effort, and even small contributions can make a difference. +Some tasks also don't require much knowledge to get started. + +Most discussions happen on our [Discord Server](https://discord.zelda64.dev), where you are welcome to ask if you need help getting started, or if you have any questions regarding this project and other decompilation projects. diff --git a/checksum.md5 b/checksum.md5 index d9f35ff587..f748fd8e7b 100644 --- a/checksum.md5 +++ b/checksum.md5 @@ -1 +1 @@ -2a0a8acb61538235bc1094d297fb6556 rom.z64 +2a0a8acb61538235bc1094d297fb6556 mm.us.rev1.rom.z64 diff --git a/checksum_uncompressed.md5 b/checksum_uncompressed.md5 index 9f5df2931e..6b02e5c06b 100644 --- a/checksum_uncompressed.md5 +++ b/checksum_uncompressed.md5 @@ -1 +1 @@ -7c6bfd6daf33ebfc0145a97c611cb3d8 rom_uncompressed.z64 +7c6bfd6daf33ebfc0145a97c611cb3d8 mm.us.rev1.rom_uncompressed.z64 diff --git a/diff_settings.py b/diff_settings.py index 784286ddc7..7b3dc3df32 100755 --- a/diff_settings.py +++ b/diff_settings.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 def apply(config, args): - config['baseimg'] = 'baserom.z64' - config['myimg'] = 'rom.z64' + config['baseimg'] = 'baserom.mm.us.rev1.z64' + config['myimg'] = 'mm.us.rev1.rom.z64' config['mapfile'] = 'build/mm.map' config['source_directories'] = ['./src','./include']