The goal of this project is to provide a modern C library for developing games and other types of software for the Game Boy Advance series.
This project is still (relatively) early in development, so don't expect too much from it.
Whilst this project may not be as feature complete as others (such as TONC), I still hope for it to someday get to the same level of quality and usefulness.
I understand that the market for Game Boy games is nowhere near what it was twenty years ago during it's height, but I still hope for this software to someday prove useful for developers wanting to appeal to the retro market or for other hobbyist programmers.
Provided is a simple demo program that functions as a graphics editor – akin to that of Paintbrush.
A: Colour the selected pixel;
+CONTROL PAD: Move one pixel to the specified direction on the canvas;
R: Rotate the palette counterclockwise;
L: Rotate the palette clockwise;
START: Exit the demo;
SELECT: Exit the demo (by indicating error);
The project (including the demo) is written in Standard C (ISO/IEC 9899:2023, N3054).
As the Game Boy Advance uses an ARM (ARM7TDMI) processor, ax 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 cross-compilation by default, and this platform can be set via the --target=arm-none-eabi option.
The used 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.
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 (some emulators ignore it), and the makefile (at demo/GNUmakefile) may be modified to skip it.
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.