boytacean


Nameboytacean JSON
Version 0.10.2 PyPI version JSON
download
home_pagehttps://boytacean.joao.me
SummaryA Game Boy emulator that is written in Rust
upload_time2024-06-07 19:13:26
maintainerNone
docs_urlNone
authorJoão Magalhães
requires_pythonNone
licenseApache License, Version 2.0
keywords gameboy emulator rust
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # [Boytacean](https://boytacean.joao.me)

A Game Boy emulator that is written in Rust 🦀.

<a href="https://boytacean.joao.me" target="_blank"><img src="https://github.com/joamag/boytacean/raw/master/res/videos/002-mario.low.gif" width="360" /></a>

**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](https://www.libsdl.org) and [Libretro](https://www.libretro.com) front-ends
* Audio, with a pretty accurate APU
* Serial Data Transfer ([Link Cable](https://en.wikipedia.org/wiki/Game_Link_Cable)) support
* Game Boy Printer emulation
* Support for multiple MBCs: MBC1, MBC3, and MBC5
* Save state support using the [BESS Specification](https://github.com/LIJI32/SameBoy/blob/master/BESS.md) for cross-compatibility with other emulators
* Cheat support using [Game Genie](https://en.wikipedia.org/wiki/Game_Genie) and [GameShark](https://pt.wikipedia.org/wiki/GameShark) codes
* Variable CPU clock speed
* Accurate PPU - passes [dmg-acid2](https://github.com/mattcurrie/dmg-acid2) and [cgb-acid2](https://github.com/mattcurrie/cgb-acid2) tests

For the Web front-end...

* Mobile first experience
* Transparent RAM saving using [Web Storage API](https://developer.mozilla.org/docs/Web/API/Window/localStorage)
* GamePad support using [Web Gamepad API](https://developer.mozilla.org/docs/Web/API/Gamepad_API)
* Unobstructive and effective on-screen GamePad
* Rumble emulation and haptic feedback
* Cool bespoke display palettes built by [TheWolfBunny64](https://www.deviantart.com/thewolfbunny).
* Fullscreen browser mode
* Debug mode - VRAM and registers

What's still missing...

* Low-level cycle accurate system emulation
* [Game Boy Camera](https://en.wikipedia.org/wiki/Game_Boy_Camera) emulation
* NetPlay gaming support

## Deployments

| Provider   | Stable  | URL                                                              |
| ---------- | ------- | ---------------------------------------------------------------- |
| Cloudflare | `True`  | [boytacean.joao.me](https://boytacean.joao.me)                   |
| Cloudflare | `True`  | [boytacean.pages.dev](https://boytacean.pages.dev)               |
| Cloudflare | `True`  | [prod.boytacean.pages.dev](https://prod.boytacean.pages.dev)     |
| Cloudflare | `True`  | [stable.boytacean.pages.dev](https://stable.boytacean.pages.dev) |
| Cloudflare | `False` | [master.boytacean.pages.dev](https://master.boytacean.pages.dev) |

## Build

### Library

```bash
cargo build
```

### Python Library

```bash
pip install .
```

or

```bash
python setup.py install
```

### WASM for Node.js

```bash
cargo install wasm-pack
wasm-pack build --release --target=nodejs -- --features wasm
```

### WASM for Web

```bash
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](https://github.com/joamag/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](https://www.deviantart.com/thewolfbunny).

## Inspiration

To get some information about the resources that inspired me through the emulation creation journey check [Inspiration](doc/inspiration.md).

## 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](CONTRIBUTING.md). 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](http://www.apache.org/licenses/).

## Build Automation

[![Build Status](https://github.com/joamag/boytacean/workflows/Main%20Workflow/badge.svg)](https://github.com/joamag/boytacean/actions)
[![crates Status](https://img.shields.io/crates/v/boytacean)](https://crates.io/crates/boytacean)
[![npm Status](https://img.shields.io/npm/v/boytacean.svg)](https://www.npmjs.com/package/boytacean)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://www.apache.org/licenses/)

            

Raw data

            {
    "_id": null,
    "home_page": "https://boytacean.joao.me",
    "name": "boytacean",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "gameboy emulator rust",
    "author": "Jo\u00e3o Magalh\u00e3es",
    "author_email": "joamag@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/a7/a9/b71dbff74860b50f56fe87ae74058d8c471b9e269b74d8a69bf8676e6fc0/boytacean-0.10.2.tar.gz",
    "platform": null,
    "description": "# [Boytacean](https://boytacean.joao.me)\n\nA Game Boy emulator that is written in Rust \ud83e\udd80.\n\n<a href=\"https://boytacean.joao.me\" target=\"_blank\"><img src=\"https://github.com/joamag/boytacean/raw/master/res/videos/002-mario.low.gif\" width=\"360\" /></a>\n\n**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... \ud83d\udd79\ufe0f\n\n## Features\n\n* Game Boy (DMG) and Game Boy Color (CGB) emulation\n* Simple navigable source-code\n* Web, [SDL](https://www.libsdl.org) and [Libretro](https://www.libretro.com) front-ends\n* Audio, with a pretty accurate APU\n* Serial Data Transfer ([Link Cable](https://en.wikipedia.org/wiki/Game_Link_Cable)) support\n* Game Boy Printer emulation\n* Support for multiple MBCs: MBC1, MBC3, and MBC5\n* Save state support using the [BESS Specification](https://github.com/LIJI32/SameBoy/blob/master/BESS.md) for cross-compatibility with other emulators\n* Cheat support using [Game Genie](https://en.wikipedia.org/wiki/Game_Genie) and [GameShark](https://pt.wikipedia.org/wiki/GameShark) codes\n* Variable CPU clock speed\n* Accurate PPU - passes [dmg-acid2](https://github.com/mattcurrie/dmg-acid2) and [cgb-acid2](https://github.com/mattcurrie/cgb-acid2) tests\n\nFor the Web front-end...\n\n* Mobile first experience\n* Transparent RAM saving using [Web Storage API](https://developer.mozilla.org/docs/Web/API/Window/localStorage)\n* GamePad support using [Web Gamepad API](https://developer.mozilla.org/docs/Web/API/Gamepad_API)\n* Unobstructive and effective on-screen GamePad\n* Rumble emulation and haptic feedback\n* Cool bespoke display palettes built by [TheWolfBunny64](https://www.deviantart.com/thewolfbunny).\n* Fullscreen browser mode\n* Debug mode - VRAM and registers\n\nWhat's still missing...\n\n* Low-level cycle accurate system emulation\n* [Game Boy Camera](https://en.wikipedia.org/wiki/Game_Boy_Camera) emulation\n* NetPlay gaming support\n\n## Deployments\n\n| Provider   | Stable  | URL                                                              |\n| ---------- | ------- | ---------------------------------------------------------------- |\n| Cloudflare | `True`  | [boytacean.joao.me](https://boytacean.joao.me)                   |\n| Cloudflare | `True`  | [boytacean.pages.dev](https://boytacean.pages.dev)               |\n| Cloudflare | `True`  | [prod.boytacean.pages.dev](https://prod.boytacean.pages.dev)     |\n| Cloudflare | `True`  | [stable.boytacean.pages.dev](https://stable.boytacean.pages.dev) |\n| Cloudflare | `False` | [master.boytacean.pages.dev](https://master.boytacean.pages.dev) |\n\n## Build\n\n### Library\n\n```bash\ncargo build\n```\n\n### Python Library\n\n```bash\npip install .\n```\n\nor\n\n```bash\npython setup.py install\n```\n\n### WASM for Node.js\n\n```bash\ncargo install wasm-pack\nwasm-pack build --release --target=nodejs -- --features wasm\n```\n\n### WASM for Web\n\n```bash\ncargo install wasm-pack\nwasm-pack build --release --target=web --out-dir=frontends/web/lib -- --features wasm\ncd frontends/web\nnpm install && npm run build\ncd dist && python3 -m http.server\n```\n\n## Web front-end\n\nThe Web front-end makes use of [EmuKit](https://github.com/joamag/emukit) which is a UI toolkit that provides the required infrastructure for the creation\nof interfaces for emulation in a Web context.\n\n### Configuration\n\nYou can use some GET parameters to control the initial behavior of the emulator.\n\n| Parameter    | Type    | Description                                                                                    |\n| ------------ | ------- | ---------------------------------------------------------------------------------------------- |\n| `rom_url`    | String  | The URL from which the initial ROM is going to be loaded, should support CORS.                 |\n| `url`        | String  | The same as `rom_url`.                                                                         |\n| `fullscreen` | Boolean | If the emulator should start in fullscreen mode.                                               |\n| `fs`         | Boolean | The same as `fullscreen`.                                                                      |\n| `debug`      | Boolean | If the \"debugger\" should start visible.                                                        |\n| `keyboard`   | Boolean | If the on-screen keyboard should start visible.                                                |\n| `palette`    | String  | The name of the palette to be set at startup( eg: `christmas`, `hogwards`, `mariobros`, etc.). |\n\n## Palettes\n\nThe palettes offered in the web version were provided by [TheWolfBunny64](https://www.deviantart.com/thewolfbunny).\n\n## Inspiration\n\nTo get some information about the resources that inspired me through the emulation creation journey check [Inspiration](doc/inspiration.md).\n\n## Contributing\n\nLove 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.\n\nTo get started, please take a look at our [Contributing Guidelines](CONTRIBUTING.md). Whether you're fixing bugs, adding new features, or helping with documentation, every contribution is valuable and greatly appreciated!\n\nDon't hesitate to reach out if you have any questions. Join us in making Boytacean the best Gameboy emulator out there!\n\n## License\n\nBoytacean is currently licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/).\n\n## Build Automation\n\n[![Build Status](https://github.com/joamag/boytacean/workflows/Main%20Workflow/badge.svg)](https://github.com/joamag/boytacean/actions)\n[![crates Status](https://img.shields.io/crates/v/boytacean)](https://crates.io/crates/boytacean)\n[![npm Status](https://img.shields.io/npm/v/boytacean.svg)](https://www.npmjs.com/package/boytacean)\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://www.apache.org/licenses/)\n",
    "bugtrack_url": null,
    "license": "Apache License, Version 2.0",
    "summary": "A Game Boy emulator that is written in Rust",
    "version": "0.10.2",
    "project_urls": {
        "Homepage": "https://boytacean.joao.me"
    },
    "split_keywords": [
        "gameboy",
        "emulator",
        "rust"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a7a9b71dbff74860b50f56fe87ae74058d8c471b9e269b74d8a69bf8676e6fc0",
                "md5": "0fe3fb0dabc7b62d61c0436c7e5d88ba",
                "sha256": "fa854d1f96b5d46a37842d71630a260f43a69fb242d6c602a9080a918d4f07f6"
            },
            "downloads": -1,
            "filename": "boytacean-0.10.2.tar.gz",
            "has_sig": false,
            "md5_digest": "0fe3fb0dabc7b62d61c0436c7e5d88ba",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 138475,
            "upload_time": "2024-06-07T19:13:26",
            "upload_time_iso_8601": "2024-06-07T19:13:26.680322Z",
            "url": "https://files.pythonhosted.org/packages/a7/a9/b71dbff74860b50f56fe87ae74058d8c471b9e269b74d8a69bf8676e6fc0/boytacean-0.10.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-07 19:13:26",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "boytacean"
}
        
Elapsed time: 0.70952s