Skip to content

Building Firmware and Apps

neednotapply edited this page Jul 21, 2026 · 2 revisions

Building Firmware and Apps

Requirements

  • CMake 3.20 or later
  • Ninja
  • Python 3
  • ARM Embedded GCC and Newlib

Build from source

git submodule update --init --recursive
cmake -S . -B build -G Ninja \
  -DCMAKE_TOOLCHAIN_FILE=cmake/arm-none-eabi.cmake \
  -DPICO_BOARD=defcon32_badge
cmake --build build

The build writes DC32-cfw.uf2, DC32-cfw.bin, and .DC32 apps under build/apps.

Build release artifacts

cmake --build build --target dcapp_sdk
python tools/build_sd_zip.py \
  --apps-output build/SD-apps.zip \
  --apps-dir build/apps \
  --work-dir build/sd-apps-work

dcapp_sdk creates build/DC32-App-SDK-v1.zip, the public SDK package for standalone app authors. The SD app archive contains the /APPS and /ICONS content that belongs on the card.

App development

Use the public SDK instead of firmware-internal addresses. SDK-v1 apps link only through the stable host interface and fixed veneers, so ordinary firmware refactors do not require every app to be rebuilt.

Read SDK v1 App Compatibility for the ABI contract, supported app categories, standalone packaging, and the CMake helper.

Content preparation helpers

The repository includes optional helpers for content that cannot be redistributed with the firmware:

  • python tools/image_converter.py converts images and animations to DC32-compatible GIF playback files.
  • python tools/build_chips_pack.py builds /APPS/chips.pak from legally obtained Windows 3.1 Chip's Challenge data.
  • python tools/build_openjazz_pack.py builds /APPS/openjazz.pak from legally obtained Jazz Jackrabbit data.

These helpers do not grant a license to the source material. See Media and Storage for the user-facing content paths and behavior.

Clone this wiki locally