GameBoy Sharp is another GameBoy (DMG) emulator written in C# (and .NET 7).
This is a personal project written primarily with a focus on readability, and then looking at performance improvements.
Most of this emulator is based on Project DMG and Retr.io GB.
This emulator has been manually tested with a handful of popular games and appeared to be compatible. The emulators it is based on have ~95% compatiblity.
- Sound is playing, but is not correct.
- The memory and interrupt timings are not accurrate, but are good enough to run most games
- D-PAD: WASD or Arrow Keys
- A Button: ',' or '0'
- B BUtton: '.'
- Start: Enter
- Select: ' (single quote)
- GameBoySharp.Emu - cross-platform emulator core written in C#
- GameBoySharp.Emy.Test - unit test project
- GameBoySharpWinForms - a very simple Windows Forms host for the emulator
Compiled versions of the Blargg and Mooneye test ROMs are included in the Tests project. Right now only the Blargg tests are hooked up as Unit Tests.
CPU Tests
Test | Status |
---|---|
01-special | Passed |
02-interrupts | Passed |
03-op sp,hl | Passed |
04-op r,imm | Passed |
05-op rp | Passed |
06-ld r,r | Passed |
07-jr,jp,call,ret,rst | Passed |
08-misc instrs | Passed |
09-op r,r | Passed |
10-bit ops | Passed |
11-op a,(h1) | Passed |
Memory Timing Note These don't work correcly in the unit tests.
Test | Status |
---|---|
01-read_timing | Failed |
02-write_timing | Failed |
03-modify_timing | Failed |
Sound Tests All fail
Other Tests
Test | Status |
---|---|
halt_bug | Passed |
instr_timing | Failed |
interrupt_time | Failed |
oam_bug | Failed |