Skip to content

Latest commit

 

History

History
113 lines (87 loc) · 4.72 KB

README.md

File metadata and controls

113 lines (87 loc) · 4.72 KB

gaemboi

License

This is a Nintendo Game Boy emulator written in Rust. It aims to accurately emulate the functionality and behaviour of the original Game Boy hardware.

Features

  • CPU (Sharp LR35902)
  • Timing based on instruction cycles and timing registers
  • Support for (most common) Game Boy ROMs
  • Memory, registers and interrupts
  • Graphics
  • VRAM viewer
  • Audio
  • Audio channel visualizer
  • Save/Load game progress
  • Input handling
  • Gamepad support
  • Fast forward (Up to 4x)

Screenshots

Pokemon Intro Pokemon Idle

Getting Started

Prerequisites

Development

Clone the repository:

git clone https://github.com/mario-hess/gaemboi
  • Create a new branch
  • Make your changes
  • Submit a pull request

Usage

Drop a .gb file into the window or create a folder named 'roms' in the root directory, and place your rom in there. Run the emulator with a specified ROM file:

cargo run --release -- <rom_file_name>

Replace <rom_file_name> with the name of your Game Boy ROM file (.gb).

Keybindings

Keybindings

Test Results

CPU (Blargg's Test ROMs)

  • 01-special.gb
  • 02-interrupts.gb
  • 03-op sp,hl.gb
  • 04-op r,imm.gb
  • 05-op rp.gb
  • 06-ld r,r.gb
  • 07-jr,jp,call,ret,rst.gb
  • 08-misc instrs.gb
  • 09-op r,r.gb
  • 10-bit ops.gb
  • 11-op a,(hl).gb
  • instr_timing.gb

PPU (dmg-acid2 by Matt Currie)

Status Failure Example Failure Description Functionality Tested
✔️ failure image Nose missing Object Palette (bit 4)
✔️ failure image Nose tiles flipped, right eyelash flipped Object Horizontal Flip (bit 5)
✔️ failure image Nose tiles filpped, mouth straight, eye whites bottom left wrong Object Vertical Flip (bit 6)
✔️ failure image Eye whites left half wrong Object to Background Priority (bit 7)
✔️ failure image Hair visible Background Enable (bit 0)
✔️ failure image Tongue visible Object Enable (bit 1)
✔️ failure image Half of mouth missing Object Size (bit 2)
✔️ failure image Footer missing Background Tile Map (bit 3)
✔️ failure image Eye whites top left quadrant wrong Background/Window Tile Data (bit 4)
✔️ failure image Half of footer missing Window Enable (bit 5)
✔️ failure image Right chin missing Window Tile Map (bit 6)
✔️ failure image Eye displayed instead of right chin Window internal line counter
✔️ failure image Left mole visible Object Priority Lower X Coordinate
✔️ failure image Right mole visible Object Priority Same X Coordinate
✔️ failure image Hello World missing exclaimation mark (!) 10 object per line limit
✔️ failure image Half of mouth missing Bit 0 of tile index for 8x16 objects should be ignored

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments