A disassembly of one of my favorite Game Boy games. A first-pass over every function of code has been completed, but there are still plenty of improvements to be made to make the code more intelligible and usable. Feel free to contribute.
- Install rgbds
- Install Python
- Run
extract.pyto extract proprietary assets from a legally acquired copy of the original game. - Either run
make all,build.bat, orbuild.py, depending on your preference. - The assembled game and a BGB compatible
.symfile will appear in theoutfolder.
The resultant file should have this hash: md5: 9639948ad274fa15281f549e5f9c4d87
This project uses rgbds v0.9.1 and Python 3.13. Compatibility with other versions of these tools is not guaranteed.
If you wish to make a mod based on this repo, you may want to remove the lines at the bottom of the .gitignore file that blacklist proprietary assets from this repository, so that your custom assets will be tracked by your version control.
- Fork this repository (if you please).
- Make something better. Perhaps start by doing something like:
- Checking the issue tracker.
- Giving a function or variable a (better) name.
- Properly defining a RAM address (eg. labelName: ds 1).
- Turning a magic number into a constant.
- Turning a raw pointer (eg. $4242) into a proper label (eg. enemyAI_squeek).
- Adding a missing label.
- Adding informative comments.
- etc.
- Verify that your changes still result in a byte-for-byte identical game.
- Submit a pull request.
Please refrain from moving any chunk of code into a separate file without first discussing it in the issue tracker.
If you have questions or comments, please drop by the #metroid-ii channel on the MetConst Discord.
Subject to change.
docs- Assorted notes regarding the game's formats and structureout- Output directory for the build processscripts- Various scripts to extra data from the gamepatches- Basic modifications to improve or change the game.SRC- Top level source codeSRC/data- General data that hasn't been or can't be categorized elsewhereSRC/gfx- Generic tile dataSRC/maps- Level data banks, along with the associated enemy data and door scriptsSRC/ram- Definitions/declarations for VRAM, SRAM, WRAM, and HRAM.SRC/tilesets- Tile graphics, metatile definitions, and collision tables for each tileset
- mgbdis - The disassember used to create this project.
- PJ's Bank Logs - A rather extensive, but unbuildable, disassembly of the game.
- MetConst Wiki - Some of the information here is outdated.
- M2 Music Tools - A song extractor written by kkzero.
- LA DX Disassembly - A disassembly project of another game that also uses rgbds.