https://github.com/metroidret/mf
Metroid Fusion Decompilation
https://github.com/metroidret/mf
decompilation metroid
Last synced: 4 months ago
JSON representation
Metroid Fusion Decompilation
- Host: GitHub
- URL: https://github.com/metroidret/mf
- Owner: metroidret
- License: mit
- Created: 2023-08-09T17:47:42.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2026-02-20T22:50:52.000Z (4 months ago)
- Last Synced: 2026-02-21T04:14:05.340Z (4 months ago)
- Topics: decompilation, metroid
- Language: C
- Homepage:
- Size: 11.3 MB
- Stars: 42
- Watchers: 2
- Forks: 8
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-game-decompilations - Metroid Fusion
- awesome-game-file-format-reversing - mf (decomp) - Matching decompilation of Metroid Fusion. (Game & Studio Tools / Nintendo EAD)
README
# Metroid Fusion Decomp
This is a work in progress decompilation of Metroid Fusion.
2596/3607 functions decompiled (71.97%, 1011 left)
0x479719/0x6f9d24 bytes of data not in blobs (64.14%, 0x28060b left)
Progress can be seen here: https://docs.google.com/spreadsheets/d/1D0IhbUqqSh4xMHdJ8-yfOUucFxrL-T4QkRloKXz73QE/
**This decomp is not shiftable, don't use it as a base to work on anything**
This repository can be used to build multiple ROMs. The ROMs are named like this: `mf_{region}.gba` (or `mf_{region}_debug.gba`)
Region indicates which region the ROM targets:
- us: USA, North America `sha1: ca33f4348c2c05dd330d37b97e2c5a69531dfe87`
- eu: Europe **(Not yet supported)**
- jp: Japan **(Not yet supported)**
- cn: China **(Not yet supported)**
- eu_beta: Europe beta version **(Not yet supported)**
Debug simply indicates whether the ROM contains the debug features, it is optional.
**Debug is not supported yet**
The default built ROM is mf_us.gba
**Discords**:
- https://discord.gg/2MGB9Xbr9y Metroidret
- https://discord.gg/WtekHKb MAGConst
## Dependencies
- [agbcc](https://github.com/pret/agbcc)
- `binutils-arm-none-eabi`
- A baserom for each ROM desired to be built (i.e.`mf_us_baserom.gba` if you wish to build `mf_us.gba`).
- `python3`
- `g++`
## Setup
- **WINDOWS ONLY**: Install and setup [WSL](https://docs.microsoft.com/en-us/windows/wsl/install)
- Run `sudo apt update` just in case
- Install `binutils-arm-none-eabi` by running this command: `sudo apt-get install binutils-arm-none-eabi`
- Install `git` by running this command: `sudo apt-get install git`
- Install `make` by running this command: `sudo apt-get install make`
- Clone [agbcc](https://github.com/pret/agbcc) by running this command: `git clone https://github.com/pret/agbcc`
- Enter the agbcc folder (run `cd agbcc`) and build it (run `./build.sh`)
- Add agbcc to your path (`export PATH=":$PATH"`, where `` is the full path to the agbcc directory)
- Either:
- Install agbcc into this project (by using its `./install.sh ` script, where `` is the path to the root of this repository), or
- Add agbcc to your path (`export PATH=":$PATH"`, where `` is the full path to the agbcc directory)
## Build
- Run `make clean` if necessary
- Use `make clean DATA=1` to remove data as well
- Run the data extractor if necessary: `python3 tools/extractor.py`
- Use the `-r` flag to specify a region other than `us` (ex: `-r jp`)
- Use the `-d` flag to extract only debug data from the US beta ROM (required for building a ROM with debug features)
- Run `make` (using the `-j` option 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_debug` for 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)
- Optionally, you can combine the commands to make it easier: `python3 tools/extractor.py && make -j`
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md)