Awesome Game Boy Development

A curated list of awesome Game Boy (Color) Development resources, tools, docs, related projects and homebrews. Inspired by the awesome list thing.

This project is open source and community-lead. Come contribute!

Join us on Discord!

Introduction

The Game Boy, a hardware autopsy



The Ultimate Game Boy Talk



Community

Documentation

DISAMBIGUATION

Although this documentation is focused on the original (1989) Game Boy (DMG), the Game Boy Color (GBC) and Super Game Boy (SGB) are very similar systems, with few important distinctions, such as:

  • Different hardware specifications
  • Specific hardware and software features
  • Specific registers
  • Specific bugs 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.

Misc

Cheatsheets, Tables

Game Boy Color

Hardware

Peripherals

Cartridges

Emulator Development

Testing

Open Source Emulators

Name Language Details
Binjgb C 5kloc emulator that passes most of the tests. Rewind feature. Runs in the browser using WebAssembly
Wadatsumi Arrow
cboy C
miniBoy C
Sameboy C
giibiiadvance C A GB, GBC emulator with GB Camera support.
mGBA C A modern cross platform GBA emulator which also runs GB/GBC games.
gnuboy C ANSI C
PlutoBoy C Cross platform (Windows, OSX, Linux/Unix, Android, iOS, Web Browsers, and Sony PSP) emulator
SuperGameHerm C 11 Cross platform emulator
Castor C#, Monogame
GameYob C++, C# GB, GBC emulator for Nintendo DS/3DS
jgilchrist C++
gameboycore C++ 11 C++ emulation backend. Dependency free library.
GameBoyEmulator-GBS C++ 14 with a single library dependency of SFML
oneup-gb C++ DMG. Currently provides SDL frontend and Retroarch integration
Gearboy C++ iOS, Raspberry Pi, Mac, Windows and Linux
SmartGear C++, SDL2 Focus on optimized performance for resource-limited devices. GTK or direct framebuffer build
PatBoy C++, SDL2 with a fully functional visual debugger
GameLad C++/SDL Almost fully featured emulator
GBE+ C++, SDL Focused on enhancements
hhugboy C++ Windows, based on GEST v1.1.1 by TM, with added support for unlicensed mappers, Unicode filenames, screenshots and some other stuff
DDMG D
FunGBC F#
gameboyGO Go
gomeboycolor Go Cross platform documented emulator. WASM port.
AndroidGameBoyEmulator Java
Coffee GB Java 8
weplay JavaScript Collaborative Game Boy emulation
GBRE JavaScript GB Runtime Environment for iOS (iOS Safari and Chrome)
gameboy-Online JavaScript Uses HTML5 canvas and JavaScript audio APIs
node-gameboy Node.js
php-terminal-Game Boy-emulator PHP
PyBoy Python Mac, Linux and Windows
barnacleboy Rust
gb-rs Rust
scimitar Rust
rustboy Rust A basic DMG emulator written in Rust, using the Piston engine for window creation and graphics
Gambattye Swift macOS, powered by a fork of Gambatte
wasmBoy Web Assembly (AssemblyScript) GB/GBC Library written for Web Assembly using AssemblyScript. Shell/Debugger in Preact.
vaporBoy Javascript PWA. Powered by wasmBoy
elmBoy Elm
goboy Go

Software Development

The To C Or Not To C essay gives an overview of the Game Boy's capabilities, discussing the pros and cons of the available development tools, and providing tips to write more efficient code.

Assemblers

Compilers

  • GBDK - A set of tools that enable to develop in C. Includes a set of libraries for the most common requirements and generates ready ROM files. Documentation.
    • gbdk-osx - Patched GBDK 2.96a for the latest compilers on OS X.
    • gbdk-n - Aims to update the gbdk libraries to be compatible with new versions of SDCC and provide helpers for building roms. Does not support ROM banking, thus limiting ROM size to 32K.

Experimental/Proof of Concepts

  • 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 - 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).

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.

Complete list of open source emulators

Tools

  • ZGB - A little engine for creating games for the original Game Boy (expands gbdk, more info here).
  • DevSound - Sound driver embeddable in homebrews which supports pulse width manipulation, arpeggios, and multiple waveforms.
  • Carillon Player - Music Engine for Game Boy & Game Boy Color.
  • 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 and Game Boy Map Builder 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.
  • GBT PLAYER - A music player library and converter kit for Game Boy that can be used with RGBDS.
  • ROM Header Utility - An online tool to inspect and modify a ROM's header data, including the logo.
  • gbcamextract - Extracts photos from Game Boy Camera saves.
  • GBExtended - C library extending 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.
  • gbdk-lib-extension - A small set of sources and tools for the Game Boy Development Kit by Michael Hope.
  • GB-convert - Game Boy tile conversion and map editor tool (converts to assembly).
  • cart-dumper - Game Boy Cartridge Dumper ROM.
  • Game Boy LCD sniffing - Sniff your Game Boy's LCD using a logic analyzer.
  • Dot Matrix Game Editor - An IDE for Game Boy programming in a C-like language called GBL, with many other features like tile and map extraction, WLA-DX assembly, and more.
  • brewtool - A collection of primitive editor/converter tools for making assets used with homebrew ROM development.
  • Game Boy Text Tools - Set of tools for text manipulation and translation of Game Boy ROMs written in NodeJS
  • 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.
  • mgbdis - Game Boy ROM disassembler with RGBDS compatible output.
  • Retr0 GB - An engine for creating games (expands GBDK).
  • awake - Game Boy decompiler.
  • swapdump - Diagnostic utility for Game Boy flashcarts.
  • Gameboy-LinkUp - Game Boy LinkUp serial cable networking project.
  • 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).

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.

Timings

Boilerplates

Syntax highlighting packages

C

Homebrews

Complete and open source games.

  • Homebrew Hub - Every unofficial homebrew ever produced for Game Boy playable online (mobile/touch too): a community-lead attempt to collect, archive and save every unofficial game, homebrew, demo, patch, hackrom for Game Boy (Color) produced by the community through years of passionate work.
  • Infinity - RPG developed by Affinix Software primarily between the years 1999 and 2001. The game never found a publisher and was eventually canceled. Got recently released with the full source, development tools and workflows.

ASM

C

Demos

Reverse Engineering

Game Disassemblies

Directories

Websites

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.

Sponsors

Special thanks to our friends at DigitalOcean, sponsoring the open source activites of our Game Boy Development community (announcement).

Game Boy is a registered trademark. This project is not endorsed by Nintendo.
© 2015-2019 Antonio Vivace and contributors.