Doom can be run on anything. From a 386 PC in the 1990s, to a Raspberry Pi Pico today. But did you expect to slaying the hordes of hell via a Christmas decoration? Inside Sprite_tm’s lovingly recreated IBM PC “bauble” is an ESP32 and a full copy of Doom. But that’s not all, if you have good eyesight, you can play it!
It is clear to see that Sprite_tm’s project is a labor of love. The project is powered by an ESP32 microcontroller, specifically an ESP32-C3-WROOM-02 and this gives the project the ability to wirelessly connect to Bluetooth LE controllers. Sprite_tm used the NimBLE lightweight Bluetooth stack to create an interface for a compatible keyboard and controller. The decoration plays a special Game Boy Advance port of Doom. Not the original retail version, instead a stripped down version created by “Doomhack”. The stripped down version runs excellently on the ESP32’s RISCV’s SoC at 160 MHz and 400KB of SRAM and restores more of the original PC version to a port that was heavily censored on release. The choice of ESP32 chip is deliberate, as Sprite_tm works for Espressif, the makers of the ESP32 and venerable ESP8266. The core system is contained in a custom PCB, enabling everything to be shrunk down for the diminutive PC case.
Image 1 of 4
The integrated 0.96 inch display is far too small for our aging eyes and it also appears it is slightly too long for the model’s “monitor”. Cleverly, Sprite_tm rotated the monitor lengthways, so that a portion of the screen is visible in the monitor. A few code tweaks to resize and rotate the video and a tiny portion of the screen is used. The decoration also features I2S audio playback and classic OPL audio versions of the original soundtrack. Audio is then played via an appropriately scaled speaker. Powering the PC is a small Li-Ion cell which connects to the custom PCB.
The IBM PC 3D model was created in OpenSCAD and is an approximation of an IBM XT PC case. The PC was printed using an SLA 3D printer, with Sprite_tm commenting that it can also be printed on an FDM 3D printer, but SLA provides much better quality.
To learn more about Sprite_tm’s excellent Christmas decoration, head over to their blog. There you can find all of the schematics and files to reproduce your own Doomed Christmas decoration.