Migrated to Codeberg!

June 21, 2026 ยท View on GitHub

Development of the project on GitHub has ceased and will continue over on Codeberg.

NanoBoyAdvance

discord

NanoBoyAdvance is a cycle-accurate Game Boy Advance emulator.
It aims to be as accurate as possible, while also offering enhancements such as improved audio quality.

Features

  • Very high compatibility and accuracy (see Accuracy)
  • HQ audio mixer (for games which use Nintendo's MusicPlayer2000 sound engine)
  • Post-processing options (color correction, xBRZ upscaling and LCD ghosting simulation)
  • Save State support (10x save slots available)
  • Game controller support (buttons and axises can be remapped)
  • Loading ROMs from archives (including ZIP, 7z, tar and more)
  • RTC emulation
  • Solar Sensor emulation (for example: for Boktai - The Sun is in Your Hand)
  • Debug tools: PPU palette, tile, background and sprite viewers

Running

Download the lastest release.

Upon loading a ROM for the first time you will be prompted to assign the Game Boy Advance BIOS file.
You can dump it from a real console (accurate) or use an unofficial BIOS (Use gba_bios.bin from the bios folder.) (less accurate).

Accuracy

A lot of research and attention to detail has been put into developing this core and making it accurate.

  • Cycle-accurate emulation of most components, including: CPU, DMA, timers, PPU and Game Pak prefetch
  • Passes all AGS aging cartridge tests (NBA was the first public emulator to achieve this)
  • Passes most tests in the mGBA test suite
  • Passes ARMWrestler, gba-suite and FuzzARM CPU tests
  • Very high compatibility, including games that require emulation of peculiar hardware edge-cases

Compiling

Prerequisites:

  • Clang or GCC with C++20 support
  • CMake 3.24 or newer (Recommended generator is Ninja)
  • SDL 3.0.0 or newer
  • Qt 6.0 or newer
DistributionPackagesPackage ManagerNotes
Arch Linuxcmake ninja sdl3 qt6-basepacman
Debian & Ubuntucmake ninja-build libsdl3-dev qt6-base-devapt
macOScmake ninja sdl3 qt@6Homebrew
FreeBSDcmake devel/ninja git sdl3 qt6-basepkgUntested on CI. Use at your own risk:tm:.

You can then configure NanoBoyAdvance:

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release

For Windows, append -DQt6_DIR=path\to\Qt6-config.cmake and -DSDL3_DIR=path\to\SDL3-config.cmake, with the correct paths given.

Compiling can now be done through cmake --build build.

Acknowledgements

Individual(s)Their impact
Martin KorthGBATEK, a good piece of hardware documentation
endriftHardware research and her excellent test suite
destoer, Noumi, Sky and ZaydHardware research and tests, countless discussions and being good friends
Pokefan531, hunterkThe default GBA color correction algorithm
Talarubi, Nearhigan's GBA color correction algorithm
DeSmuME, HyllianxBRZ upscaling code

Sister Projects

Our sister projects include SkyEmu, Dust and Panda3DS.

NanoBoyAdvance is licensed under the terms of the GNU General Public License (GPL) 3.0 or any later version. See LICENSE for details.

Game Boy Advance is a registered trademark of Nintendo Co., Ltd.