GAME BOY EMULATOR
gbaemu
gbaemu is an open-source Game Boy Advance emulator implemented in JavaScript and distributed as a web app (hosted on GitHub Pages). It runs GBA ROMs in a browser, offers save-state export/import, an optional BIOS input, on-screen register/debug displays, and basic sound and input support.

WHY IT MATTERS
Why this project exists
gbaemu is a hobby implementation of a Game Boy Advance emulator written in JavaScript to run in the browser. The author used public GBA hardware documentation (TONC, GBATEK) and other emulator code as references to learn and implement CPU, PPU and audio subsystems in a web environment.
BEST FOR
What it does best
Runs Game Boy Advance ROMs directly in a modern browser with an easy web UI, optional external BIOS support, multiple save-state slots with export/import, and simple on-screen debugging/register views for inspection while running games or demos.
The people behind gbaemu
History and status
The project source and a live web build are hosted on GitHub (samuelchen52/gbaemu) and a GitHub Pages site provides the web front end and demo. The repository contains source code, a README describing usage, and example/demo ROM support. The README and site note planned improvements (better timing accuracy, optimizations, improved UI) and list credits to reference materials (TONC, GBATEK, mGBA/No$GBA for debugging). The project appears maintained as a personal/hobby emulator; repository activity and commit history are present in the GitHub source. No official packaged native desktop builds are documented in the repository; the primary distribution is the browser page and repository releases page if present.
What gbaemu supports
- Game Boy Advance (GBA) ROMs; optional external GBA BIOS file supported.
Download and availability
OFFICIAL DOWNLOADS
Get gbaemu
Official code and any release artifacts are available from the project's GitHub repository and GitHub Releases; a live web build is hosted on the project's GitHub Pages site. Use the repository Releases page or the GitHub Pages site to run the emulator in-browser.
Get gbaemu ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗gbaemu setup guide
Setup note: This guide covers using the web-hosted build and running the emulator from source. The project is JavaScript-based and intended for modern browsers (README recommends Chrome). It does not include commercial games or BIOS images; supplying those is the user's responsibility and subject to copyright and licensing rules.
- 1) Run the web build: Open the project's GitHub Pages site (the repository hosts a live demo). In a modern Chromium-based browser (Chrome recommended by the author) navigate to the page to load the emulator UI.
- 2) Prepare a GBA ROM and optional BIOS: Obtain a GBA ROM file (.gba) from your own legally obtained backup. The emulator accepts an optional BIOS file; if you do not provide one the project’s default/embedded BIOS (attribution in README) will be used. The emulator will prompt for the ROM and BIOS via file inputs on the page.
- 3) Load a ROM (and BIOS if desired): Use the page’s file inputs to select the BIOS file first (optional) and then the GBA ROM. The UI also includes demo ROM options you can load for quick testing.
- 4) Controls and input: The UI exposes clickable control bindings so you can rebind keyboard keys. For best results use a desktop browser and configure keys before starting gameplay. There is no documented gamepad auto-mapping; browser gamepad support may be limited by the implementation.
- 5) Save states and savegames: The emulator supports multiple save-state slots visible in the UI. You can create save states in the page and export them to files (JSON). To restore, import the exported save-state file into the corresponding slot. The README documents save-state export/import behavior.
- 6) Debugging and registers: The web UI includes a register and CPSR display and other debugging panels (visible on the page). These are useful for emulator development and inspecting CPU state while running a ROM or demo.
- 7) Running from source (developer): Clone the GitHub repository, inspect the src and resources folders, and open the provided index.html / debug.html in a browser or run a simple local web server (for example, Python’s "python -m http.server" in the project directory) to host the files. The README and repository files include an instructions.txt and a debug.html that are helpful for development and testing.
- 8) Compatibility notes and limitations: This is a hobby, semi-accurate implementation. The README lists planned features such as improved CPU timing and optimizations. Expect compatibility and performance to vary between browsers and between ROMs; complex or timing-sensitive titles may not run perfectly.
Software reminder: gbaemu is a web-based emulator; you should not expect packaged commercial games, BIOS images, or firmware to be included. Provide your own legally obtained ROMs and BIOS if required.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for gbaemu as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation
