I built a Game Boy emulator in Go that runs in the browser using WebAssembly. You can play any Game Boy ROM directly in this page. Still a work in progess though since there are still some graphical bugs.
Features
- Full Game Boy CPU emulation
- PPU (Picture Processing Unit) with accurate rendering
- Built with Go and compiled to WASM
- Runs at native 60 FPS
Try it yourself
Upload a Game Boy ROM file below and start playing. The emulator supports the DMG (original Game Boy).
Select a ROM to begin emulation Load
↑
←
→
↓
Controls (Touch is enabled for the buttons)
- Arrow Keys: D-pad
- Z: B button
- X: A button
- Enter: Start
- Tab: Select
Technical Details
The emulator is written in pure Go: Check out the source code on GitHub.
Build Tags
The project uses Go build tags to support both native and WASM targets:
- Desktop builds with Ebiten backend
- WASM builds with Canvas API backend
- Optional debug mode for instruction tracing
Performance
The WASM build runs surprisingly well, maintaining 60 FPS on most systems. The Go WASM runtime is efficient, and the emulator uses minimal allocations during gameplay.