awesome-gbadev
awesome-gbadev copied to clipboard
A curated list of Game Boy Advance development resources
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
-
Documentation
- Tutorials
- Articles
-
Software Development
- Compilers
- Toolkits
- Libraries
- Emulators
-
Emulator Development
- Testing
-
Homebrews
- Jams
-
Miscellanea
- Dumping the GBA BIOS
- Reverse engineering
- Historical links
Introduction
Community
-
GBADev Discord Server - This is where everyone hangs out nowadays. Come say hi!
Info for IRC users
All rooms are bridged to IRC channels on EFnet.
Main channel
#gbadev
- general chatAdditional 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.)
#gba-tools
- tool discussion (grit, tiled, aseprite, etc.)Project-specific channels
#gba-toolchain
- gba-toolchain, agbabi and gba-plusplus development & support
#butano
- Butano engine development & support
#natu
- Natu toolkit development & support -
GBADev - The longstanding homepage of the scene. Regularly updated with the lastest news and releases.
-
GBAtemp - The site carries the GBA name, but now the console is relegated to the backbenches.
Documentation
- GBATEK - Programming specs for the GBA and NDS hardware
- CowBite Virtual Hardware Specifications - Older GBA hardware documentation
- The Audio Advance - Audio hardware documentation and basic test ROMs
Tutorials
- Tonc - Complete programming tutorial
- Sound on the Gameboy Advance - How to write your own sound mixer / MOD music player
Articles
- Gameboy Advance Resource Management - Allocation techniques for the GBA's various memory regions
- Managing Sprite Cel VRAM on the Game Boy Advance - Analysis of the VRAM streaming approach for animated sprites
- Using Beepbox for GBA Music Composition
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
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.
Libraries
- agbabi - Drop-in application binary interface library (context switching, division, irq, memcpy, sine).
- gba-plusplus - Modern C++ alternative to libgba and libtonc.
- HeartLib - Comprehensive C library inspired by the classic HAMLib.
- libseven - Lightweight, from-scratch replacement for libgba.
- 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
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.
- MiSTer FPGA implementation - Needs MiSTer setup to run.
Emulator Development
Testing
- mGBA test suite
- GBA Suite
- 240p-test-mini - video signal tests
- NBA hardware tests
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
- Software interrupt $1F / MidiKey2Freq, canonical method
- Cracking the GBA BIOS by endrift
- Dumping the GBA BIOS, another method by MerryMage
Reverse engineering
- Reverse Engineering a GameBoy Advance Game - A series of detailed posts and talks about developing a level editor for Klonoa: Empire of Dreams
- Pokemon Ruby - C programming language annotation of a Pokemon Ruby disassembly
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