Game Boy Development
Contents
Introduction
Game Boy Advance
Cartridges
Custom cartridges
Eagle library, schematic, and board files for a cartridge PCB using an Atmel AT49F040 as ROM.
Board layout for an EEPROM powered cartridge.
Open-source flash cartridge using an Xilinx CPLD as MBC5 (Post).
CPLD implementation of a MBC5/MBC1 Hybrid cartridge.
Documentation
Opcodes
Hardware
by Gekkio.
Dev board for Game Boy accessories development, powered by ESP8266.
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.
Game Boy Color
Game Boy Camera
Retrieving images
A device that emulates the Gameboy Printer and lets you retrieve images using WiFi powered by an ESP8266.
Emulate a gameboy printer via the gameboy link cable.
A GameBoy printer emulator which provides the received data over a WiFi connection.
Game Boy Printer interface shield for D1 mini/mini Pro ESP8266 boards.
Sniff packet communications between a Game Boy and the Printer.
Changing the camera's behavior
Emulators
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, ... )
Accurate emulator with a wide range of powerful debugging features.
Research project and emulator in Rust.
Modern cross platform GBA emulator which also runs GB/GBC games.
5Kloc emulator that passes most of the tests. *Rewind- feature. Runs in the browser using WebAssembly.
Cross-platform and accurate emulator.
A playable, circuit-level simulation of an entire Game Boy.
Emulator Development
Overview of the Game Boy hardware with the perspective of building an emulator.
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.
Learning Rust by building a partial Game Boy emulator.
https://djhworld.github.io/post/2018/09/21/i-ported-my-gameboy-color-emulator-to-webassembly/
Notes about the development of a Game Boy emulator in JavaScript.
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
Port of Artemio Urbina's 240p Test Suite to the Game Boy.
and cgb-acid2 - Basic PPU rendering tests.
- Basic PPU rendering tests.
Software Development
Assemblers
Assembler and linker package. Documentation.
Assembler engine and development system targeting Game Boy, among other CPUs. Written by the original RGBDS author. Documentation.
Yet Another GB-Z80/Z80/... Multi Platform Cross Assembler Package. Documentation.
Compilers
Experimental/Proof of Concepts
A high-level assembly language for writing homebrew on retro console platforms (Game Boy, NES, Atari 2600, and more).
A Forth-based Game Boy development kit.
An opinionated Rust based compiler for Game Boy z80 assembly code.
A JavaScript based compiler for Game Boy z80 assembly code.
Assembler written in Swift.
Clang/LLVM port to the GBZ80 CPU (similar to the deprecated euclio/llvm-gbz80).
Clang/LLVM port to the GBZ80 CPU (similar to the deprecated euclio/llvm-gbz80).
similar to the deprecated [euclio/llvm-gbz80]
A compiler translates Go programs to C code. The output C code is built into GB ROM by GBDK.
A compiler and library that enable the development of GB ROMs using Rust.
C
A complete set of lessons about implementing various game mechanics in a Game Boy game.
- (ZGB engine).
Vanilla- SDCC (no gbdk).
Atari 2600 Boxing clone for the Game Boy (Color).
and some other projects.
An arcade platformer for the Game Boy (Color).
A clone of the Google Chrome offline game.
Another clone of the Chrome game.
A port of the first level of Evoland.
A puzzle game of shapely pets for the Game Boy Color (itch.io).
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.
Fairly minimal game demo for getting started with GBDK.
Tools
Development tools
A small set of sources and tools for the Game Boy Development Kit by Michael Hope.
Game Boy ROM disassembler with RGBDS compatible output.
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.
Game Boy decompiler.
Set of tools for text manipulation and translation of Game Boy ROMs written in Node.js.
A scripting language for the Game Boy, useful for enemy AI, dialogue, animations, and coroutines.
A unit testing program for assembly code.
Generates statistics on which CPU instructions are run the most often using Python and Emulicious
Graphics utilities
HTML5 / JS web application that will convert bitmap images to hexadecimal data appropriate for use in tile based graphical applications, specifically GB.
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.
Graphics converter for Game Boy Color development providing real time palette adjustments.
CLI tool to convert image file to game boy .c array.
Game Boy tile conversion and map editor tool (converts to assembly).
A minimalistic ncurses tile editor.
Definition and specification of a custom GB/GBC memory/hardware mapper, as a functional superset of MBC.
A C library of useful Game Boy operations (SDCC).
GIMP image editor plug-in for importing & exporting GBMB and GBTD tilemaps and tilesets (as bitmap images or .GBM/.GBR files).
GIMP image editor plug-in for optimizing tile maps and tile sets.
A tilemap editor for Game Boy, Color, Advance, and SNES projects. Written in C++ with FLTK.
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
Game Boy Cartridge Dumper ROM.
Extracts photos from Game Boy Camera saves.
Sniff your Game Boy's LCD using a logic analyzer.
Diagnostic utility for Game Boy flashcarts.
Game Boy LinkUp serial cable networking project.
Music drivers and trackers
Sound driver embeddable in homebrews which supports pulse width manipulation, arpeggios, and multiple waveforms.
A music player library and converter kit.
A MML parser and GBDK sound driver for the Nintendo Game Boy.
An MML based music compiler with support for Game Boy & Game Boy Color.
A modernized audio driver for GameBoy Tracker (aka the Paragon 5 music player).
A music tracker based on OpenMPT, focused on ease of use, compact output, and embeddability in homebrew games.
A GBDK-2020 sound effect driver compatible with FX-Hammer sound effects.
ASM
Boilerplates and libraries
Related projects
A CPU and peripherals implementing the Game Boy instruction set and functionality.
Serial communication (MIDI) from an Arduino to the Game Boy for music applications such as LittleSoundDJ, Nanoloop, and mGB.
Game Boy Classic fully functional FPGA implementation from scratch.
Implementation Nintendo's Game Boy console on an FPGA.
A LUA-driven AI that plays classic Game Boy color games using experimentation. In active development.
A Game Boy Sound System player written in Swift.
A Game Boy cartridge program that enables the Game Boy to act as a full MIDI supported sound module.
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.
Arduino based Game Boy cartridge reader and writer.
Brainf*ck interpreter.
Brainf*ck interpreter, with input.
Patches to add save state support to Game Boy games when playing on the original hardware.
Utility library for interacting with the LSDj save format (.sav), song files (.lsdsng) and more.
Tool for modifying samples, fonts and palettes on LSDj ROM images.
Some little experiments using the STAT interrupt to do funny video manipulations.
A basic operating system for the Game Boy.
Game Boy compatible console Verilog RTL implementation.
Lo-Fi portable video recorder using a GameBoy Camera cartridge.
Read ROM, Read RAM or Write RAM from/to a GameBoy Cartridge.
A device for reading game ROMs, save games and restoring saves for GB, GBC and GBA carts from your PC via USB.
A 3D model of the Game Boy CPU layout in Blender.
Homebrews
ASM
GB303 wavetable-based TB-303 style synthesizer for the Nintendo Game Boy.
and some other projects.
A simple Game Boy Powerpoint-like slides viewer.
Pokémon Red remade with full GBC support.
Fourway Breakout clone.
DES encryption.
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.
Demos
A Matrix digital rain effect in assembler.
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.
The second iteration of the above demo, which increases the resolution, adds stereo- PCM audio, and introduces video compression.
Reverse Engineering
Game Disassemblies
Pokémon Gold and Silver 1997 Space World demo.
Complete Tetris disassembly.