Skip to content

Navigation Menu

Sign in
Sign up
DoubleGate edited this page Jul 8, 2026 · 2 revisions

Welcome to the Rusty2600 Wiki

Rusty2600 is a cycle-accurate Atari 2600 (VCS) emulator written in pure Rust. It targets the Mesen2 / ares / higan accuracy bar: a master-clock lockstep scheduler running at TIA-color-clock resolution (3.579545 MHz NTSC), with the 6507 CPU advancing on every third clock and WSYNC/RDY beam-stalls freezing the CPU mid-cycle while the rest of the machine keeps running. It clears its bundled Klaus2m5 functional and decimal-mode oracles bit-exact and passes the trimmed SingleStepTests 6502 corpus 4,660/4,660 cases across all 233 opcodes, with the full ~10K-case-per-opcode corpus verified weekly in CI.

Race the beam. Get it exact.

Beyond reference accuracy, Rusty2600 is a real emulation platform: all 26 of the console's catalogued bankswitch schemes wired into automatic detection, a real debugger (live 6507/TIA/RIOT/memory panels, breakpoints, a standalone disassembler), a real RetroAchievements backend, save-states, rewind, and run-ahead, 2-player rollback netplay (direct-IP, STUN-assisted, and browser WebRTC), a Lua scripting engine, a growing shader stack (CRT scanline, NTSC composite YIQ decode, hqNx/xBRZ upscaling), and Android/iOS apps built on a shared UniFFI bridge.

All of this rests on a strict bit-determinism contract: same seed, ROM, and input sequence yield a bit-identical framebuffer and audio. The frontend is pure Rust (winit + wgpu + cpal + egui) with native binaries for Linux, macOS, and Windows, plus a WebAssembly build that runs in the browser.

Try it in your browser — no install required.


Why Rusty2600?

Rusty2600 combines accuracy-first emulation of one of the industry's oldest and most idiosyncratic consoles with modern tooling and the safety guarantees of Rust. The 2600 has no framebuffer of its own — the TIA races the electron beam and the program itself is responsible for timing every visible pixel — which makes cycle-exactness a correctness requirement, not a nice-to-have.

  • Reference-grade timing — an integer TIA-color-clock lockstep scheduler (not catch-up), the 6507 on every third clock, WSYNC/RDY beam-stalls modeled as a genuine sub-instruction freeze.
  • Determinism as a hard contract — same seed, ROM, and input sequence yield a bit-identical framebuffer and audio. This is what makes save-state round-trips, regression testing, TAS replay, and rollback netplay correct by construction.
  • An honesty gate, not a marketing number — every bankswitch scheme is classified Core / Curated / BestEffort; a BestEffort scheme can never silently back the accuracy oracle, enforced structurally by CI.
  • Safe, modular Rust — the chip stack (rusty2600-cpu, -tia, -riot, -cart, -core) is no_std + alloc, one-directional, and independently testable; the only unsafe lives behind the frontend/FFI boundary.

Wiki Navigation

Use the sidebar to navigate the documentation.

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /