Skip to content

gbadev-org/awesome-gbadev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Game Boy Advance development

A curated list of development resources for Game Boy Advance.

Contribute adding resources or providing feedback through Pull Requests, Issues or joining us on Discord. You can find a web version of this list here.

Table of Content


Introduction

Community

  • GBAdev Forum - Our new hub for announcements and long-form discussion. It's a good place to ask questions and share progress on your projects.

  • GBAdev Discord - This is where everyone hangs out to chat nowadays. Come say hi!

    Info for IRC users

    All rooms are bridged to IRC channels on EFnet.

    Main channel
    #gbadev - general chat

    Additional channels
    #gba-meta - community feedback/discussion
    #gba-help - help & support
    #gba-emudev - emulator development
    #gba-asm - ARM/Thumb assembly and CPU architecture
    #gba-showcase - share what you're working on!
    #gba-music - listening, composing and audio programming
    #gba-offtopic - off-topic chat
    #gba-docs - community documentation projects (tutorials, technical docs etc.)
    #gbajam - hang out with other GBA Jam participants & share your progress

    Project-specific channels
    #gba-toolchain - gba-toolchain, agbabi, and gba-hpp development & support
    #butano - Butano engine development & support
    #natu - Natu toolkit development & support
    #sdk-seven - sdk-seven development & support

Other places

  • GBAdev.org - The longstanding homepage of the scene. Still updated with news and releases (but the forums have been broken for a while).
  • GBAtemp - The site carries the GBA name, but nowadays the console is relegated to the backbenches. It's a good place to talk about gaming and hardware though.

Documentation

Tutorials

Articles

Software Development

Compilers

  • devkitARM - C/C++ cross-compiler toolchain, which includes libgba, libtonc, maxmod, and various tools and example projects.
  • gba-toolchain - GNU Arm Embedded Toolchain based alternative to devkitARM.
  • gvasm - Stand-alone assembler and disassembler (WIP) designed specifically for GBA homebrew
  • TinyGo - An alternative Go compiler for embedded systems, that supports GBA compilation

Toolkits

  • rust-console - GBA programming in Rust, plus tutorial.
  • natu - GBA programming in Nim (provides wrapper around libtonc, maxmod and more).
  • gba-modern - Write GBA games using modern C++.
  • ZigGBA - WIP SDK for creating GBA games using Zig (Inspired by Tonc).
  • Butano - Modern C++ high level engine for the GBA.
  • BPCore Engine - Create GBA applications with the Lua programming language
  • GBA Dlang - WIP SDK for GBA development using D, using LLVM toolchain. provides fully functional TONC, GBFS, Maxmod.
  • dusk - Simple, lightweight, intuitive framework for GBA game development
  • gbsenpai - GB Studio player GBA port with some enhancements.
  • meson-gba - Meson-based GBA toolkit with support for many different libraries and tools.
  • sdk-seven - Modern runtime and tooling, and libraries for GBA development. Works with meson-gba or standalone.
  • rath - Forth programming environment for the Game Boy Advance
  • ada-gba-dev - A build system, libraries, and tools for producing programs for the Game Boy Advance using the Ada programming language.

Libraries

  • agbabi - Drop-in application binary interface library (context switching, division, irq, memcpy, sine).
  • gba-hpp - C++20 header-only library for GBA development.
  • HeartLib - Comprehensive C library inspired by the classic HAMLib.
  • libseven - Modern, from-scratch replacement for libgba and libtonc.
  • GBAdv - High level utilities on top of libgba.
  • Maxmod - Music and sound library (supports .mod, .xm, .s3m, .it)
  • Apex Audio System - Music and sound library (supports .mod only, but very good performance)
  • Krawall - Music and sound library (supports .xm, .s3m)
  • Pimpmobile - Music library (supports .mod, .xm)
  • GBT Player - Music library that uses the DMG sound channels (close to 0% CPU usage).
  • posprintf - An sprintf routine written in Thumb assembler.
  • GBFS - Practical filesystem
  • agb - Rust library. It attempts to be a high level abstraction over the internal workings of the Game Boy Advance whilst still being high performance and memory efficient.
  • gbaLib - Library for programming the GBA with TinyGo
  • gba-link-connection: A set of C++ libraries to interact with the Serial Port (Link Cable, Wireless Adapter, GPIO, SPI)

Emulators

  • mGBA - Actively developed GBA emulator. Runs on a bunch of platforms. Text debugger through GDB stub.
  • No$gba - Venerable GBA emulator. Windows only, but runs well under Wine. Not very actively maintained but still gets updates now and then. Sports graphical debugger.
  • NanoBoyAdvance - GBA emulator with high accuracy, especially in timing and CPU emulation. Does not have debugging features.
  • SkyEmu - GB/GBA/NDS Emulator with built in debuggers, REST API for scripting, and high accuracy.
  • MiSTer FPGA implementation - Needs MiSTer setup to run.

Emulator Development

Testing

Homebrews

  • Goodboy Advance - Made in 2018, and has a nice bit of information on how it's made.
  • Celeste Classic - 2019 port of Pico8 version of Celeste.
  • GBADoom - 2019/2020 GBA port of prBoom version of Doom.
  • BlindJump - Adventure game, developed in 2020. Implementation of link-cable multiplayer, fully digital audio.
  • Tigermoth - Bullet hell game, developed for the GBAJam 2021
  • Duster - A sleek strategy board game for the gba
  • OpenLara - Classic Tomb Raider open-source engine

Jams

Miscellanea

  • gba_bios - WIP disassembly of the Game Boy Advance BIOS
  • GBA bare metal code - Various experiments by Krom, such as video playback and 3D, written in ARM Assembly
  • dkarm_gba_docker - A Docker image that includes DevkitARM and other GBA SDK tools, packaged together to allow a consistent toolchain configuration and reproducibility in builds. Also can be helpful in ensuring a consistent build environment for continuous integration.

Dumping the GBA BIOS

Reverse engineering

Historical links

  • HEL - GBA C library built on top of HAM (a classic SDK from back in the day)
  • Headspin's Guide to Compression, Files Systems, Screen Effects and MOD Players for the Gameboy Advance