Giter Site home page Giter Site logo

ebell495 / boytacean Goto Github PK

View Code? Open in Web Editor NEW

This project forked from joamag/boytacean

0.0 0.0 0.0 18.23 MB

A GB emulator that is written in Rust ๐Ÿฆ€!

Home Page: https://boytacean.joao.me

License: Apache License 2.0

JavaScript 0.10% Python 0.17% Rust 84.35% TypeScript 14.36% CSS 0.76% HTML 0.15% Dockerfile 0.11%

boytacean's Introduction

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

boytacean's People

Contributors

ebell495 avatar joamag avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.