Skip to content
A Game Boy emulator implemented in Go
Go HTML JavaScript CSS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
binary
cmd
cpu
data
input
interrupts
ioports
mmu
ppu
timer
tracer
values
README.md
gameboy.go
go.mod
go.sum
manual_misses.md
ratelimiter.go

README.md

Gameboy

A Gameboy (DMG-01) emulator, implemented in Go.

References used include:

Graphics and keyboard input are implemented using Pixel.

Status

This project is very much a work in progress. Current milestones reached:

  • Successfully runs the DMG-01 boot rom
  • Passes individual tests in the Blargg cpu instruction roms (does not pass the combined tests due to need for bank switching).
  • Tetris is playable

Key remaining work:

  • Sound support
  • Cartridge bank switching

Dependencies

Some prerequisite libraries are needed for Pixel, see Pixel requirements for more details.

Installation

You can build and install this emulator using go get:

$ go get -u github.com/theothertomelliott/gameboy/cmd/gameboy

Usage

Assuming $GOPATH/bin is on your PATH, once installed, you can run the gameboy binary at the commandline, specifying a cartridge ROM filename as argument:

$ gameboy path/to/rom.gb

You may also optionally provide a path to the Gameboy boot ROM.

Debugging

By default, the emulator serves a debugger web app on port 8080. Visit http://localhost:8080 once the emulator is running to debug.

You can’t perform that action at this time.