Emu198x
Cycle-accurate emulators for vintage machines
Emu198x is one of the sibling projects in the 198x family — and the one Code198x leans on for accuracy. It builds emulators for vintage machines in Rust, modelling the real hardware directly — pin-level CPU interfaces, system timing, video, audio, DMA and peripherals — rather than faking the parts that are hard. If a hardware path isn't modelled accurately enough yet, the machine stays honestly incomplete rather than pretending.
What it runs
Six primary systems run as full desktop apps with real software and green CPU test oracles: the ZX Spectrum (11 variants), Commodore 64, NES, Commodore Amiga (OCS/ECS/AGA — Workbench 3.1 boots to a clean desktop), Game Boy, and Dragon 32. Another 22 machines — Atari, Acorn, MSX, Sega, Oric, ZX80/81, Sord M5 and more — run headlessly today while their native windows are built out.
How it's used
Each system is a small binary. The same machine can open in a native window, run headlessly for a screenshot, or be driven programmatically — including over an MCP server, so an agent can boot it and inspect any chip. A few illustrative commands (the full flag set and every system are on GitHub):
Boot a machine in a window
cargo run --release -p emu198x-spectrum -- \
--rom 48.rom --tape game.tzx --autoload-tape Capture a screenshot headlessly (CI, docs)
cargo run --release -p emu198x-nes --no-default-features -- \
--rom game.nes --frames 300 --screenshot nes.png Drive it from an agent or script over MCP
cargo run --release -p emu198x-atari-800xl -- --mcp Why it's in the family
Accuracy is the point. When a Code198x Pattern Library routine claims "this works on real hardware", that claim has to survive a cycle-accurate emulator — which is exactly what Emu198x is built to be. It's its own project with its own roadmap, used by Code198x among others — not a Code198x component.