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-CPU-Inside -
        Schematics and annotated overlay for the DMG-CPU-B chip, extracted from
        die photos.
      
 
    
    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.
      
 
    
    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.
      
 
      - 
        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.
      
 
      - 
        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.
      
 
    
    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
    
      - 
        DevSound - 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.
      
 
      - 
        SoundSystem
        - 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.
      
 
    
    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 - 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.
      
 
    
    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.
      
 
      - 
        Gatesboy
        - Non-gaming purposes applications 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, sponsoring the
      open source activites of our Game Boy Development community (announcement).