Migrated to Codeberg!
June 21, 2026 ยท View on GitHub
Development of the project on GitHub has ceased and will continue over on Codeberg.
NanoBoyAdvance
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
| Distribution | Packages | Package Manager | Notes |
|---|---|---|---|
| Arch Linux | cmake ninja sdl3 qt6-base | pacman | |
| Debian & Ubuntu | cmake ninja-build libsdl3-dev qt6-base-dev | apt | |
| macOS | cmake ninja sdl3 qt@6 | Homebrew | |
| FreeBSD | cmake devel/ninja git sdl3 qt6-base | pkg | Untested 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 Korth | GBATEK, a good piece of hardware documentation |
| endrift | Hardware research and her excellent test suite |
| destoer, Noumi, Sky and Zayd | Hardware research and tests, countless discussions and being good friends |
| Pokefan531, hunterk | The default GBA color correction algorithm |
| Talarubi, Near | higan's GBA color correction algorithm |
| DeSmuME, Hyllian | xBRZ upscaling code |
Sister Projects
Our sister projects include SkyEmu, Dust and Panda3DS.
Copyright
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.