- Notifications
You must be signed in to change notification settings - Fork28
RustBoyAdvance-NG is a Nintendo™ Game Boy Advance emulator and debugger, written in the rust programming language.
License
michelhe/rustboyadvance-ng
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Nintendo GameBoy Advance ™ emulator and debugger, written in rust.
WebAssembly Demo:https://michelhe.github.io/rustboyadvance-ng/
core/
- Main emulator crate that ties everything togetherarm7tdmi/
- Emulation of the Arm7tdmi processor.platform/
- Constains executables & application built withrustboyadvance-core
platform/rustbodyadvance-wasm
- Web emulator powered by WebAssemblyplatform/rustbodyadvance-sdl2
- Desktop application built with sdl2platform/rustbodyadvance-minifb
- Desktop application built with minifb,not maintained.platform/rustbodyadvance-jni
- Java JNI binidngs for the emulator.platform/rustbodyadvance-term
- A full in-terminal frontend implemented via crossterm and viuer by @FRoith.platform/android
- A PoC Android application.
- CGB audio (4 wave generator channels)
To get started, you need to get astable rust toolchain of version Rust 1.51 or later,
Install SDL2 dependencies
sudo apt-get -y install libsdl2-dev libsdl2-image-dev
SDL2 runtime binaries are included in this repository, no extra setup needed.
Install SDL2 dependencies
brew install SDL2 SDL2_imageexport LIBRARY_PATH="$LIBRARY_PATH:/opt/homebrew/lib"
You need to obtain a gba bios binary.Anopen source GBA bios is also available and supported.
Place the bios file in the repository root and name itgba_bios.bin
(or alternatively use the-b
command line option)
Build and run in release mode (performance is terrible in thedev
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.
Currently the key bindings are not configureable.
GBA key bindings:
Keyboard | GBA |
---|---|
Up | Up |
Down | Down |
Left | Right |
Right | Right |
Z | B Button |
X | A Button |
Return | Start |
Backspace | Select |
A | L |
S | R |
Special key bindings
Key | Function |
---|---|
Space (hold) | Disable 60fps cap |
F1 | Custom debugger (requires --features debugger) |
F2 | Spawn gdbserver (experimetnal, requires --features gdb) |
F5 | Save snapshot file |
F9 | Load snapshot file |
The android project is placed insideplatform/android
.To build it, open it with Android Studio.
You also need to set up rust to build android targets with NDK.
TODO - instructions
- ARM7TDMI Technical Reference ManualTechnical Reference Manuals arefun.
- GBATEKA single webpage written byno$gba developer Martin Korth.This page has pretty much everything. Seriously, it's the best.
- TONCA comprehensive GBA dev guide that I used a-lot in order to understand the GBA system.Comes with neat demo roms that really helped me during development and debugging.
- NanoboyAdvanceA GameBoy Advance emulator written in C++17 by a nice person called fleroviux.I've used this for debugging.
- Eggvance gba-suiteIncredible test suite for the arm7tdmi interpreter that I'm using, written by Julian Smolka.
About
RustBoyAdvance-NG is a Nintendo™ Game Boy Advance emulator and debugger, written in the rust programming language.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.