PicoDMZ Devlog

Not just another Game Boy Emulator

View on GitHub

Build Guide

Flashing The Firmware

Preparing The SD Card

The emulator uses a FAT32 microSD card for ROMs and save data.

Subfolders are not currently the default workflow for ROM discovery.

Building From Source

The Raspberry Pi Pico SDK is required. Make sure a Pico SDK example project builds correctly before working on this repository.

Select the display driver with DISPLAY_DRIVER:

Example build:

cmake -S . -B build -G Ninja -DDISPLAY_DRIVER=ST7789
cmake --build build -j --target RP2040_GB

RP2350 / Pico 2 example:

cmake -S . -B build_pico2 -G Ninja -DPICO_BOARD=pico2 -DDISPLAY_DRIVER=ST7789
cmake --build build_pico2 -j --target RP2040_GB

Feature Toggles

ST7789-specific flags are documented in display-st7789.md.

Embedded ROM Mode

Embedded ROM mode compiles a .gb file into the UF2 so the emulator can run without SD card wiring.

Example:

cmake -S . -B build -G Ninja \
  -DDISPLAY_DRIVER=ST7789 \
  -DRP2040_GB_ENABLE_SDCARD=OFF \
  -DRP2040_GB_BUILTIN_ROM=/home/user/roms/tetris.gb

NFC Builds

To build with RC522 support enabled:

cmake -S . -B build -G Ninja \
  -DDISPLAY_DRIVER=ST7789 \
  -DRP2040_GB_ENABLE_SDCARD=ON \
  -DRP2040_GB_ENABLE_SOUND=ON \
  -DRP2040_GB_ENABLE_NFC=ON \
  -DRP2040_GB_USE_DMG_BUTTON_MATRIX=ON \
  -DRP2040_GB_DEFAULT_INTERLACE=ON

cmake --build build -j --target RP2040_GB

See nfc.md for tag workflow, mapping behavior, and RC522 wiring.