This is a work in progress decompilation of Metroid - Zero Mission.
2718/2721 functions decompiled (99.89%, 3 left)
0x76b014/0x76b014 bytes of data not in blobs (100%, 0 left)
Progress can be seen here: https://docs.google.com/spreadsheets/d/1X8XarD5evY8ZI7r_GQqh1pYmdVMbBcINYfRBUlogmKY/edit#gid=0
This repository can be used to build multiple ROMs. The ROMs are named like this: mzm_{region}.gba (or mzm_{region}_debug.gba)
Region indicates which region the ROM targets:
- us: USA, North America
sha1: 5de8536afe1f0078ee6fe1089f890e8c7aa0a6e8 - eu: Europe
sha1: 0fd107445a42e6f3a3e5ce8c865f412583179903 - jp: Japan
sha1: 096f07685a3dc9286e71aa0b761f233b5efa2fcd - cn: China (Not yet supported)
- us_beta: USA beta version
sha1: 58986c4d6f2e5ccdc04936cc8b7c9d378570710c - eu_beta: Europe beta version
sha1: 3c0b7ccd303c30ac5c4ffc9fb0aa7137a533ad69
Debug simply indicates whether the ROM contains the debug features, it is optional.
The default built ROM is mzm_us.gba
Discords:
- https://discord.gg/2MGB9Xbr9y Metroidret
- https://discord.gg/WtekHKb MAGConst
- agbcc
binutils-arm-none-eabi- A baserom for each ROM desired to be built (i.e.
mzm_us_baserom.gbaif you wish to buildmzm_us.gba). python3g++
-
WINDOWS ONLY: Install and setup WSL
-
Run
sudo apt updatejust in case -
Install
binutils-arm-none-eabiby running this command:sudo apt-get install binutils-arm-none-eabi -
Install
gitby running this command:sudo apt-get install git -
Install
makeby running this command:sudo apt-get install make -
Clone agbcc by running this command:
git clone https://github.com/jiangzhengwenjz/agbcc -
Enter the agbcc folder (run
cd agbcc) and build it (run./build.sh) -
Add agbcc to your path (
export PATH="<agbcc_path>:$PATH", where<agbcc_path>is the full path to the agbcc directory) -
Locate yourself in the decompilation root, and then build preproc (run
cd tools/preproc && make)
- Run
make cleanif necessary- Use
make clean DATA=1to remove data as well
- Use
- Run the data extractor if necessary:
python3 tools/extractor.py- Use the
-rflag to specify a region other thanus(ex:-r jp) - Use the
-dflag to extract only debug data from the US beta ROM (required for building a ROM with debug features)
- Use the
- Run
make(using the-joption is recommended to speed up the process) - To build another version of the ROM you can do either of the following:
- Specify it directly (ex:
make us_debugfor the US ROM with debug features) - Specify the flags, REGION (takes the region name, defaults to
us) and DEBUG (takes 0 or 1, defaults to 0)
- Specify it directly (ex:
- Optionally, you can combine the commands to make it easier:
python3 tools/extractor.py && make -j
See CONTRIBUTING.md