DOOM

Yes, it runs DOOM. E1M1 — Knee-Deep in the Dead — renders on the badge’s e-paper panel at a couple of frames per second, in four levels of grey, with the level’s music picked out on the piezo buzzer.

It is a slideshow, and it is genuinely playable.

How to install it

Getting DOOM running takes two steps, because the game data is far too big to sit on the badge’s little USB drive. The firmware goes into the badge’s program memory over USB; the game data goes into the separate 2 MB QSPI flash chip over a serial connection.

  1. Flash the DOOM firmware on the Flash page, the same way as any other image, then power-cycle the badge.
  2. Upload a WAD with the loader below.

Upload a WAD

This browser cannot upload. Web Serial is required, and only Chromium-family browsers ship it (Chrome, Edge, Brave, Opera, Arc). Firefox and Safari do not. You can still send the blob from a terminal with a YMODEM tool such as sb or lrzsz.

1 Choose a WAD

No WAD chosen yet.

2 Put the badge in upload mode

Reset the badge while holding Cancel. It does this on its own too, whenever no WAD has been uploaded yet. The screen says it is waiting for a transfer.

disconnected

Pick the badge's serial port when the browser asks — on Linux it is usually /dev/ttyACM0, on macOS a usbmodem entry, on Windows a COM port.

3 Upload

idle

Nearly two megabytes over a serial line takes a few minutes. Leave the tab in the foreground and do not unplug the badge.

Diagnostics

Controls

InputAction
JoystickMove, strafe and turn
Joystick press (Fire)Shoot
ExecuteUse / open doors
CancelCycle weapon — and, held at boot, enter WAD upload mode
Execute + CancelToggle the music

If something goes wrong

The browser never shows a serial port. The badge only presents its serial console in WAD upload mode. Reset it while holding Cancel and try again.

“Timed out waiting for the badge to ask for data”. The badge is connected but not in upload mode, so nothing is asking for a transfer. Reset holding Cancel.

The upload fails part-way. Nothing is damaged — the badge simply has no usable WAD and drops back into upload mode. Reconnect and send it again.

DOOM boots but complains about missing game data. The firmware is installed and the WAD is not, which is exactly what you get after a fresh flash. Upload it above.

Firefox or Safari show no Connect button. Neither ships Web Serial. Use a Chromium-family browser, or send the blob from a terminal with a YMODEM tool:

sb --ymodem-1k e1m1.blob < /dev/ttyACM0 > /dev/ttyACM0

About the game data

Only one level fits: the blob offered above is about 1.8 MiB, roughly 92% of the badge’s QSPI flash. It is built from the freely distributable shareware doom1.wad, trimmed and compressed by the asset pipeline in the cyberaegg-doom repository. DOOM and its game data remain the property of id Software.

To build your own from a copy of doom1.wad you already have:

bash tools/build_assets.sh    # doom1.wad -> build/e1m1.blob

Then pick that file in the loader instead of the prepared one.

Source

The port lives at rarenerd/cyberaegg-doom. It is a fork of next-hack/nRF52840Doom (of prBoom and GBADoom lineage), re-fitted to the badge’s e-paper display, buttons and power budget. The DOOM engine is licensed under the GPL.