Boytacean
A Game Boy emulator that is written in Rust 🦀.
This emulator has been written for educational purposes and shouldn't be taken to seriously. But yeahh it plays games, which is cool... 🎮
Features
- Supports Game Boy (DMG) emulation
- Simple navigable source-code
- Web and SDL front-ends
- Fullscreen mode
- Support for multiple MBCs: MBC1, MBC2, MBC3, and MBC5
- Variable CPU clock speed
- Debug mode: VRAM and registers
Deployments
Provider | Stable | URL |
---|---|---|
Cloudfare | True |
boytacean.pages.dev |
Cloudfare | True |
prod.boytacean.pages.dev |
Cloudfare | True |
stable.boytacean.pages.dev |
Cloudfare | False |
master.boytacean.pages.dev |
Build
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=examples/web/lib -- --features wasm
cd examples/web
npm install && npm run build
cd dist && python3 -m http.server
Web version
You can use some GET parameters to control the initial behaviour 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 url . |
fullscreen |
Boolean | If the emulator should start in fullscreen mode. |
debug |
Boolean | If the "debugger" should start visible. |
keyboard |
Boolean | If the on screen keyboard should start visible. |
Inspiration
Documentation
- Game Boy Development community
- Game Boy - Pan Docs
- GameBoy Emulation in JavaScript
- POKEGB: a gameboy emulator that only plays Pokémon blue
- Game Boy CPU Opcodes
- Codeslinger - Game Boy
- Game Boy hardware database
ROMs
Emulators
- GitHub - LIJI32/SameBoy (C)
- GitHub - binji/binjgb (C)
- GitHub - Rodrigodd/gameroy (Rust)
- GitHub - simias/gb-rs (Rust)
- GitHub - RubenG123/frosty (Rust)
- GitHub - feo-boy/feo-boy (Rust)
- GitHub - calvinbaart/gameboy (TypeScript)
Videos
Other
License
Boyacian is currently licensed under the Apache License, Version 2.0.