Home

Awesome

ADA GBA

Gameboy Advance software library for the Ada programming language.

Requirements

Note that code compiled to run on the GBA uses custom runtime libraries derived from GNAT FSF and SweetAda, and opts out of the default Ada standard library. All elements of the custom runtime library are either licensed under the GPL3 with runtime exception (derived from GCC source), or ZLIB licenses (new/custom code). The gba_crt0.s file is licensed under MPL 2.0; a new implementation is under development if this is a problem for you.

The runtime also incorporates work from the excellent AGBABI implementation of __aeabi functions to avoid linking with libc or libg++.

Building a GBA project

...In a Container

Provided in the .devcontainer/ subfolder is a Dockerfile which will build a container image suitable for GBA development in Ada. This includes the appropriate Alire-provided GNAT FSF compiler and binutils.

This can be built and developed within automatically from VS Code, or manually with your workspace mounted as a volume.

...With Alire

ADA GBA has an included alire.toml to allow depending on this package directly with the Alire package manager. Clone and include this repo in any Alire index visible to your installation, and simply alr with gba from your project.

Building the library or executables can then be done simply with alr build. It is still recommended to create a custom gpr file rather than the default Alire template, as you will want to inherit from the provided GBA_Program.gpr abstract package.

...Manually

Sample executables to make sure your build environment works and to demonstrate GBA library features are provided in the demo/ directory. The demos will be expanded and adapted as necessary to fit the requirements and features of this library.


Feature Completion Progress

Notes

Thanks to the sources of information used to construct this library, including

The great AGBABI library is used here to provide efficient implementations of some built-in functions (math, memory copies, etc.)

Integration with the Alire package manager has helped simplify the build process. Thanks to the greater Ada community for working on it.