github.com/Amjad50/gb-emu

Gameboy emulator in Rust

Open this visualization on its own page →

Contributors

1

Lines of Code

660

From

2020-11-16

To

2020-12-19

About Amjad50/gb-emu

Mizu is an accurate Game Boy emulator written in Rust that emulates both the original DMG hardware and Game Boy Color. The project passes most hardware tests and includes a comprehensive feature set including battery save support, accurate RTC emulation for the MBC3 mapper, and high-quality APU emulation outputting 48KHz audio. It supports multiple cartridge mappers (NoMapper, MBC1, MBC2, MBC3, and MBC5) as well as Game Boy Printer emulation, allowing users to save printed images to disk.

The emulator comes with an SFML-based graphical frontend that provides keyboard controls mapped to Game Boy buttons and additional features like adjustable emulation speed, save states that can be stored and loaded from numbered slots, and the ability to toggle individual audio channels. Save states are compressed using zstd and include cartridge verification via SHA256 hashing. The project includes a robust testing framework for continuous validation against official Game Boy test ROMs.

Mizu is distributed via crates.io and can be easily installed or built from source using Cargo. The project represents a thorough engineering effort in emulation accuracy, referencing authoritative documentation like Pandocs and incorporating lessons from cycle-accurate emulation research and the Mooneye test suite.

Share this video