Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/seandewar/memetendo-unsafe-boy-advance
Game Boy Advance emulator with audio support written in Rust ๐ฆ๐ฎ
https://github.com/seandewar/memetendo-unsafe-boy-advance
armv4t emulator game-boy-advance rust
Last synced: about 2 months ago
JSON representation
Game Boy Advance emulator with audio support written in Rust ๐ฆ๐ฎ
- Host: GitHub
- URL: https://github.com/seandewar/memetendo-unsafe-boy-advance
- Owner: seandewar
- License: mit
- Created: 2022-01-20T16:50:03.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-03-25T23:04:00.000Z (9 months ago)
- Last Synced: 2024-03-26T01:38:01.136Z (9 months ago)
- Topics: armv4t, emulator, game-boy-advance, rust
- Language: Rust
- Homepage: https://seandewar.github.io/memetendo-unsafe-boy-advance/
- Size: 1000 KB
- Stars: 6
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Memetendo Unsafe Boy Advance
![Doom 2 screenshot](media/doom2.png)
![Pokรฉmon FireRed screenshot](media/pokemon-firered.png)
![OpenLara screenshot](media/openlara.png)A [Game Boy Advance](https://en.wikipedia.org/wiki/Game_Boy_Advance) emulator,
written in Rust. ๐ฆ[Try it out in your browser!](https://seandewar.github.io/memetendo-unsafe-boy-advance/)
## Status
It's able to play most games, and has audio support!
[Here's a video of it running DOOM!](https://www.youtube.com/watch?v=mdFqmEEttws)As for tests, it currently passes:
- [FuzzARM](https://github.com/DenSinH/FuzzARM).
- Most [gba-tests](https://github.com/jsmolka/gba-tests).
- Most [gba\_tests](https://github.com/destoer/gba_tests).
- [ARMWrestler GBA](https://github.com/destoer/armwrestler-gba-fixed).
- Most tests in [shonumi/Emu-Docs](https://github.com/shonumi/Emu-Docs/tree/master/GameBoy%20Advance/test_roms).
- Most things in [PeterLemon/GBA](https://github.com/PeterLemon/GBA).
- ...and others!## Building
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](web-memetendo/README.md).
## Tests
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](https://github.com/Cult-of-GBA/BIOS)
will be used instead, but it does not currently pass [jsmolka's](https://github.com/jsmolka/gba-tests)
BIOS tests).## Performance
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.## What's with the name?
![Origin of the name](media/name-origin.png)
And as of writing, Memetendo Unsafe Boy Advance does not actually use any
`unsafe` (non-dependency) code.## Why Rust and not Zig?
What a very specific question! The vote was very close:
![Language poll result](media/lang-vote.png)
So there was a tie-breaker...
![Tie-breaker result](media/tiebreaker-result.png)
Rustaceans win this time! ๐ฆ