You can try the emulator in your browser here: https://arcticxwolf.github.io/AXWGameboy/
This is a work-in-progress gameboy emulator written in golang. So far most of the regular gameboy features are implemented. CGB support is mostly done with a few bugs still existing.
It should be compatible (with some additional work) to macOS, FreeBSD, iOS, WebAssembly and Nintendo Switch™ thanks to cross plattform support by Ebiten and GoMobile. For compilation support please refer to those projects first. Main target plattform is webassembly.
- CPU emulation
- z80 specifications
- All opcodes with instruction timing
- CGB double speed mode
- Memory emulation
- MBC1, MBC3, MBC5 mappers
- Multiple ROM banks and RAM banks
- CGB HDMA and GDMA transfers
- PPU
- Background layer
- Window layer
- Sprites
- CGB Palettes
- CGB TileAttributes
- APU
- All 4 channels with all features
- Big parts are adapted from Goboy Emulator
- Changed audio backend to the ebiten native one
- Cheat support with GameShark & Gamegenie
- Open-Source bootroms adapted from Sameboy Emulator
A copy of the emulator running in your browser is available here.
You might need to install some build dependencies. These are required by ebiten as our game engine. For further instructions (and install help for each OS) please refer to the ebiten documentation.
Afterwards you can build the bootroms with make bootroms
and then use make all
to build the emulator + start a webserver serving it on localhost:8008.
Keyboard button | Gameboy button |
---|---|
A | A button |
S | B button |
Space | Start button |
LeftAlt | Select button |
← ↑ ↓ → | Arrow buttons |
Keyboard button | Misc |
---|---|
LeftShift | Speedboost (3x Speed) |
P | Pause game |
+ | Increase volume |
- | Decrease volume |
1 | Toggle sound channel 1 |
2 | Toggle sound channel 2 |
3 | Toggle sound channel 3 |
4 | Toggle sound channel 4 |
d | Show debug view |