Logo

0x3d.Site

is designed for aggregating information.
Welcome
check repository here

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
  • 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
  • Debug mode - VRAM and registers

What's still missing...

  • Low-level cycle accurate system emulation
  • Game Boy Camera emulation
  • NetPlay gaming support

Deployments

ProviderStableURL
CloudflareTrueboytacean.joao.me
CloudflareTrueboytacean.pages.dev
CloudflareTrueprod.boytacean.pages.dev
CloudflareTruestable.boytacean.pages.dev
CloudflareFalsemaster.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

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.

ParameterTypeDescription
rom_urlStringThe URL from which the initial ROM is going to be loaded, should support CORS.
urlStringThe same as rom_url.
fullscreenBooleanIf the emulator should start in fullscreen mode.
fsBooleanThe same as fullscreen.
debugBooleanIf the "debugger" should start visible and information shown in verbose mode.
verboseBooleanIf information should be shown in verbose mode.
keyboardBooleanIf the on-screen keyboard should start visible.
paletteStringThe name of the palette to be set at startup( eg: christmas, hogwards, mariobros, etc.).

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

Build Status crates Status npm Status PyPi Status License

Rust
Rust
Rust is a modern programming language focused on safety, speed, and concurrency. It prevents common bugs like null pointer dereferencing and data races, making it ideal for system programming and high-performance applications.
Create business apps like assembling blocks | ILLA Cloud
Create business apps like assembling blocks | ILLA Cloud
GitHub - 0x59616e/SteinsOS: An operating system written in Rust
GitHub - 0x59616e/SteinsOS: An operating system written in Rust
GitHub - j0ru/kickoff: Minimalistic program launcher
GitHub - j0ru/kickoff: Minimalistic program launcher
Workflow runs · rust-lang/rustup
Workflow runs · rust-lang/rustup
GitHub - paradigmxyz/artemis: A simple, modular, and fast framework for writing MEV bots in Rust.
GitHub - paradigmxyz/artemis: A simple, modular, and fast framework for writing MEV bots in Rust.
Workflow runs · sigp/lighthouse
Workflow runs · sigp/lighthouse
GitHub - flox/flox: Developer environments you can take with you
GitHub - flox/flox: Developer environments you can take with you
Unified Architecture - OPC Foundation
Unified Architecture - OPC Foundation
MaidSafe
MaidSafe
ttyperacer / terminal-typeracer · GitLab
ttyperacer / terminal-typeracer · GitLab
GitHub - cloudhead/rx: 👾 Modern and minimalist pixel editor
GitHub - cloudhead/rx: 👾 Modern and minimalist pixel editor
GitHub - rust-ethereum/ethabi: Encode and decode smart contract invocations
GitHub - rust-ethereum/ethabi: Encode and decode smart contract invocations
GitHub - watchexec/watchexec: Executes commands in response to file modifications
GitHub - watchexec/watchexec: Executes commands in response to file modifications
GitHub - osa1/tiny: A terminal IRC client
GitHub - osa1/tiny: A terminal IRC client
GitHub - sergree/whatbpm: 💓 Today's Trending Values for EDM Production
GitHub - sergree/whatbpm: 💓 Today's Trending Values for EDM Production
GitHub - rsaarelm/magog: A roguelike game in Rust
GitHub - rsaarelm/magog: A roguelike game in Rust
GitHub - autonomys/subspace: Subspace Network reference implementation
GitHub - autonomys/subspace: Subspace Network reference implementation
GitHub - nicohman/eidolon: Provides a single TUI-based registry for drm-free, wine and steam games on linux, accessed through a rofi launch menu.
GitHub - nicohman/eidolon: Provides a single TUI-based registry for drm-free, wine and steam games on linux, accessed through a rofi launch menu.
GitHub - shshemi/tabiew: A lightweight, terminal-based application to view and query delimiter separated value formatted documents, such as CSV or TSV files.
GitHub - shshemi/tabiew: A lightweight, terminal-based application to view and query delimiter separated value formatted documents, such as CSV or TSV files.
GitHub - joamag/boytacean: A GB emulator that is written in Rust 🦀!
GitHub - joamag/boytacean: A GB emulator that is written in Rust 🦀!
GitHub - chaosprint/glicol: Graph-oriented live coding language and music/audio DSP library written in Rust
GitHub - chaosprint/glicol: Graph-oriented live coding language and music/audio DSP library written in Rust
GitHub - wasmerio/winterjs: Winter is coming... ❄️
GitHub - wasmerio/winterjs: Winter is coming... ❄️
GitHub - withoutboats/notty: A new kind of terminal
GitHub - withoutboats/notty: A new kind of terminal
GitHub - cfal/shoes: A multi-protocol proxy server written in Rust (HTTP, HTTPS, SOCKS5, Vmess, Vless, Shadowsocks, Trojan, Snell)
GitHub - cfal/shoes: A multi-protocol proxy server written in Rust (HTTP, HTTPS, SOCKS5, Vmess, Vless, Shadowsocks, Trojan, Snell)
GitHub - eigerco/beerus: A stateless trustless Starknet light client in Rust 🦀
GitHub - eigerco/beerus: A stateless trustless Starknet light client in Rust 🦀
GitHub - quilt/etk: evm toolkit
GitHub - quilt/etk: evm toolkit
GitHub - pop-os/system76-power: System76 Power Management
GitHub - pop-os/system76-power: System76 Power Management
GitHub - Limeth/ethaddrgen: Custom Ethereum vanity address generator made in Rust
GitHub - Limeth/ethaddrgen: Custom Ethereum vanity address generator made in Rust
The Tor Project / Core / Arti · GitLab
The Tor Project / Core / Arti · GitLab
Production
Production
Rust
More on Rust

Programming Tips & Tricks

Code smarter, not harder—insider tips and tricks for developers.

Error Solutions

Turn frustration into progress—fix errors faster than ever.

Shortcuts

The art of speed—shortcuts to supercharge your workflow.
  1. Collections 😎
  2. Frequently Asked Question's 🤯

Tools

available to use.

Made with ❤️

to provide resources in various ares.