boytacean
A GB emulator that is written in Rust π¦!
Boytacean
A Game Boy emulator that is written in Rust π¦.
This emulator has been written for educational purposes and shouldn't be taken too seriously. But yeahh it plays most Game Boy games, which is cool... πΉοΈ
Features
- Game Boy (DMG) and Game Boy Color (CGB) emulation
- Simple navigable source-code
- Web, SDL and Libretro front-ends
- Audio, with a pretty accurate APU
- Optional high-pass audio filter (Preserve, Accurate or Disabled)
- Serial Data Transfer (Link Cable) support
- Game Boy Printer emulation
- Support for multiple MBCs: MBC1, MBC2, MBC3, and MBC5
- Save state support using the BESS Specification for cross-compatibility with other emulators
- Cheat support using Game Genie and GameShark codes
- Variable CPU clock speed
- Accurate PPU - passes dmg-acid2 and cgb-acid2 tests
For the Web front-end...
- Mobile first experience
- Transparent RAM saving using Web Storage API
- GamePad support using Web Gamepad API
- Unobstructive and effective on-screen GamePad
- Rumble emulation and haptic feedback
- Cool bespoke display palettes built by TheWolfBunny64.
- Fullscreen browser mode
- Game playlists loaded from a remote JSON file - see Playlists
- Debug mode - VRAM and registers
What's still missing...
- Low-level cycle accurate system emulation
- Game Boy Camera emulation
- NetPlay gaming support
Deployments
| Provider | Stable | URL |
|---|---|---|
| Cloudflare | True |
boytacean.joao.me |
| Cloudflare | True |
boytacean.pages.dev |
| Cloudflare | True |
prod.boytacean.pages.dev |
| Cloudflare | True |
stable.boytacean.pages.dev |
| Cloudflare | False |
master.boytacean.pages.dev |
Build
Library
cargo build
Python Library
pip install .
or
python setup.py install
WASM for Node.js
cargo install wasm-pack wasm-pack build --release --target=nodejs -- --features wasm
WASM for Web
cargo install wasm-pack wasm-pack build --release --target=web --out-dir=frontends/web/lib -- --features wasm cd frontends/web npm install && npm run build cd dist && python3 -m http.server
Utilities
BOSC Decompressor
The BOSC decompressor is a simple utility that decompresses BOSC files to BOS format.
cargo run --release --bin bosc-decompress -- <input_file> <output_file>
Web front-end
The Web front-end makes use of EmuKit which is a UI toolkit that provides the required infrastructure for the creation of interfaces for emulation in a Web context.
Configuration
You can use some GET parameters to control the initial behavior of the emulator.
| Parameter | Type | Description |
|---|---|---|
rom_url |
String | The URL from which the initial ROM is going to be loaded, should support CORS. |
url |
String | The same as rom_url. |
fullscreen |
Boolean | If the emulator should start in fullscreen mode. |
fs |
Boolean | The same as fullscreen. |
debug |
Boolean | If the "debugger" should start visible and information shown in verbose mode. |
verbose |
Boolean | If information should be shown in verbose mode. |
keyboard |
Boolean | If the on-screen keyboard should start visible. |
palette |
String | The name of the palette to be set at startup( eg: christmas, hogwards, mariobros, etc.). |
playlist_url |
String | The URL of a JSON playlist file containing a list of ROMs to be loaded, should support CORS. |
playlist |
String | The same as playlist_url. |
Playlists
You can load a collection of ROMs through a JSON playlist using the playlist_url parameter. See Playlists for the file format, available fields, and examples.
Palettes
The palettes offered in the web version were provided by TheWolfBunny64.
Inspiration
To get some information about the resources that inspired me through the emulation creation journey check Inspiration.
Contributing
Love Gameboy emulation? Want to contribute to Boytacean? That's awesome! Your contributions are what make the open-source community such an amazing place to learn, inspire, and create.
To get started, please take a look at our Contributing Guidelines. Whether you're fixing bugs, adding new features, or helping with documentation, every contribution is valuable and greatly appreciated!
Don't hesitate to reach out if you have any questions. Join us in making Boytacean the best Gameboy emulator out there!
License
Boytacean is currently licensed under the Apache License, Version 2.0.
Build Automation
more like this
TachiSnap
TachiSnap β Pixel Snapper for animation pixel artists. Rust + WebAssembly client-side tool for cleaning up AI-generatedβ¦
bit_gossip
Pathfinding library for calculating all node pairs' shortest paths in an unweighted undirected graph.
RaylibWasm
.Net 10 (.Net 8+) webassembly starter project using raylib-cs nuget 7.0.2 and raylib 5.5
