Rugby is a Game Boy and Game Boy Color emulator written in Rust. It supports most cartridges and has many features like customizable palettes and rewinding. It can be compiled to run in most architectures, including the web!
- Clone the repository, and then go to the
rugby_desktop
directory:
git clone https://github.com/mvlassis/rugby.git
cd rugby/rugby_desktop
Then simply call cargo run --release
. You can give the program a ROM to run, or start the program and load the ROM later:
# Both ways are OK
cargo run --release [ROM]
cargo run --release
You can enable the rewind
feature, I made it optional because it is very resource intensive and can slow down the program:
cargo run --release --features rewind
You can enable the debug
feature to print execution logs (useful when you want to compare against your emulator). By default the logs are printed to the standard input, so you can easily redirect them to a file like so:
cd rugby/rugby_desktop
cargo run --release --features debug [ROM] > log.txt
- Both Game Boy and Game Boy Color have been implemented.
- ROM Only, MBC1, MBC2, MBC3, and MBC5 cartridges are supported.
- Real-time clock (RTC) on supported cartridges.
- Full sound support, with the ability to enable/disable individual sound channels
- Pause/unpause whenever you want.
- Integer scaling from x1 to x5.
- Custom palettes.
- Enable/disable individual display layers.
- Multiple save states.
- Rewind for up to 5 seconds.
- And an intuitive UI to show all of the above!
Key | Action |
---|---|
UP |
Up |
DOWN |
Down |
LEFT |
Left |
RIGHT |
Right |
A |
A |
S |
B |
Z |
Start |
X |
Select |
O |
Save state |
P |
Load state |
I |
Load last save state |
R |
Rewind |
ESC |
Exit |
- The Ultimate Game Boy talk
- Pandocs: Comprehensive technical reference
- GBEDG: Useful explanations on how the PPU works
- gbops: Opcodes table
- Explanation on the DAA instruction
- BGB, used mainly for debugging
- Argentum
- kevboy, especially for the parts regarding audio
- Gameboy-Emulator
- rboy
Rugby is licensed under the MIT license