Skip to content
AdvanceOS

AdvanceOS

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.

game boy advancePRIMARY SYSTEM
History documentedPROJECT BEGAN
Open sourcePROJECT MODEL

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.

Metroid Fusion gameplay on Game Boy Advance
Gameplay from Metroid Fusion on Game Boy Advance.

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 ↗
Broken or missing download? Emulator projects move and official links sometimes change. Please contact Retro Replay so the source can be verified and updated.

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. 1) Fetch the source: Clone the official repository: git clone https://github.com/gberthou/AdvanceOS and change to the project directory.
  2. 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. 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. 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. 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. 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. 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. 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.