RustBoyAdvance-NG

RustBoyAdvance-NG is a comprehensive Nintendo GameBoy Advanceā„¢ emulator and debugger developed in Rust. This emulator aims to faithfully recreate the experience of using the original GameBoy Advance hardware, while also providing advanced debugging capabilities for developers and enthusiasts.

RustBoyAdvance-NG Logo RustBoyAdvance-NG Logo

Project Structure

RustBoyAdvance-NG is organized into several main components:

  • core/: The primary emulator crate that integrates all components.
  • arm7tdmi/: Emulates the Arm7tdmi processor.
  • platform/: Contains various executables and applications built with rustboyadvance-core.
    • rustbodyadvance-wasm: A web emulator powered by WebAssembly.
    • rustbodyadvance-sdl2: A desktop application built with SDL2.
    • rustbodyadvance-minifb: A desktop application built with minifb (not maintained).
    • rustbodyadvance-jni: Java JNI bindings for the emulator.
    • android/: A proof of concept Android application.

Key Features

RustBoyAdvance-NG is packed with features that ensure an authentic emulation experience:

  • Accurate Emulation: Emulates the ARM7TDMI processor, including support for various GameBoy Advance peripherals.
  • Debugger Support: Includes a custom debugger and experimental GDB server support.
  • WebAssembly Demo: A functional demo is available online at RustBoyAdvance-NG Web Demo.
  • Multi-platform Support: Runs on desktop platforms via SDL2 and WebAssembly for browser-based emulation.
  • Java and Android Integration: Provides JNI bindings and an Android application proof of concept.

Progress

The emulator is continuously being developed with significant progress in emulating popular GameBoy Advance titles. Features under development include complete CGB audio support, which will add all four wave generator channels.

Pokemon Emerald Screenshot Pokemon Emerald Screenshot

Key Bindings

GBA Key Bindings

KeyboardGBA
UpUp
DownDown
LeftLeft
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 (experimental, requires --features gdb)
F5Save snapshot file
F9Load snapshot file

Screenshots

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

Links and Attribution

Similar Projects

Rustfinity.com

Links

  1. Home
  2. Learn Rust
  3. Get Started
  4. Practice Rust
  5. Challenges
  6. Tutorials
  7. Blog
  8. Open source
  9. Learn Gleam

Socials

  1. GitHub
  2. X

Legal

  1. Privacy Policy
  2. Terms of Service