GAME BOY COLOR EMULATOR
pokegb
pokegb is a tiny, single-purpose Game Boy emulator implementation by Ben “binji” Smith that is written in compact C/C++ and intentionally only runs Pokémon Blue (and Pokémon Red) builds. It is source-available on GitHub and intended as a programming exercise / technical demonstration rather than a general-purpose emulator.

WHY IT MATTERS
Why this project exists
pokegb was created as a compact, exploratory implementation to demonstrate how a very small amount of emulator code can be specialised to run a single commercial Game Boy title. The author published a technical write-up describing how the program works and the source is arranged as an educational/novelty project rather than a full-featured emulator.
BEST FOR
What pokegb is good for
Reading and learning from a minimal, focused emulator implementation; reproducing how Pokémon Blue/Red behave on a Game Boy without needing a full emulator codebase; experimentation on Linux/macOS. It is not a drop-in replacement for a general Game Boy / Game Boy Color emulator.
The people behind pokegb
History & status
The project and write-up were published in 2021 by Ben Smith (binji). The GitHub repository contains source, a short README with build and run instructions, and an extended technical article on binji.github.io that documents the implementation decisions. The repository is actively viewable on GitHub with recent activity visible in its commit history and issue tracker; however, pokegb is explicitly small and narrowly targeted — it implements only the parts of the Game Boy hardware needed to run Pokémon Blue/Red. It is best treated as an educational or novelty project rather than a maintained, compatibility-focused emulator.
What pokegb supports
- Game Boy (Pokemon Blue/Red tested)
- Game Boy Color (limited; intended to run the tested Pokémon ROMs)
- Platforms: Linux, macOS (build targets mentioned in README)
- SDL-based input and display
Download and availability
OFFICIAL DOWNLOADS
Get pokegb
Official source and binary releases are provided from the project's GitHub repository and its Releases page. For source: clone the repository. For prebuilt releases check the Releases tab on GitHub.
Get pokegb ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗pokegb setup guide
Setup note: Below are practical, repository-specific steps to build and run pokegb on a Unix-like system (Linux or macOS) as described in the project's README. These instructions reflect the repository documentation — follow them exactly and do not expect built-in BIOS or games to be included.
- 1) Get the source: Clone the official GitHub repository: git clone https://github.com/binji/pokegb then cd pokegb. Inspect the README and source files (pokegb.cc, deobfuscated.cc) to understand the build targets.
- 2) Prepare dependencies: pokegb uses SDL for input and graphics. Install SDL2 (or the SDL version the repository expects) for your platform using your package manager (for example apt, pacman, Homebrew) before building. The README notes the build works on Linux and macOS.
- 3) Build: Run make in the repository root. The project provides a Makefile — the README's minimal build instruction is $ make. If the build fails, check the Makefile for compiler flags and the required SDL include/library locations and adjust your environment or the Makefile accordingly.
- 4) Provide a ROM (required): pokegb does not include any game ROMs. To run it you must supply a Pokémon Blue or Pokémon Red ROM file you legally own. The README documents SHA-1 checksums for ROM builds that the author tested; rename the ROM file to rom.gb and place it in the same directory as the pokegb binary.
- 5) First-run save file (macOS note): On macOS the README states you may need to create an initial save file using the provided Makefile target: $ make rom.sav. On first run the emulator will write a rom.sav save file in the current directory.
- 6) Run the emulator: Execute ./pokegb from the repository root (where rom.gb is located). Controls are mapped to the keyboard by default (arrow keys for D-pad; Z/X for B/A; Tab for Select; Enter for Start). The README lists the SDL scancodes/keys used and how to change them by editing the source.
- 7) Notes on capabilities and limitations: pokegb purposely implements only the subset of the Game Boy hardware required to run Pokémon Blue/Red. Expect no audio, incomplete hardware features, and limited ROM compatibility. Do not expect support for arbitrary Game Boy or Game Boy Color titles or advanced features like save-state formats beyond the rom.sav written by the program.
- 8) Updates and troubleshooting: If you encounter build or runtime issues, check the repository Issues page and the technical blog post for implementation notes. Because this is a compact demo project, debugging often involves reading the source and the blog post rather than a large support community.
Software reminder: pokegb does not include or provide commercial game ROMs, BIOS/firmware, or licensed keys. Supply any ROMs or firmware yourself and only if you have the legal right to use them.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for pokegb as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation