Awesome Game
Boy Development
A curated list of awesome Game Boy (Color) Development resources,
tools, docs, related projects and open-source ROMs. Inspired by the awesome list
thing.
You can find a (way cooler) web version of this list here.
Contents
Introduction
Disambiguation
Game Boy Advance
Game Boy Advance development is covered by another project, the awesome-gbadev list.
GBA, however, can run GB/GBC games. It does so in a slightly
different way compared to native hardware: this is covered in the
Emulator Development section of this list.
Game Boy Color and Super Game
Boy
This list is focused on the original Game Boy (GB or DMG,
1989), the Game Boy Color (GBC or CGB) and the Super Game
Boy (SGB) are very similar systems, with a few important
distinctions, such as:
- Different hardware specifications;
- Specific hardware and software features;
- Specific registers;
- Specific bugs, quirks and exploitable behaviours.
If you aim to develop your software for SGB or GBC, or you want to
know how it runs on the other systems, you may want to take advantage
and adapt to these differences, check the Game
Boy Color category and look for specific references to GBC/CGB and
SGB.
Documentation
Opcodes
- gb-opcodes -
Opcodes table
- RGBDS opcodes
reference - A reference of all instructions, including short
descriptions, cycle and byte counts, and explanations of flag
modifications.
Game Boy Color
Hardware
- DMG
Schematics - Hardware schematics.
- The Game
Boy Project - Provides a study on the hardware and detailed
constructional information for the implementation of three 8-bit
bidirectional parallel ports.
- Related custom
hardware - by Gekkio.
- ESP8266
GB Dev Board - Dev board for Game Boy accessories development,
powered by ESP8266.
- ESP8266 GB
Printer - A device that emulates the GB Printer and lets you
retrieve images using WiFi.
- fruttenboel
- Page with loads of information on the hardware, custom boards to
interface with the console and other related projects.
- Game Boy hardware database -
Data and photos of various types of Game Boy consoles.
- dmg-schematics -
Schematics and annotated overlay for the DMG-CPU B chip, extracted from
die photos, made with KiCad. Also contains Electric VLSI library with
layouts for some of the cells and memories.
Peripherals
Cartridges
Custom cartridges
Misc
Emulator Development
Testing
Software Development
The Choosing tools for
Game Boy development essay provides an overview of the available
development tools for Game Boy.
Assemblers
Compilers
- GBDK -
Maintained and modernized GBDK (Game Boy Development Kit) powered by an
updated version of the SDCC toolchain. Provides a C compiler, assembler,
linker and a set of libraries.
- Turbo
Rascal Syntax Error - Complete suite (IDE, compiler, programming
language, resource editor) intended for developing games/demos for 8 /
16-bit line of computers, including the Game Boy and Game Boy
Color.
Experimental/Proof of
Concepts
- RGBDS-Live - In-browser
coding environment to try out RGBDS.
- Wiz - A high-level
assembly language for writing homebrew on retro console platforms (Game
Boy, NES, Atari 2600, and more).
- gbforth - A
Forth-based Game Boy development kit.
- gbasm-rs - An
opinionated Rust based compiler for Game Boy z80 assembly code.
- gbasm - A
JavaScript based compiler for Game Boy z80 assembly code.
- tniASM - Macro
Assembler.
- Assembler -
Assembler written in Swift.
- llvm-gbz80 / clang-gbz80 -
Clang/LLVM port to the GBZ80 CPU (similar to the deprecated euclio/llvm-gbz80).
- gbdk-go - A
compiler translates Go programs to C code. The output C code is built
into GB ROM by GBDK.
- Rust-GB - A compiler
and library that enable the development of GB ROMs using Rust.
Emulators
BGB - Powerful emulator and
debugger. Provides an accurate hardware emulation.
SameBoy -
Accurate emulator with a wide range of powerful debugging
features.
Mooneye GB -
Research project and emulator in Rust.
mGBA - Modern
cross platform GBA emulator which also runs GB/GBC games.
Binjgb - 5Kloc
emulator that passes most of the tests. *Rewind- feature. Runs in the
browser using WebAssembly.
Gambatte -
Cross-platform and accurate emulator.
MetroBoy - A
playable, circuit-level simulation of an entire Game Boy.
gbe-plus - A
recently rewritten emulator that has a large effort in preserving the
functions of obscure accessories (such as IR link, Mobile Network GB,
Barcode Boy, GB Printer, local and online GB Serial Link Cable, …
)
Emulicious - Provides
accurate emulation and includes powerful tools such as a profiler and
source-level debugging for ASM and C via a VS
Code debug adapter.
Complete list of open source emulators
Engines
- ZGB - A little engine for
creating games for the original Game Boy (expands gbdk, more info here).
- Retr0 GB
- An engine for creating games (expands GBDK).
- GBExtended
- C library extending gbdk.
- gbdk-lib-extension
- A small set of sources and tools for the Game Boy Development Kit by
Michael Hope.
- mgbdis - Game Boy
ROM disassembler with RGBDS compatible output.
- ROM Header
Utility - An online tool to inspect and modify a ROM’s header data,
including the logo.
- romusage - Command
line tool for estimating usage (free space) of Game Boy ROMs from a
.map, .noi or ihx file. Works with GBDK-2020 and RGBDS.
- awake - Game Boy
decompiler.
- Game Boy
Text Tools - Set of tools for text manipulation and translation of
Game Boy ROMs written in Node.js.
- evscript - A
scripting language for the Game Boy, useful for enemy AI, dialogue,
animations, and coroutines.
- evunit - A unit
testing program for assembly code.
- opcode_count -
Generates statistics on which CPU instructions are run the most often
using Python and Emulicious
Graphics utilities
- Game Boy Tile
Data Generator - HTML5 / JS web application that will convert bitmap
images to hexadecimal data appropriate for use in tile based graphical
applications, specifically GB.
- Harry Mulder’s GB
Development - Some sources and home of Game Boy Tile Designer (GBTD)
and Game Boy Map Builder (GBMB) tools.
- GBTiles - Converts
.GBR files created with Harry Mulder’s Tile Designer (GBTD) and .GBM
files created with Harry Mulder’s Map Builder (GBMB) to different
formats for use with the Game Boy and GBDK.
- bmp2cgb - Graphics
converter for Game Boy Color development providing real time palette
adjustments.
- png2gb - CLI
tool to convert image file to game boy .c array.
- GB-convert -
Game Boy tile conversion and map editor tool (converts to
assembly).
- brewtool - A collection of
primitive editor/converter tools for making assets used with homebrew
ROM development.
- vtGBte - A
minimalistic ncurses tile editor.
- tpp1 -
Definition and specification of a custom GB/GBC memory/hardware mapper,
as a functional superset of MBC.
- libstdgb - A C
library of useful Game Boy operations (SDCC).
- Tilemap GB -
GIMP image editor plug-in for importing & exporting GBMB and GBTD
tilemaps and tilesets (as bitmap images or .GBM/.GBR files).
- Tilemap
Helper - GIMP image editor plug-in for optimizing tile maps and tile
sets.
- Tilemap
Studio - A tilemap editor for Game Boy, Color, Advance, and SNES
projects. Written in C++ with FLTK.
- Superfamiconv
- Flexible and composable tile graphics converter supporting Super
Nintendo, Game Boy, Game Boy Color, Game Boy Advance, Mega Drive and PC
Engine formats.
Hardware and ROM utilities
Music drivers and trackers
- DevSoundX - Sound
driver embeddable in homebrews which supports pulse width manipulation,
arpeggios, and multiple waveforms.
- Carillon
Player - Music Engine.
- GBT PLAYER - A
music player library and converter kit.
- mmlgb - A MML
parser and GBDK sound driver for the Nintendo Game Boy.
- XPMCK - An MML
based music compiler with support for Game Boy & Game Boy
Color.
- GBSoundSystem -
A modernized audio driver for GameBoy Tracker (aka the Paragon 5 music
player).
- hUGETracker -
A music tracker based on OpenMPT, focused on ease of use, compact
output, and embeddability in homebrew games.
- CBT-FX - A
GBDK-2020 sound effect driver compatible with FX-Hammer sound
effects.
Programming
Guides, tutorials and tools to develop software for Game Boy using
the development toolchains described in the Software Development chapter.
ASM
Sources
Fragments of code, effects, proof of concepts and generally non
complete games.
- dev’rs ASM section
- A lot of working demos and sources.
- EmmaEwert’s
experiments - A collection of prototype programs, mostly just toying
around. Among others, a daylight effect, transparency and a weather
effect.
- DeadCScroll
- A detailed tutorial on how to make the screen wobble, among other
“raster effects”
Timings
Boilerplates and libraries
Syntax highlighting packages
C
Homebrews
Complete and open source games.
- Homebrew Hub - A community-led
attempt to collect, archive and preserve every unlicensed and homebrew
game released for Game Boy. Entries are playable online.
ASM
C
GB Studio
Demos
Reverse Engineering
Game Disassemblies
Game Boy Camera
Retrieving images
Game Boy Printer emulation (e.g. to retrieve images from the
camera):
Changing the camera’s
behavior
Methods to improve and/or manipulate the camera’s quality and
behavior:
Post processing
- GB Studio - Drag and drop
game creator with simple, no knowledge required, visual scripting.
- ArduinoBoy -
Serial communication (MIDI) from an Arduino to the Game Boy for music
applications such as LittleSoundDJ, Nanoloop, and mGB.
- papiGB - Game
Boy Classic fully functional FPGA implementation from scratch.
- fpgaboy -
Implementation Nintendo’s Game Boy console on an FPGA.
- Piglet - A
LUA-driven AI that plays classic Game Boy color games using
experimentation. In active development.
- Ostrich - A Game
Boy Sound System player written in Swift.
- mGB - A Game Boy
cartridge program that enables the Game Boy to act as a full MIDI
supported sound module.
- GBVisualizer -
Demonstrating the use of two undocumented Game Boy Color registers,
nicknamed PCM12 (FF76) and PCM34 (FF77), which can be used to read the
current PCM amplitude of the 4 APU channels.
- ArduinoGameBoy -
Arduino based Game Boy cartridge reader and writer.
- gameboy-brainfuck
- Brainf*ck interpreter.
- gbfk - Brainf*ck
interpreter, with input.
- gb-save-states -
Patches to add save state support to Game Boy games when playing on the
original hardware.
- gbcpu - A CPU and
peripherals implementing the Game Boy instruction set and
functionality.
- Digitized Speech
in Game Boy Games
- Sniffing
Game Boy serial traffic with an STM32F4
- Virtual
Game Boy Printer with an STM32F4
- Printing on
the Game Boy Printer using an STM32F4
- Programming
Game Boy Chinese cartridges with an STM32F4
- Pokemon
Pocket Computer: - What is it and how to use it to make cheat
codes.
- Booting
the Game Boy with a custom logo - Bypassing the Nintendo logo
check.
- Making a Game Boy game in 2017: A “Sheep It Up!” Post-Mortem (part
1, part
2)
- Nintendo’s fake
logos - Every cartridge has to show the authentic logo to be
considered valid and be run, but obviously some companies managed to
exploit the check system.
- liblsdj -
Utility library for interacting with the LSDj save format (.sav), song
files (.lsdsng) and more.
- lsdpatch - Tool
for modifying samples, fonts and palettes on LSDj ROM images.
- Game
Boy video effects - Some little experiments using the STAT interrupt
to do funny video manipulations.
- gbos - A basic
operating system for the Game Boy.
- Work
Master OS - Russian multi tasking operating system.
- Game Boy Link Cable
Breakout Board
- GBCartFlasher
firmware
- VerilogBoy -
Game Boy compatible console Verilog RTL implementation.
- GBCamcorder -
Lo-Fi portable video recorder using a GameBoy Camera cartridge.
- GBCartRead
- Read ROM, Read RAM or Write RAM from/to a GameBoy Cartridge.
- GBxCart-RW
- A device for reading game ROMs, save games and restoring saves for GB,
GBC and GBA carts from your PC via USB.
- Dumping the
Super Game Boy Boot ROM
Directories
Websites
- devrs.com/gb - Old home of the
scene: examples, sources, complete documentation, guides, tutorials and
various tools.
- pdroms.de - Game Boy
releases.
- Handheld Underground - Unlicensed
games, blog posts about Game Boy, home of the hhugboy emulator.
About
Contribute
Take a look at Contribution
Guidelines.
License
Licensed under GPLv3. See LICENSE for more information.
Acknowledgements
Thanks to every
contributor of this project, Jeff Frohwein, Pascal Felber, KOOPa, Pan of
Anthrox, GABY, Marat Fayzullin, Paul Robson, BOWSER, neviksti, Martin
“nocash” Korth, Nitro2k01, Duo, Chris Antonellis, Michael Hope, Beware,
Jonathan “Lord Nightmare” Gevaryahu, Carsten Sorense, Sindre Aamås,
Otaku No Zoku, GeeBee.
Special thanks to our friends at DigitalOcean and Incube8 Games, sponsoring the open
source activites of our Game Boy Development community.
gbdev.md
Github