guydunton/rust-gb

RustGB is a gameboy emulator written in Rust

RustGB

. The goal of the project is to learn how the Gameboy works while learning Rust.

Current State :warning:

The project connect yet run any games. I am currently working through the opcode that form the bootloader while I experiment with Rust and emulator design.

Build :hammer:

The project uses standard Rust tools so to build run the following command:

# Builds a debug build
cargo build

# To build in release mode (recommended for audio)
cargo build --release

If the build fails on Linux due to missing dependencies see below

Run :running:

Run the following commands to start the emulator:

# Run in debug mode
cargo run

# Run in release mode (recommended for audio)
cargo run --release

Debugger :mag_right:

The emulator also contains a partial debugger with features such as:

  • Step to next instruction
  • Continue
  • Breakpoints
  • Inspect memory
  • Show Registers & Flags
  • Show audio registers

To start the emulator with the debugger on run the following command:

cargo run -- -d

The emulator will start and pause on the first instruction. Additionally, audio output is disabled when running under the debugger.

Resources :books:

For helpful resources I've used while developing click here

Building on Linux :penguin:

To build on Linux (tested on ubuntu) you must install some extra dependencies for the sound library. To install the dependencies run the following command for your distro:

Distribution Command
Debian apt install -y libasound2-dev libudev-dev pkg-config
Redhat yum install alsa-lib-devel

Todo :clipboard:

  • Clean up debug cli
  • Clean up opcodes directory
  • Debug should continue by default
  • Clean up PPU code
  • Add test for multiple shades in tile
  • Support palette correctly
  • Remove cowboy breakpoint code
  • Add proper debug breakpoints
  • Get screen scrolling working
  • Basic sound support
  • Continue adding support for bootloader commands.
  • Begin implementing functionality for Tetris
  • Improve audio implementation
  • Benchmark each opcode to make sure they take less time than they would on a real GB
  • Fix callback system within opcodes

Information - Updated Jun 19, 2022

Stars: 1
Forks: 0
Issues: 1

Repositories & Extras

RGB (Rust Game Boy) is a simple emulator for the original game boy and the...

RGB (Rust Game Boy) is a simple emulator for the original game boy and the color game boy

RGB (Rust Game Boy) is a simple emulator for the original game boy and the...

A Gameboy emulator written in Rust

Can launch and play simple games

A Gameboy emulator written in Rust

An open source Gameboy emulator written in Rust that can use a command line interface...

An open source Gameboy emulator written in Rust that can use a command line interface as a screen and input device

An open source Gameboy emulator written in Rust that can use a command line interface...

Frosty is a GameBoy emulator written in rust

You can also hold TAB to enable turbo, which will disable the frame limiter

Frosty is a GameBoy emulator written in rust

🕹️ A work-in-progress GameBoy emulator written in Rust

This project is just a work-in-progress

🕹️ A work-in-progress GameBoy emulator written in Rust

Mizu is an accurate Gameboy emulator built in Rust

Emulating The original gameboy (DMG) and gameboy color hardware

Mizu is an accurate Gameboy emulator built in Rust

Rust GameBoy Advanced Emulator

Building this project on linux requires cmake and gtk3

Rust GameBoy Advanced Emulator

A Rust GameBoy emulator!

TetrisZelda: Link's Awakening

A Rust GameBoy emulator!

CorrodedBoy, a Gameboy Emulator written in Rust

Try out the emulator online here!

CorrodedBoy, a Gameboy Emulator written in Rust
Facebook Instagram Twitter GitHub Dribbble
Privacy