Skip to content

griffi-gh/yarge

Repository files navigation

logo yarge - yet another rust gameboy emulator

Yarge is an open source (licensed under LGPL) Nintendo Gameboy emulator written in Rust and focused on accuracy and performance.
It includes cycle-accurate emulation of the GBZ80 CPU and PPU FIFO.
The emulator is built on a modular architecture, isolating the core from frontends (which can be used as a regular Rust library).
SDL2 frontend is fully-featured with intuitive UI and various quality-of-life features such as save slots.

Download

Product Downloads
yarge-frontend-sdl Windows logo Linux logo Debian logo
yarge-frontend-desktop
(deprecated)
Windows logo Linux logo Debian logo
yarge-frontend-desktop is no longer actively maintained, but I'm keeping it around because it's debugging capabilities are still much better then those in yarge-frontend-sdl

Other options:

Screenshots

Pocket Monsters: Green Super Mario Land
Tetris The Legend of Zelda: Link's Awakening

Features

Features MBC (Cartridge) types
Feature Supported Type Supported
Display (PPU) ✔️ ROM ONLY ✔️
Input ✔️ MBC1 ✔️
Sound (APU) ✔️(WIP) MBC2
Link cable/Serial ❌(STUB) MBC3 ✔️
GBC support MBC5
Cartridge ➡️ MBC6
MBC7
MMM01
POCKET CAMERA
BANDAI TAMA5
HuC3
HuC1

Tests

These tests are run automatically after each commit.

Test suiteTest nameResult
Aciddmg_acid2✔️
Mooneyeacceptance/bits/mem_oam✔️
Mooneyeacceptance/bits/reg_f✔️
Mooneyeacceptance/bits/unused_hwio_GS
Mooneyeacceptance/instr/daa✔️
Mooneyeacceptance/interrupts/ie_push
Mooneyeacceptance/oam_dma/basic✔️
Mooneyeacceptance/oam_dma/reg_read✔️
Mooneyeacceptance/oam_dma/sources_GS✔️
Mooneyeacceptance/timer/div_write✔️
Mooneyeacceptance/timer/rapid_toggle
Mooneyeacceptance/timer/tim00✔️
Mooneyeacceptance/timer/tim00_div_trigger✔️
Mooneyeacceptance/timer/tim01✔️
Mooneyeacceptance/timer/tim01_div_trigger✔️
Mooneyeacceptance/timer/tim10✔️
Mooneyeacceptance/timer/tim10_div_trigger✔️
Mooneyeacceptance/timer/tim11✔️
Mooneyeacceptance/timer/tim11_div_trigger✔️
Mooneyeacceptance/timer/tima_reload✔️
Mooneyeacceptance/timer/tima_write_reloading
Mooneyeacceptance/timer/tma_write_reloading