RustBoyAdvance-NG: GameBoy Advance emulator and debugger, written in rust
source link: https://github.com/michelhe/rustboyadvance-ng
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
RustBoyAdvance-NG
Nintendo GameBoy Advance ™ emulator and debugger, written in rust.
WebAssembly Demo: https://michelhe.github.io/rustboyadvance-ng/
Project Structure
-
rustboyadvance-core/src
- Main library crate -
bindings/
- Bindings to other languages. Currently only java binidings through JNI. -
platform/
- Constains executables & application built withrustboyadvance-core
-
platform/rustbodyadvance-wasm
- Web emulator powered by WebAssembly -
platform/rustbodyadvance-sdl2
- Desktop application built with sdl2 -
platform/rustbodyadvance-minifb
- Desktop application built with minifb, not maintained . -
platform/android
- A PoC Android application.
-
Progress
Emulation Todo:
- CGB audio (4 wave generator channels)
Build and usage (Desktop Application)
To get started, you need to get a stable rust toolchain .
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.
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 -p rustboyadvance-sdl2 -- 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:
Keyboard GBA Up Up Down Down Left Right Right Right Z B Button X A Button Return Start Backspace Select A L S RSpecial 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 fileAndroid 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
Links and attribution
- ARM7TDMI Technical Reference Manual Technical Reference Manuals are fun .
- GBATEK A single webpage written by no$gba developer Martin Korth. This page has pretty much everything. Seriously, it's the best.
- TONC A 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.
- NanoboyAdvance A GameBoy Advance emulator written in C++17 by a nice person called fleroviux. I've used this for debugging.
- Eggvance gba-suite Incredible test suite for the arm7tdmi interpreter that I'm using, written by Julian Smolka.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK