https://github.com/ioncodes/ayyboy
DMG and GBC emulator with sex toy rumble support written in Rust
https://github.com/ioncodes/ayyboy
emulator gameboy gameboy-color gb gbc lovense nintendo
Last synced: about 1 month ago
JSON representation
DMG and GBC emulator with sex toy rumble support written in Rust
- Host: GitHub
- URL: https://github.com/ioncodes/ayyboy
- Owner: ioncodes
- Created: 2024-06-19T22:41:19.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-08-21T17:08:56.000Z (over 1 year ago)
- Last Synced: 2025-12-13T09:54:57.168Z (3 months ago)
- Topics: emulator, gameboy, gameboy-color, gb, gbc, lovense, nintendo
- Language: Rust
- Homepage:
- Size: 64.9 MB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ayyboy
Yet another GameBoy and GameBoy Color emulator! A lot of the information had been figured out by reverse engineering software and hardware, complemented by the Pandocs and various online sources/blogs.
The project is not in a perfect state but it works well with my childhood games. I would not have been able to kick things off this fast without the amazing help of the people over at the [Emulation Development](https://discord.com/invite/dkmJAes) Discord server.
| Pokemon Red Version (DMG) | Pokemon Gold Version (GBC) | Legend of Zelda - Link's Awakening DX (GBC) | Déjà Vu I & II: The Casebooks of Ace Harding (GBC) | Debug View (GBC) |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|  |  |  |  |  |
## Features
* DMG and GBC support (incl. double speed mode)
* Support for ROM, MBC1, MBC3 and MBC5 (although none of the mappers I'd consider to be in a 100% functional state)
* MBC5 rumble pak support through Lovense sex toys
* Sound (mostly taken from [this blog](https://nightshade256.github.io/2021/03/27/gb-sound-emulation.html) and [this emulator](https://github.com/NightShade256/Argentum))
* RAM-based save games (RAM is simply written to disk on emulator exit and loaded on startup if a `.sav` file exists)
* Built-in open-source boot ROMs for [DMG](https://github.com/Hacktix/Bootix) and [GBC](https://github.com/LIJI32/SameBoy/tree/master/BootROMs)
* Scanline based renderer (no pixel FIFO)
* Various debug views
* ZIP file support
You might be wondering why I bothered implementing sex toy support. I do not have a clear answer to this question! I wondered how I could implement rumble support and since a PC cannot (usually?) vibrate, my brain came up with a vibrator feature.
Lovense support is not compiled-in by default, however, it is available through the `nsfw` feature flag during compilation. Enabling this flag will force the emulator to start searching for nearby Lovense BLE products and connect to the first that matches a specific regex if rumble support is detected for a game.
Open me to see a demo of a game controlling the Lush 2
https://github.com/user-attachments/assets/eb051257-8fdc-421d-9159-86bf55ab8cbe
## Usage
Compile the emulator yourself or download a [release](https://github.com/ioncodes/ayyboy/releases). Note that providing a bootrom is completely optional and that `--log-to-file` will enable instruction tracing be default.
```
Usage: ayyboy.exe [OPTIONS]
Arguments:
Options:
--bios
--log-to-file
-h, --help Print help
```
## Testing
* The CPU has been verified against the following tests and passes all of them:
* [SM83 SingleStepTests](https://github.com/SingleStepTests/sm83)
* [cpu_instrs.gb](https://github.com/retrio/gb-test-roms)
* The PPU has been tested with `dmg-acid2` and `cgb-acid2` and passes both
| dmg-acid2 | cgb-acid2 |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|  |  |