YABGE is a Gameboy emulator written in Rust currently under development. It is designed to be simple, easy to understand, and heavily tested. The goal of this project is to provide a clear and comprehensible implementation of a Gameboy emulator, with an emphasis on extensive unit and integration testing.
I started this repository because, not having a Comp-Sci background, I have pretty poor fundamentals in low-level computing and found it hard to get my foot in the door with regards to emulation. As I was scouring others' repositories, I found it hard to see what the intended result of many of the more complex computations were, so I decided to make my own, but with exceptionally extensive testing to make sure that the inner workings would be clear to anyone who needed some help themselves.
Very much a work in progress, open to the public for educational purposes.
- Simple Implementation: YABGE aims to provide a straightforward and easy-to-understand implementation of a Gameboy emulator.
- Testing Focus: The project places a strong emphasis on testing, with comprehensive unit and integration tests covering each instruction and component of the emulator with the goal of making it exceptionally clear how anyone could implement the same behaviors.
- Educational: YABGE is designed to be educational, providing a simple example of how a Gameboy emulator can be implemented, making it easier for others to learn and understand the underlying concepts.
All are welcome. I'm far from an expert, but if you find this project helpful to yourself and can think of a way to make it more helpful to others, feel free to open an issue or PR.
YABGE is licensed under the GPLv3 License. See the LICENSE file for details.