Browse by type
(Note - Interrupt timing is currently more broken than intended, but it should be able to run Prehistorik Man now)

TL;DR - Drag and drop rom files into the window to load them. Only first-gen Game Boy games that use the MBC1 controller are supported - Game Boy Color roms will not work.
In step mode, up/down changes step granularity (frame/line/cycle) and left/right steps forward/back. Shift-right can be used to step over long instructions like loops and halts.
It's comparatively slow, though you can use it to play Game Boy games. It should run at full speed on most modern processors, with my current laptop running at about 2.5x realtime in fast mode.
MetroBoy is more like a Verilog simulation of a Game Boy that's been translated into C++. You can also think of it as being written in a subset of C++ that's designed to to be mechanically translated into synthesizable Verilog.
MetroBoy is part of a larger project named Metron, which is a C-to-Verilog translator based on LLVM that I'm still working on. Portions of MetroBoy have been validated by translating them from C to Verilog using Metron, translating that back to C using Verilator, then asserting that all the registers match up. MetroBoy usually runs between 3x-5x faster than the C->Verilog->Verilator->C version.
Left columns - CPU registers - Memory bus - DMA state - Timer state - PPU registers - PPU state - Sprite state - Disassemby
Center column - Gameboy screen - 'Oscilloscope' view showing memory accesses per cycle (see Gameboy::trace)
Right column - Tile memory - Tile map 0 - Tile map 1
$ claude mcp add metroboy \
-- python -m otcore.mcp_server <graph>