Boy is a Gamboy (dmg not 0) emulator written in Java.
- Writing a good understandable emulator without any magic
- Understanding how the hardware works to make a clear implementation
- Having the best performance
- Pass all tests for dmg (not 0)
- Implement sound
- Make implementation of MBC1 clearer
- Implement all other MBC's
Blargg's cpu_instrs tests
Test |
Boy |
01-special |
๐ |
02-interrupts |
๐ |
03-op sp,hl |
๐ |
04-op r,imm |
๐ |
05-op rp |
๐ |
06-ld r,r |
๐ |
07-jr,jp,call,ret,rst |
๐ |
08-misc instrs |
๐ |
09-op r,r |
๐ |
10-bit ops |
๐ |
11-op a,(hl) |
๐ |
Blargg's instr_timing tests
Test |
Boy |
instr_timing |
๐ |
Blargg's mem_timing tests
Test |
Boy |
01-read_timing |
๐ |
02-write_timing |
๐ |
03-modify_timing |
๐ |
Mooneye GB acceptance tests
Test |
Boy |
add sp e timing |
๐ |
boot div dmgABCmgb |
โ |
boot hwio dmgABCmgb |
๐ |
boot regs dmgABC |
๐ |
call timing |
๐ |
call timing2 |
๐ |
call cc_timing |
๐ |
call cc_timing2 |
๐ |
di timing GS |
๐ |
div timing |
๐ |
ei sequence |
๐ |
ei timing |
๐ |
halt ime0 ei |
๐ |
halt ime0 nointr_timing |
๐ |
halt ime1 timing |
๐ |
halt ime1 timing2 GS |
๐ |
if ie registers |
๐ |
intr timing |
๐ |
jp timing |
๐ |
jp cc timing |
๐ |
ld hl sp e timing |
๐ |
oam dma_restart |
๐ |
oam dma start |
๐ |
oam dma timing |
๐ |
pop timing |
๐ |
push timing |
๐ |
rapid di ei |
๐ |
ret timing |
๐ |
ret cc timing |
๐ |
reti timing |
๐ |
reti intr timing |
๐ |
rst timing |
๐ |
Bits (unusable bits in memory and registers)
Test |
Boy |
mem oam |
๐ |
reg f |
๐ |
unused_hwio GS |
๐ |
Test |
Boy |
basic |
๐ |
reg_read |
๐ |
sources dmgABCmgbS |
โ |
Test |
Boy |
hblank ly scx timing GS |
โ |
intr 1 2 timing GS |
๐ |
intr 2 0 timing |
๐ |
intr 2 mode0 timing |
๐ |
intr 2 mode3 timing |
๐ |
intr 2 oam ok timing |
๐ |
intr 2 mode0 timing sprites |
โ |
lcdon timing dmgABCmgbS |
๐ |
lcdon write timing GS |
๐ |
stat irq blocking |
โ |
stat lyc onoff |
โ |
vblank stat intr GS |
๐ |
Test |
Boy |
boot sclk align dmgABCmgb |
โ |
Test |
Boy |
div write |
๐ |
rapid toggle |
๐ |
tim00 div trigger |
๐ |
tim00 |
๐ |
tim01 div trigger |
๐ |
tim01 |
๐ |
tim10 div trigger |
๐ |
tim10 |
๐ |
tim11 div trigger |
๐ |
tim11 |
๐ |
tima reload |
๐ |
tima write reloading |
โ |
tma write reloading |
โ |
Mooneye GB emulator-only tests
Test |
Boy |
bits ram en |
๐ |
rom 512Kb |
๐ |
rom 1Mb |
๐ |
rom 2Mb |
๐ |
rom 4Mb |
๐ |
rom 8Mb |
๐ |
rom 16Mb |
๐ |
ram 64Kb |
๐ |
ram 256Kb |
๐ |
multicart rom 8Mb |
โ |
Test |
Boy |
sprite priority |
๐ |