Home

Awesome

RustBoyAdvance-NG

license Build

Nintendo GameBoy Advance ™ emulator and debugger, written in rust.

<div align="center"> <img width="360px" src="assets/icon_cropped_small.png"> </div>

WebAssembly Demo: https://michelhe.github.io/rustboyadvance-ng/ Deploy

Project Structure

Progress

Pokemon Emerald

Emulation Todo:

Build and usage (Desktop Application)

To get started, you need to get a stable rust toolchain of version Rust 1.51 or later,

Linux build dependencies

Install SDL2 dependencies

sudo apt-get -y install libsdl2-dev libsdl2-image-dev

Windows build dependencies

SDL2 runtime binaries are included in this repository, no extra setup needed.

macOS

Install SDL2 dependencies

brew install SDL2 SDL2_image
export LIBRARY_PATH="$LIBRARY_PATH:/opt/homebrew/lib"

Build & Usage

You need to obtain a gba bios binary. An open source GBA bios is also available and supported.

Place the bios file in the repository root and name it gba_bios.bin (or alternatively use the -b command line option)

Build and run in release mode (performance is terrible in the dev profile)

$ cargo run --release -- path/to/rom

You can also drag&drop rom files or any zip files containing .gba files inside into the emulator window and a new rom will be loaded.

Key bindings

Currently the key bindings are not configureable.

GBA key bindings:

KeyboardGBA
UpUp
DownDown
LeftRight
RightRight
ZB Button
XA Button
ReturnStart
BackspaceSelect
AL
SR

Special key bindings

KeyFunction
Space (hold)Disable 60fps cap
F1Custom debugger (requires --features debugger)
F2Spawn gdbserver (experimetnal, requires --features gdb)
F5Save snapshot file
F9Load snapshot file

Android Application

The android project is placed inside platform/android. To build it, open it with Android Studio.

You also need to set up rust to build android targets with NDK.

TODO - instructions

More Screenshots

Kirby - Nightmare in Dreamland Dragon Ball - Legacy of Goku 2

Links and attribution