GAME BOY ADVANCE EMULATOR
AdvanceOS
AdvanceOS is a small, bare‑metal operating system that runs Game Boy Advance binaries by providing a GBA-like environment on Raspberry Pi hardware.

WHY IT MATTERS
Why this project exists
AdvanceOS leverages the ARM instruction-set compatibility between the GBA's ARM7TDMI and the Raspberry Pi's ARM11 to run GBA binaries with minimal instruction translation. It aims to provide a lightweight, bare‑metal environment that recreates GBA memory layout and peripherals so GBA programs can run on Raspberry Pi hardware.
BEST FOR
Best fit
Useful for developers, hobbyists, and experimenters who want to run or debug GBA homebrew on Raspberry Pi hardware (bare‑metal) or experiment with low-level GBA emulation without a full desktop emulator frontend.
The people behind AdvanceOS
History & status
AdvanceOS is maintained in a public GitHub repository. The code implements a GBA memory map, basic peripherals (LCD with backgrounds and sprites without rotation/scaling, keypad polling, timers, DMA, IRQ management) and uses the Raspberry Pi MMU to recreate the GBA memory environment. The README documents branches for experimental work (instructiondecoding, fulldma) and a deprecated qemu-compatible build. Activity and exact maintenance cadence should be checked on the repository for the latest commits and release activity.
What AdvanceOS supports
- Raspberry Pi (bare‑metal kernel image)
- QEMU (limited / deprecated compatibility branch noted in repo)
- GBA binaries (.gba) compiled for the original ARM7TDMI
- No commercial BIOS or firmware included
Download and availability
OFFICIAL DOWNLOADS
Get AdvanceOS
Official source and releases are provided on the project's GitHub. Build from source using the repository Makefile; the repo also contains example GBA resources compiled from devkitARM samples.
Get AdvanceOS ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗AdvanceOS setup guide
Setup note: This profile describes verified, repository-driven steps to build and run AdvanceOS as a bare‑metal kernel image on a Raspberry Pi (or to run the qemu-compatible variant where explicitly supported). It assumes familiarity with building from Git, cross-compilation basics for ARM, and writing an SD card for Raspberry Pi boot.
- 1) Fetch the source: Clone the official repository: git clone https://github.com/gberthou/AdvanceOS and change to the project directory.
- 2) Build the kernel for Raspberry Pi: Use the repository's Makefile. The README states you can run make or make build (the repo contains a top-level makefile). The build produces a kernel image (kernel.img) suitable for Raspberry Pi's boot partition.
- 3) Prepare your SD card (bare‑metal Raspberry Pi): Create a single FAT32 boot partition. Copy the official Raspberry Pi firmware's boot folder contents (the README instructs to clone the official Raspberry Pi firmware and copy the boot files) onto the SD card's FAT partition. Remove any existing kernel*.img files from the card, then copy the generated kernel.img from AdvanceOS into the boot partition. Adjust config.txt as needed; the repo includes example config files in the configs/ directory—use those as a starting point for display and hardware configuration.
- 4) Run on hardware: Insert the SD card into the Raspberry Pi and power it on. AdvanceOS runs as a bare‑metal kernel and provides a framebuffer-based LCD emulation of GBA graphics and basic input via keypad polling. Expect the environment to be oriented toward development/debugging rather than polished consumer features.
- 5) Debugging with QEMU (deprecated branch): The README documents a qemu-compatible kernel build that disables USB; that branch is explicitly flagged as deprecated because upstream qemu lacks full BCM2835 USB support. If you need emulation/debugging under QEMU, follow the repo's qemu/ run-emu.sh and run-gdb.sh scripts and build with the provided qemu-compatible target (the README shows make qemu-compatible DEFINES=-DNO_USB). Note: functionality and USB features will be limited.
- 6) ROMs, examples and devkitARM: The repository contains example GBA resources compiled from devkitARM samples; it references devkitARM as the standard toolchain for GBA development. AdvanceOS does not include commercial GBA games, BIOS, or firmware — you must supply your own legally obtained GBA binaries for testing.
- 7) Practical notes & expectations: AdvanceOS implements many GBA peripheral basics (LCD backgrounds/sprites without rotation/scaling, timers, DMA, IRQs and keypad polling) but is not a full-featured, cycle-accurate GBA emulator. Some GBA features or games that rely on exact hardware timing, advanced PPU effects, or missing peripherals may not run correctly. Use the repo branches and issue tracker for status on experimental improvements.
- 8) Building requirements: Follow the repository README for build requirements. The project uses standard tools available on typical Linux development setups (make, gcc/arm toolchain where applicable). For cross-compiling or building devkitARM samples, install devkitARM/devkitPro if you intend to compile GBA binaries or examples.
Software reminder: AdvanceOS is source-distributed; do not expect bundled commercial games, BIOSes, or proprietary firmware. Consult the repository README and issues for up-to-date build flags and compatibility notes before use.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for AdvanceOS as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation
