Game Boy Development
Contents_Index
- GENERAL1
- INTRODUCTION2
- COMMUNITY2
- DOCUMENTATION5
- OPCODES2
- GAME BOY COLOR5
- HARDWARE8
- PERIPHERALS10
- CARTRIDGES10
- CUSTOM CARTRIDGES7
- MISC6
- EMULATOR DEVELOPMENT16
- TESTING8
- ASSEMBLERS3
- COMPILERS2
- EXPERIMENTAL/PROOF OF CONCEPTS10
- EMULATORS9
- ENGINES2
- DEVELOPMENT TOOLS10
- GRAPHICS UTILITIES14
- HARDWARE AND ROM UTILITIES5
- MUSIC DRIVERS AND TRACKERS8
- ASM10
- SOURCES3
- TIMINGS5
- BOILERPLATES AND LIBRARIES9
- SYNTAX HIGHLIGHTING PACKAGES7
- C13
- HOMEBREWS1
- ASM30
- C35
- GB STUDIO3
- DEMOS8
- REVERSE ENGINEERING6
- GAME DISASSEMBLIES14
- RETRIEVING IMAGES5
- CHANGING THE CAMERA'S BEHAVIOR3
- POST PROCESSING2
- RELATED PROJECTS36
- DIRECTORIES3
- WEBSITES3
General
1_ENTRIESYou can find a (way cooler) web version of this list here.
- Discord Badge
A curated list of awesome Game Boy (Color) Development resources, tools, docs, related projects and open-source ROMs. Inspired by the awesome list thing.
Introduction
2_ENTRIESCommunity
2_ENTRIESDocumentation
5_ENTRIES- **Pan Docs**
The single, most comprehensive technical reference to Game Boy available to the public. Corrected, updated and maintained by the community.
- The Cycle-Accurate Game Boy Docs
A precise documentation by AntonioND to make a cycle-accurate Game Boy emulator.
- Complete Technical Reference
by Gekkio.
- Game Boy Architecture: A Practical Analysis
by Rodrigo Copetti.
- Game Boy Project Report
Report of an hardware emulator (on a Terasic DE1-SoC Board) developed as final project for the CSEE4840 Embedded Systems Design course at Columbia University.
Opcodes
2_ENTRIES- 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
5_ENTRIES- GBC Hicolour notes
A technical note regarding Hicolour mode trick for Game Boy Color and its realization in the GBC game βCrystalisβ.
Hardware
8_ENTRIES- 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
10_ENTRIES- Dan Docs
Obscure Game Boy hardware documentation.
- Edge of Emulation
, a series of articles about emulating and investigating Game Boy accessories. Also available as technical documents in the GBE- emulator documentation.Mobile Adapter GB - Internet connectivity and DLC on the Game Boy Color.The Game Boy PrinterPocket Sonar - A blue cart with built-iβ¦
- Game Boy Camera RE
Documentation about GB Camera and tools used to reverse engineer it by using Arduino.
- The Game Boy Printer
An in-depth technical document about the printer hardware, the communication protocol and the usual routine that games used for implementing the print feature.
- Ben Heck Reverse Engineers Game Boy Printer
(Errata: the used thermal paper is expired, 4 colors are actually printable).
- Arduino Game Boy Printer Emulator
Emulating a Game Boy Printer via the Game Boy Link cable with an Arduino.
Cartridges
10_ENTRIES- GB Flash Cartridges for Sale
A List of available, ready-made Game Boy Flash Cartridges.
- AntonioND's docs
Corrected schematics and infos on cartridge header data.
- Gekkio's Game Boy cartridge types
An overview on existing cartridge types.
- Gekkio's cartridge analysis
Gekkio's cartridge analysis:DMG-BEAN-02;MBC1;no MBC.
- Pinout, registers descriptions and VH...
Pinout, registers descriptions and VHDL code of some cartridge types on Tauwasser's wiki:MBC1MBC2MMM01
- Game Boy Cartridges Schematics
Schematics for MBC2 and MBC3 types.
- MBC1+RAM+Battery cartridge Schematic
First schematics by Jeff Frohwein.
- MBC1 and MBC2 cartridges circuits
and explanation on how these MBC bank switch and control RAM.
Custom cartridges
7_ENTRIES- Emulating a GameBoy Cartridge
Emulating the functionality of a Game Boy cartridge with the development board STM32F4.
- Wolf
Game Boy cartridge with co-processor.
- Homebrew-Gameboy-Cartridge
Eagle library, schematic, and board files for a cartridge PCB using an Atmel AT49F040 as ROM.
- Homebrew Gameboy Color Cartridge
Board layout for an EEPROM powered cartridge.
- Reiner Ziegler's Game Boy page
Commercial and homemade programmable cartridges and programming systems. Tutorials, wiring and schematics provided.
- Gameboy-MBC5-MBC1-Hybrid
CPLD implementation of a MBC5/MBC1 Hybrid cartridge.
Misc
6_ENTRIES- Introduction to Game Boy Hacking
Workshop introducing basic assembly, debugging and reverse engineering.
- GBSOUND.txt
A document detailing the Game Boy sound engine.
- gbdev FAQs
Must read by Jeff Frohwein.
- Game Boy Bootrom
Commented dump of the DMG bootrom.
- Gameboy 2BPP Graphics Format
Information on how the Game Boy interprets VRAM tile data to color pixels.
Emulator Development
16_ENTRIES- Reverse Engineering fine details of Game Boy hardware
43 minutes talk by Gekkio given at Disobey 2018 (errata).
- Emulation of Nintendo Game Boy
Overview of the Game Boy hardware with the perspective of building an emulator.
- DMG-01
An educational Gameboy Emulator in Rust and a companion book explaining its development. *Oh Boy! Creating a Game Boy Emulator in Rust- is a talk given at Rust Fest 18 about this.
- Building a Game Boy emulator in JavaScript
Step by step tutorial.
- 0dmg
Learning Rust by building a partial Game Boy emulator.
- RealBoy Emulator
A series of posts about the design and implementation of the RealBoy Emulator.
- Codeslinger
Another series of posts documenting the building of an emulator.
- binjgb rewind
Implementing a *rewind- feature.
- binjgb on the web
Porting of the binjgb emulator to Web Assembly. (Part 2)
- binjgb debugging hangs
Investigations on emulations quirks.
- Decoding Gameboy Z80 opcodes
How to algorithmically decode Game Boy instructions (as opposed to writing one huge switch-case statement).
- About swotGB
Notes about the development of a Game Boy emulator in JavaScript.
- Game Boy Doctor
A command line tool for comparing logs from your emulator to those from a known-correct one. Useful for line-by-line debugging of Blargg's test ROMs.
Testing
8_ENTRIES- 144p Test Suite
Port of Artemio Urbina's 240p Test Suite to the Game Boy.
Assemblers
3_ENTRIES- RGBDS
Assembler and linker package. Documentation.
- ASMotor
Assembler engine and development system targeting Game Boy, among other CPUs. Written by the original RGBDS author. Documentation.
- wla-dx
Yet Another GB-Z80/Z80/... Multi Platform Cross Assembler Package. Documentation.
Compilers
2_ENTRIES- 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.API docs: Getting StartedExamplesDocumentation, links and tools
- 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
10_ENTRIES- 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
9_ENTRIES- 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.
Engines
2_ENTRIES- Retr0 GB
An engine for creating games (expands GBDK).
Development tools
10_ENTRIES- 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
14_ENTRIES- 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
5_ENTRIES- cart-dumper
Game Boy Cartridge Dumper ROM.
- gbcamextract
Extracts photos from Game Boy Camera saves.
- Game Boy LCD sniffing
Sniff your Game Boy's LCD using a logic analyzer.
- swapdump
Diagnostic utility for Game Boy flashcarts.
- Gameboy-LinkUp
Game Boy LinkUp serial cable networking project.
Music drivers and trackers
8_ENTRIES- 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.
ASM
10_ENTRIES- gb asm tutorial - Step by step tutorial, building several ROMs to accompany its explanations.
- hardware.inc
Standard include file containing Game Boy hardware definitions for use in RGBDS projects.
- Assembly tutorial by David Pello
Good document to learn to produce working asm code for gb. Brief explanations of many important topics. Many examples with commented source code.
- assemblydigest
Exploring Game Boy programming techniques:Making an Empty Game Boy ROM (in Wiz)Making Art for the Game Boy
- Beginner's Guide to Reverse Engineering GB
Some starting tips on disassembling and reverse engineering.
- Super Game Boy development
Step by step tutorial to implement Super Game Boy features (frame and palettes).
- GameBoy programming tutorial: Hello World!
Step by step tutorial.
- DMGreport
Game programming tutorials in assembly.
- OAM DMA tutorial
Example of how to use OAM DMA in assembly.
- Game Boy Assembly Programming for the Modern Game Developer
An e-book about making Game Boy games in Assembly.
Sources
3_ENTRIESFragments 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
5_ENTRIESBoilerplates and libraries
9_ENTRIES- rgbds-template
Basic hello-world example for Game Boy using RGBDS.
- Game Boy Assembly Language Primer
Simple template code with memory defines, copy routines and IBM font tilemap.
- bootstrap.gb
An example Game Boy project.
- Gameboy Boilerplate
Boilerplate project to move quicker into the actual assembly code for your game.
- GingerBread
A software library for making your own Game Boy games. It is made to be used alongside the book Game Boy Assembly Programming for the Modern Game Developer which also doubles as documentation.
- gb-vwf
Library to print variable-width text, comes with a demo.
- gb-boilerplate
A template for starting Game Boy projects, providing a Makefile for infrastructure.
- gb-starter-kit
An expansion on the above, including base library code as well to get started faster.
- gb-template
A template with basic functions such as joypad input, DMA transfers, and map/tile data loading.
Syntax highlighting packages
7_ENTRIES- gbz80-highlight
Notepad+- and gedit syntax highlighting files for RGBDS assembly.
- Vim syntax file for the Game Boy assembler RGBASM
Vim syntax highlighting for RGBDS assembly.
- Vim syntax file for RGBDS
Another Vim syntax highlighting file for RGBDS assembly.
- sublime-rgbds
A Sublime Text 3 package for RGBDS, including syntax highlighting and some completion snippets.
- rgbds-vscode
Visual Studio Code language extension for RGBDS GBZ80 Assembly.
- rgbds-mode
Emacs major mode for RGBDS assembly.
C
13_ENTRIES- 8-Bit Wonderland
Well-written introductory document about how the Game Boy works and how to start developing working code for it.
- Grooves Game Boy Programming
A complete set of lessons about implementing various game mechanics in a Game Boy game.
- How to Write a Simple Side Scrolling Game
Old (but still relevant) tutorial.
- GBDK Tutorial
Fairly minimal game demo for getting started with GBDK.
- GBDK Sprite
Presents a workflow for getting multiple sprites to display and animate.
- GBDK Color
Extends your knowledge of basic spriting on the Game Boy by adding colors to sprites, backgrounds and the window layer.
- GBDK Joypad
Details the use of the joypad with GBDK.
- Game Boy home of Flavor
Some full games and sources.
- GBDK Configuring and Programming Tutorial
Configuring GBDK, Using Tiles, Colliding Sprites, GBTD, GBMB, Memory Management and ROM Banking.
- GBDK Programming Video Tutorials
A series of video tutorials introducing beginners to programming with GBDK.
- Larold's Retro Gameyard
A collection of detailed GBDK-2020 based tutorials.
Homebrews
1_ENTRIESComplete 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
30_ENTRIES- GB303
GB303 wavetable-based TB-303 style synthesizer for the Nintendo Game Boy.
- kupman
and some other projects.
- GBSlides
A simple Game Boy Powerpoint-like slides viewer.
- Pokered-gbc
PokΓ©mon Red remade with full GBC support.
- StefaN
Fourway Breakout clone.
- desgb
DES encryption.
- waveform-gb
Program visualizing the wave form used by the wave channel. The wave form can be edited freely and playback of the wave is updated immediately.
- vectroid.gb
Developed with gbasm.
- Quartet
Puzzle game for the Game Boy (Color) and Super Game Boy.
C
35_ENTRIES- Bubble Factory
*Vanilla- SDCC (no gbdk).
- GBC Atari Boxing
Atari 2600 Boxing clone for the Game Boy (Color).
- GB raycaster, Vision-8
and some other projects.
- Tobu Tobu Girl Deluxe
An arcade platformer for the Game Boy (Color).
- Dino's Offline Adventure
A clone of the Google Chrome offline game.
- dino-gb
Another clone of the Chrome game.
- Evoland.gb
A port of the first level of Evoland.
- 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.
- Black Castle
Side scrolling platformer for the Game Boy (itch.io).
- Powa!
Side scrolling platformer for the Game Boy (Color) (ZGB engine).
GB Studio
3_ENTRIES- Soul Void
Interactive horror fiction.
Demos
8_ENTRIES- matrix-rain-gb
A Matrix digital rain effect in assembler.
- GBVideoPlayer
A technical demo demonstrating how the Game Boy LCD controller can be hacked to make a Game Boy Color play a full motion video in color, together with music.
- GBVideoPlayer2
The second iteration of the above demo, which increases the resolution, adds stereo- PCM audio, and introduces video compression.
Reverse Engineering
6_ENTRIES- pokemontools
a python module that provides various reverse engineering components for various PokΓ©mon games.
- Reverse Engineering a Gameboy ROM with radare2
A walkthrough to reverse engineer a Game Boy ROM challenge using radare2.
- Disassembling Link's Awakening
A series of blog posts about disassembling Link's Awakening DX.
- DMA hijacking
A simple technique that allows you to run custom code in most GB/SGB/CGB games, provided you have an ACE exploit.
Game Disassemblies
14_ENTRIES- pokegold-spaceworld
PokΓ©mon Gold and Silver 1997 Space World demo.
- Tetris
Complete Tetris disassembly.
Retrieving images
5_ENTRIESGame Boy Printer emulation (e.g. to retrieve images from the camera):
- Arduino Gameboy Printer Emulator
Emulate a gameboy printer via the gameboy link cable.
- ESP8266 Game Boy Printer
A device that emulates the Gameboy Printer and lets you retrieve images using WiFi powered by an ESP8266.
- WiFi GBP Emulator
A GameBoy printer emulator which provides the received data over a WiFi connection.
- Game Boy WiFi Printer - D1 Mini Shield
Game Boy Printer interface shield for D1 mini/mini Pro ESP8266 boards.
- Game Boy Printer Sniffer
Sniff packet communications between a Game Boy and the Printer.
Changing the camera's behavior
3_ENTRIESMethods to improve and/or manipulate the camera's quality and behavior:
- Game Boy Camera to Canon Lens mount
based on the above.
- game-boy-camera-frame-replacer
Manipulate the ROM of a camera to include custom frames
Post processing
2_ENTRIES- Game Boy Printer Paper Simulation
Generate as-if-printed images of digital printed images.
- Game Boy Printer Web
Gallery app for to the Game Boy camera: import pictures from exports or cartridge dumps and choose color palettes.
Directories
3_ENTRIES- The Game Boy Archive
A library of Game Boy related software, hardware and literature. Aimed to mirror and preserve old and fragmented contributions from the last three decades.
- The Game Boy Archive - Salvage
Historical archive of software, old articles, FAQs and various documents.
Websites
3_ENTRIES- 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.