Skip to content
/ rustyboy Public

Game Boy emulator implemented in Rust that runs in the browser, command-line terminal, and on desktop platforms

License

Notifications You must be signed in to change notification settings

bmoxb/rustyboy

Repository files navigation

rustyboy

rustyboy is a simple Game Boy emulator implemented in Rust. It is currently a WIP - the end goal is get Pokemon Red/Blue running. An emphasis is placed on understandable code over creating a super accurate emulator.

Project Structure

The Cargo workspace feature is used to keep the emulator itself separate from any particular rendering/window management/input handling frontend. All code relating to the emulator itself is found in the core/ directory, while particular usages of that core library are found in other directories (see the list of emulator frontends below).

Emulator Frontends

  • wgpu/ - Targets desktop platforms (Linux, Mac, Windows) and the browser (WASM + WebGPU) via pixels.
  • terminal/ - Execute the emulator inside a terminal with the Game Boy display expressed with a grid of Unicode characters.
  • gbdoctor/ - Run the emulator without a display and the CPU state logged in the format expected by the Game Boy Doctor tool. This frontend exists for development and testing purposes.

Roadmap

  • CPU
    • Registers and flags
    • Implement instructions
    • Interrupt handling
    • Pass all Blargg test ROMs
    • STOP instruction
  • Memory map
  • Timer
  • Cartridges
    • No MBC
    • MBC-1
    • MBC-5
  • Joypad input
  • Graphics
    • Draw background
    • Background scolling
    • Draw window
    • Draw sprites
    • Handle flipped sprites
    • Handle 8x16 sprites
    • Correct ordering of sprite and background tiles
  • Frontends
    • Desktop
    • Web
    • Terminal
  • Refactoring
    • Remove unnecessary dependencies
    • Simplify cartridge/MBC API
    • Make internal emulator state (e.g., CPU registers) publicly accessible
    • Remove GB Doctor part of public API
    • Tidy up and better document GPU code
    • Simplify cycle counting

Working Games

  • Tetris
  • Dr. Mario
  • The Legend of Zelda: Link's Awakening
  • Kirby's Dream Land
  • Super Mario Land
  • Pokemon Red/Blue

About

Game Boy emulator implemented in Rust that runs in the browser, command-line terminal, and on desktop platforms

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages