gopher-boy
Installation
you can install gopher-boy
with following comand.
go get github.com/bokuweb/gopher-boy/cmd/gopher-boy
This emulator uses the go library pixel, which requires OpenGL. You may need to install some requirements which can be found on the pixels readme.
Requirements
Development
Native
GO111MODULE=on go run -tags="native" cmd/gopher-boy/main.go hello.gb
WebAssembly
make build-wasm
make serve
Usage
gopher-boy YOUR_GAMEBOY_ROM.gb
Keymap
keyboard |
game pad |
← |
← button |
↑ |
↑ button |
↓ |
↓ button |
→ |
→ button |
Z |
A button |
X |
B button |
Enter |
Start button |
Backspace |
Select button |
Testing
make test
Current status
Blargg's test ROM
ROM |
Result |
cpu_instrs |
✅ |
instr_timing |
❌ (#255) |
mooneye-gb's test ROM
ROM |
Result |
emulator-only/mbc1/bits_bank1 |
✅ |
acceptance/instr/daa |
✅ |
acceptance/timer/div_write |
✅ |
acceptance/timer/tim00 |
✅ |
acceptance/timer/tim01 |
✅ |
acceptance/timer/tim10 |
✅ |
acceptance/timer/tim11 |
✅ |
acceptance/if_ie_registers |
✅ |
Visual regression test
Please install reg-cli
.
npm i -g reg-cli
Execute regression test
make reg
Update expected images
make reg-update
Credit
"gopher" by Renée French CC-BY-3.0
Known Bugs and TODO list
PR welcome :)
- Implement APU
- Support scale option
- Support WebAssembly
- 8*16 sprite
- LCD interrupt
- Keypad interrupt
- cartridges
- Support ROM+MBC1+RAM+BATT catridge
- Support ROM+MBC2 catridge
- Support ROM+MBC2+BATTERY catridge
- Support ROM+RAM catridge
- Support ROM+RAM+BATTERY catridge
- Support ROM+MMM01 catridge
- Support ROM+MMM01+SRAM catridge
- Support ROM+MMM01+SRAM+BATT catridge
- Support ROM+MBC3+RAM catridge
- Support ROM+MBC3+RAM+BATT catridge
- Support ROM+MBC5 catridge
- Support ROM+MBC5+RAM catridge
- Support ROM+MBC5+RAM+BATT catridge
- Support ROM+MBC5+RUMBLE catridge
- Support ROM+MBC5+RUMBLE+SRAM catridge
- Support ROM+MBC5+RUMBLE+SRAM+BATT catridge
- Support Pocket Camera catridge
- Support Bandai TAMA5 catridge
- Support Hudson HuC-3 catridge