Skip to content

ngraf3255/RbGB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

124 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rbgb

A simple Game Boy emulator written in Rust.

Features

  • CPU emulation (Sharp LR35902)
  • Shared Memory bank
  • Basic graphics rendering
  • ROM loading
  • Dependency free (emulator lib)

Repo Basics

Before running this project ensure SDL2 is installed if you are not running with docker otherwise these steps will fail.

  1. Clone the repository:

    git clone https://github.com/Hyphen325/rbgb.git
    cd rbgb
  2. Build the project:

    cargo build --release
  3. Run the emulator:

    cargo run --release --features gui
  4. Select a ROM
    Load a rom by pressing L on the opened window for the ROM path prompt

Requirements

  • Rust (latest stable)
  • SDL2 or Docker
  • CMake

Running Tests

To build and run tests locally:

  1. Clone the repository:

    git clone https://github.com/Hyphen325/rbgb.git
    cd rbgb
  2. Run the tests:

    cargo test

Outstanding Work

  • Implement handling of poisoned Mutexes
  • Implement full multithreading
  • Modify register system to allow them to be set more gracefully
  • Implement library features for emulator and drop sdl to allow for apps to implement on top of the emulator

Acknowledgements

Much of this was written and based off of Codeslinger Gameboy. I needed this guide to get through most of this. Additionally, I learned about how the RZ80 worked from RZ80 and modified the CPU implementation of the LR35902 from rboy. Getting the CPU emulation to work was the hardest part of this project. Additionally this project includes the debug_println macro from the debug_print crate in order to make it dependency free for the library.

License

MIT

About

Gameboy emulator written in rust

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •