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.
- 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)
Clone the repository:
git clone https://github.com/mario-hess/gaemboi
- Create a new branch
- Make your changes
- Submit a pull request
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).
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- Pan Docs - Comprehensive Game Boy technical reference
- Awesome Game Boy Development - A curated list of Game Boy development resources
- Rust Programming Language - Official website for the Rust programming language