Tools and utilities to build basic GBA ROMs using the Odin programming language.
This is a work in progress: functionality besides basic mode 3 rendering and input is missing, but that's enough for some simple demos like:
Mode 3 input example running in mGBA on macOS
BIOS functions example running on a real Game Boy Advance SP
The repo also includes a CLI under tools for building and other utilites:
odin-gba - build GBA ROMs with Odin
usage: odin-gba <command> [options]
commands:
assetpack <png> pack a png font -- todo
build <package> build a ROM package
header write a GBA header to a ROM
help show this help- Odin
dev-2026-07or above. - GNU Arm Embedded toolchain
- MacOS:
brew install --cask gcc-arm-embedded - Ubuntu/Debian:
sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi - Windows: Grab official installers and ensure they are in your
PATH
- MacOS:
The ARM toolchain is needed for more direct assembler/linker access, and more flexibility in stripping executables down.
Generate packed assets (debug font):
odin run tools -- assetpack assets/font.pngBuild a package as a full rom:
odin run tools -- build examples/00-mode3-input
odin run tools -- build examples/01-mode3-printA full program needs to have:
- an exported
gba_mainprocedure - a
manifest.jsonwith desired header values