AGBx

Framework for development on the Game Boy Advance.

Features

The goal of this project is to provide a modern, standard-compliant C library for developing games and other types of software for the Game Boy Advance series.

This project is still (relatively) early in development; Don't expect too much of it.

Current features include:

Whilst this project may not be as feature complete as others (such as TONC), I still hope for it to be up there in the future.

I understand that the market for Game Boy games is nowhere near what it was during it's height twenty years ago, but I still hope for this hobbyist piece of software to someday prove useful for developers wanting to appeal to the retro market (or just for hobbyist projects of their own).

Demo

Provided is a simple demo program that functions as a graphics editor – akin to that of Paintbrush.

Controls

Building

The project (including the demo) is written in Standard C (ISO/IEC 9899:2023, N3047). As the Game Boy Advance uses an ARM (ARM7TDMI) processor, AGBx requires an ARM cross-compiler.

For GCC, the appropriate package is arm-none-eabi-gcc on Arch Linux and gcc-arm-none-eabi on Debian. Clang supports supports cross-compilation by default, and this platform can be set via the --target=arm-none-eabi option.

The used cross-compiler can be configured in the makefiles, however, it must be GCC-compatible unless you're willing to make major adjustments.


The provided makefiles are for GNU Make (hence the filename of GNUmakefile) and depend on it's extensions.

Demo

The demo uses agbsum (pkgbuild) for patching the demo image header checksum so that it isn't rejected by the bootloader. This patch isn't always required, however, and the makefile (at demo/GNUmakefile) may be modified to skip it.

Copyright and License

Copyright 2022 Gabriel Jensen.

All source files (with exceptions, see the individual files) – including the makefiles – are licensed under the Mozilla Public License 2.0.

The contents of this readme document are licensed under a Creative Commons Attribution 4.0 International License.