• Stars
    star
    544
  • Rank 81,699 (Top 2 %)
  • Language
    Rust
  • License
    Apache License 2.0
  • Created about 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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 and SDL 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
  • Variable CPU clock speed
  • Accurate PPU - passes dmg-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
  • Cool bespoke display palettes built by TheWolfBunny64.
  • Fullscreen browser mode
  • Debug mode - VRAM and registers

What's missing...

  • Game Boy Color (GBC) emulation

Deployments

Provider Stable URL
Cloudfare True boytacean.joao.me
Cloudfare True boytacean.pages.dev
Cloudfare True prod.boytacean.pages.dev
Cloudfare True stable.boytacean.pages.dev
Cloudfare False master.boytacean.pages.dev

Build

Library

cargo 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=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.

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.
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.).

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.

License

Boytacean is currently licensed under the Apache License, Version 2.0.

Build Automation

Build Status crates Status npm Status License

More Repositories

1

ptorrent

Simple HTTP tracker for torrent
PHP
13
star
2

emukit

Emulation UI toolkit written in Typescript with the help of React.js πŸ•ΉοΈ
TypeScript
6
star
3

joamag

Personal repository for personal stuff πŸ§‘πŸ»β€πŸ’»
5
star
4

mingus

A small and simple VM for calculus
C
5
star
5

joamag-neo

The new website for joamag
Smarty
5
star
6

web-deno

Small deno test
TypeScript
5
star
7

aplayer

Simple audio player using avlib ao libao
C++
4
star
8

binac

A simple operative system kernel
C
4
star
9

viewer

Simple 3D model viewer created with three.js.
JavaScript
4
star
10

marinator

Get your self a Marina bot
Python
4
star
11

chip-ahoyto

CHIP-8 emulator written in Rust πŸ¦€!
Rust
4
star
12

pandas

Loads of pandas data from China with awesome data
Jupyter Notebook
3
star
13

scully

Dummy driver for linux in memory replacement
C
3
star
14

goers

Random set of tests under the go language
Go
3
star
15

hello-node

Simple native node.js extension
JavaScript
3
star
16

hello-asm

Simple x86 ASM example using NASM
Assembly
3
star
17

hello-kotlin

Simple Kotlin test
Kotlin
3
star
18

cleanup-hosted

Simple GitHub action to cleanup an hosted GitHub Runner environment
JavaScript
3
star
19

snescape

A SNES emulator that is crafted in Rust πŸ¦€!
2
star
20

doers

Extra project associated with the goers project
Go
2
star
21

snippets

Small set of snippets for random stuff
2
star
22

hello-scala

Simple Hello World application in Scala
Scala
2
star
23

huffman

Simple huffman encoder using viriatum commons library
C
2
star
24

hello-solidity

Simple set of tests with Solidity
JavaScript
2
star
25

weddy

Wedding image management system
Python
2
star
26

generator

Simple project for random number generation (golang example)
Go
2
star
27

examples-java

Set of Java code examples
Java
2
star
28

boytacean-vscode

Visual Studio Code extension for Game Boy files 🧩 + πŸ•ΉοΈ
1
star
29

gb-demos

Random set of demo ROMs for the Game Boy πŸ•ΉοΈ
C
1
star
30

test-queue-kodiak

Sample repository to test Kodiak
Python
1
star
31

battlerust

A Battleship game implementation in Rust πŸ¦€
Rust
1
star
32

test-queue-mergify

Sample repository to test Mergify
Python
1
star
33

test-queue-github

Sample repository to test GitHub
Python
1
star
34

test-queue-trunk

Sample repository to test Trunk.io
Python
1
star
35

battleship

Simple Battleship game written in Python 🐍
Python
1
star
36

dropbox-notifier

Files changed notifier for Dropbox accounts
Python
1
star
37

test-queue-aviator

Sample repository to test Aviator
Python
1
star