An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

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)