rbgb 0.1.0

A basic and rough gameboy emulator
Documentation
# rbgb


A simple Game Boy emulator written in Rust.

## Features


- CPU emulation (Sharp LR35902)
- Shared Memory bank
- Basic graphics rendering
- ROM loading

## 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:

    ```bash
    git clone https://github.com/Hyphen325/rbgb.git

    cd rbgb

    ```

2. Build the project:

    ```bash
    cargo build --release

    ```

3. Run the emulator:

    ```bash
    cargo run --release

    ```

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:

    ```bash
    git clone https://github.com/Hyphen325/rbgb.git

    cd rbgb

    ```

2. Run the tests:

    ```bash
    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](http://www.codeslinger.co.uk/pages/projects/gameboy/beginning.html). I needed this guide to get through most of this. Additionally, I learned about how the RZ80 worked from [RZ80](https://floooh.github.io/) and modified the CPU implementation of the LR35902 from  [rboy](https://github.com/mvdnes/rboy). Getting the CPU emulation to work was the hardest part of this project.

## License


MIT