A Game Boy Advance emulator, written in Rust. 🦀
It's able to play most games, and has audio support!
Here's a video of it running DOOM!
As for tests, it currently passes:
- FuzzARM.
- Most gba-tests.
- Most gba_tests.
- ARMWrestler GBA.
- Most tests in shonumi/Emu-Docs.
- Most things in PeterLemon/GBA.
- ...and others!
Memetendo Unsafe Boy Advance currently requires Rust 1.81 as a minimum.
Just use cargo build
to build (optionally passing the --release
argument to
build with full optimizations), or cargo run
to build and run.
Instructions for building Web Memetendo can be found here.
Run cargo test
to run tests.
Some slow tests are ignored by default in debug builds.
Consider using cargo test -- --ignored
to run them, or test with optimizations
enabled via cargo test --release
.
Integration tests exist that automate the running of various test ROMs.
To set them up, download the submodules in this repository by using
git submodule update --init
and copy a GBA BIOS ROM to
/libmemetendo/tests/bios.bin
(if not provided, Cult-of-GBA's BIOS
will be used instead, but it does not currently pass jsmolka's
BIOS tests).
Memetendo Unsafe Boy Advance uses a per-pixel based software renderer, which allows for graphical effects that modify video state mid-scanline to work, but performs badly in general.
There's room for optimization. Possibly a per-scanline based renderer that falls back to a per-pixel based one would be an improvement (or even a hardware-based one), but this project currently isn't being actively maintained.
And as of writing, Memetendo Unsafe Boy Advance does not actually use any
unsafe
(non-dependency) code.
What a very specific question! The vote was very close:
So there was a tie-breaker...
Rustaceans win this time! 🦀