Skip to content
gomeboycolor

gomeboycolor

GAME BOY COLOR EMULATOR

gomeboycolor

gomeboycolor — a Go-language Game Boy / Game Boy Color emulator backend library intended to be used with separate frontends.

game boy colorPRIMARY SYSTEM
2013PROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why this project exists

Authored as a learning exercise in Go, gomeboycolor implements the Game Boy / Game Boy Color hardware as a backend library so frontends can render video, handle input, and manage saves. The author documents that it is a side project focused on correctness (passes many blargg tests) while still being actively developed toward feature completion.

BEST FOR

What it does well

Implements a mostly-working Game Boy / Game Boy Color core in Go, passes blargg CPU and memory timing tests, supports battery saves, multiple screen sizes, and basic color support. Provided example frontends include a GLFW desktop frontend and a WebAssembly frontend.

The people behind gomeboycolor

History and status

gomeboycolor is an open-source project by Daniel James Harper. The repository and project pages indicate active development with many commits and an alpha release (v0.0.7_alpha). The codebase is written in Go and is presented as a backend emulator runtime rather than a standalone GUI application — developers are expected to supply or use an existing frontend (gomeboycolor-glfw, gomeboycolor-wasm, or the included terminal example). The README and project site note that audio was not implemented at the time of the documentation and some cartridge types and RTC features (MBC3 RTC) are not fully supported. The project is distributed under the MIT license.

What gomeboycolor supports

  • Nintendo Game Boy
  • Nintendo Game Boy Color
  • Download and platform support verified for 64-bit Windows, macOS, and Linux (x86_64) via prebuilt releases; source builds require Go.
  • download_text": "Official downloads and source: GitHub Releases and the project site. Prebuilt x86_64 binaries are provided for Linux, macOS and Windows in the v0.0.7_alpha release; source and tags are on the GitHub repository.

Download and availability

OFFICIAL DOWNLOADS

Get gomeboycolor

Official downloads and source are provided from the project's GitHub repository and its Releases page. The project site (djhworld.github.io/gomeboycolor) links to prebuilt ZIPs for x86_64 Linux, macOS and Windows (noted as v0.0.7_alpha). Source builds require a Go toolchain and the repository itself.

Get gomeboycolor ↗

DOCUMENTATION

Official documentation

Read the official configuration, compatibility, and troubleshooting material before changing advanced options.

Read official documentation ↗
Broken or missing download? Emulator projects move and official links sometimes change. Please contact Retro Replay so the source can be verified and updated.

gomeboycolor setup guide

Setup note: This project is a backend emulator library. You can either download a prebuilt frontend+binary release (if available) or build from source. The core expects a frontend to open a window, present pixels, accept input, and persist battery saves. The guide below covers obtaining the code/releases, building, running the provided frontends/examples, runtime flags, and common practical notes verified from the project documentation.

  1. Obtain the code or release: Visit the GitHub repository (djhworld/gomeboycolor) and the Releases page. For most users who want a ready-to-run executable, download the matching prebuilt ZIP for your OS/architecture from the Releases assets (noting the available v0.0.7_alpha release). For developers or if no matching binary exists, clone the repository and build from source with Go.
  2. Requirements to build from source: Install Go (the repository is Go modules based). A working Go toolchain compatible with the go.mod in the repo is required. To build any native GLFW frontend you will also need libglfw and development headers available for your platform (see the frontend's README). For the WebAssembly frontend, a wasm-capable toolchain and method to serve the generated files are required.
  3. Building: Clone the repository and use standard Go build commands. The core is a library module; the repository includes example frontends and separate frontend repositories (gomeboycolor-glfw and gomeboycolor-wasm). Typical steps: git clone <repo>, cd into the appropriate example or frontend folder, then go build (or go install) to produce the executable. If building a GLFW frontend, ensure libglfw is installed on your system before building.
  4. Running the emulator: Run the frontend executable and pass a path to a ROM file as the final argument. Example usage pattern shown in project docs: ./gomeboycolor path/to/romfile.gbc. Common flags (as implemented in the examples) include -skipboot, -color (enable/disable GBC color features), -showfps, -size (1–6) to scale the display, and -title to change the window title.
  5. Frontends and examples: Available frontends listed in the project: gomeboycolor-glfw (native windowed frontend using libglfw), gomeboycolor-wasm (WebAssembly frontend for browser playback), and _examples (a terminal-based example using tcell). The core only supplies screen frames and state; use an available frontend rather than expecting a full GUI from the core alone.
  6. Saves, config, and runtime files: The emulator creates a per-user directory for saves and config (e.g. ~/.gomeboycolor on Unix or C:\Users\<user>\.gomeboycolor on Windows). You may create a config.json in that directory to set defaults for flags (Title, ScreenSize, ColorMode, SkipBoot, DisplayFPS). Battery save support is implemented for cartridges that use battery-backed RAM.
  7. Known limitations and troubleshooting: According to the README and project site: audio was not implemented at the time of the documentation; RTC on MBC3 is not supported; some cartridge types (MBC2 and others) were not yet supported; some games may not run perfectly. If builds fail for frontends using GLFW, ensure system GLFW and development headers are installed. If you need sound or full compatibility, check the project's issues/roadmap for progress before relying on the emulator for specific games.
  8. Legal and practical notes: The project does not include commercial ROMs, BIOS, or firmware. Use only legally obtained ROMs. The author disclaims responsibility for piracy. The code is MIT licensed; distribution terms are in the repository license file.

Software reminder: Requires a Go toolchain to build from source. Prebuilt x86_64 binaries are available in the GitHub Releases page for the listed alpha release; frontends that use libglfw require the platform's GLFW library. The project does not include commercial ROMs, BIOS, or other proprietary firmware.

Sources and further reading

Detailed guides and tutorials

Explore step-by-step guides for gomeboycolor as they are published.