MCPcopy Index your code
hub / github.com/EMachad0/YAGBER

github.com/EMachad0/YAGBER @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
964 symbols 1,847 edges 144 files 59 documented · 6%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

YAGBER

Rust Tests Clippy License

Yet Another Game Boy Emulator in Rust

YAGBER is a Game Boy emulator written in Rust.

Currently it only runs from the command line, no binary is provided yet.

cargo run --release path/to/rom.gb

Demos

Boot Gif

Video Demos (Click to go to Youtube)

Tetris

Pokemon Yellow

Game Support

YAGBER supports cartridges without MBCs(Memory Bank Controllers) or with MBCs 1, 2, 3 or 5. This account to the vast majority of oficially released game boy color games but there are other exotic games that use other MBCs types and thus are not yet supported.

See docs/compatibility.md for more information, including a list with imcompatible games.

Testing

This emulator is tested against a set of test ROMs that were verified to work in real hardware.

It passes all instruction tests from the Blaarg's test ROMs.

See docs/testing.md for more information about the tests.

See docs/scripts.md for more information about running the scripts present in the scripts directory.

Extension points exported contracts — how you extend this code

Memory (Interface)
(no doc) [7 implementers]
crates/memory/src/memory.rs
Plugin (Interface)
(no doc) [11 implementers]
crates/app/src/plugin.rs
Mbc (Interface)
(no doc) [6 implementers]
crates/memory/src/cartridges/mbc/mod.rs
Component (Interface)
(no doc) [18 implementers]
crates/app/src/components/component.rs
AudLen (Interface)
(no doc) [4 implementers]
crates/memory/src/io_registers/audlen.rs
Runner (Interface)
(no doc) [5 implementers]
crates/app/src/runners/runner.rs
Register (Interface)
(no doc) [3 implementers]
crates/memory/src/register.rs
Downcastable (Interface)
(no doc) [1 implementers]
crates/app/src/downcast.rs

Core symbols most depended-on inside this repo

address
called by 60
crates/memory/src/interrupt.rs
read
called by 46
crates/memory/src/bus.rs
address
called by 45
crates/memory/src/io_registers/io_type.rs
with_plugin
called by 40
crates/app/src/emulator.rs
set_h
called by 39
crates/cpu/src/registers.rs
flags_mut
called by 38
crates/cpu/src/registers.rs
set_n
called by 37
crates/cpu/src/registers.rs
set_c
called by 35
crates/cpu/src/registers.rs

Shape

Method 729
Class 131
Function 55
Enum 40
Interface 9

Languages

Rust100%

Modules by API surface

crates/cpu/src/registers.rs39 symbols
crates/ppu/src/ppu.rs28 symbols
crates/app/src/emulator.rs27 symbols
crates/cpu/src/cpu.rs24 symbols
crates/app/src/components/component_bus.rs20 symbols
crates/memory/src/io_registers/stat.rs19 symbols
crates/memory/src/io_registers/audlen.rs19 symbols
crates/memory/src/io_registers/audena.rs19 symbols
crates/cpu/src/instructions/instruction.rs18 symbols
crates/timer/src/timer.rs17 symbols
crates/cpu/src/alu/alu8.rs17 symbols
crates/memory/src/io_registers/audenv.rs16 symbols

For agents

$ claude mcp add YAGBER \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact