/rustella

Atari 2600 Emulator written in Rust.

Primary LanguageAssemblyOtherNOASSERTION

rustella - Atari 2600 Emulator written in Rust

CDP Vercel Deploy License: CC BY-NC-SA 4.0

Built with rust-analyzer.vs (free Visual Studio 2022 Extension)

What?

Atari

Why?

Why not?

Development Principles

  • Clean room implementation
    • Not allowed: Referring to any existing emulator code or design.
    • Allowed: Datasheets / tutorials / discussions on the web that is not emulator code / design.
  • Emulation in no_std + safe Rust, WebAsm hostable.
  • Test driven development.
  • v1: Just sufficient to play the very basic games.
  • v1: Web front-end with hardware debugger.

Progress

  • CPU
    • Clock cycle accurate NMOS 6502 / 6507 emulation
    • Hardware debugger
    • Passing HCM & Klaus test suites
    • Undocumented opcodes
  • RIOT
    • RAM + memory shadowing / mapping
    • Timer
    • Joysticks
    • Sound
    • Bank switching
  • TIA
    • Background + playfield
    • Player sprites
    • Missile sprites
    • Ball sprite
  • TV
    • NTSC Webasm-in-React on browser
    • PAL/SECAM
  • Run early Atari games
  • Run advanced Atari games

Specs

  • CPU: 6507, 1.19 MHz
  • Memory: RAM - 128 Bytes in VLSI, ROM - 4K max
  • Graphics: A custom chip named Stella and a graphics clock that run at 1.19 MHz
  • Storage Method: Carts
  • Input: 2 Joystick ports

References