The big picture: More than 30 years after its original release, Doom continues to captivate modders and code hackers. The "can it run Doom?" challenge shows no signs of slowing, as enthusiasts attempt to bring the iconic FPS to an ever-growing variety of hardware components and computing platforms.
Australia-based developer Arin Sarkisian recently unveiled DoomBuds, a project designed to run Doom on a pair of earbuds. Even more impressively – or alarmingly, if you're not a fan of extreme tech demos – he connected the earbuds to the internet, allowing players to join and play the game remotely.
The core of the DoomBuds project is the Pinebuds Pro, the only earbuds compatible with open-source firmware. Each earbud includes a Cortex-M4F SoC running at 300 MHz, although the stock firmware typically locks the CPU at 100 MHz. By disabling low-power mode and forcing the 300 MHz setting, the earbuds become theoretically capable of running a DOS game.
Running Doom on hardware so far removed from its original platforms, however, was not straightforward. Bluetooth proved too slow, so Sarkisian relied on the USB-to-UART serial connection available on the earbuds' contact pads. This serial link provides sufficient bandwidth to continuously transfer a typical Doom framebuffer of 96 kilobytes.
RAM posed another challenge, as the buds offer a maximum of only 992 KB of memory when the SoC's co-processor is disabled. Doom normally requires at least 4 MB of RAM, but a series of optimizations allowed the game to fit. Sarkisian also used a modified Doom WAD to shrink the shareware version's assets from 4.2 MB to 1.7 MB.
After numerous tweaks, optimizations, and code hacks, the modified Doom package comfortably fits in the earbuds' flash memory. The DoomBuds source code is based on doomgeneric, a framework designed to make porting Doom to unusual platforms easier. Additionally, the DoomBuds-JS repository includes all components necessary to interact with the earbuds via a web browser.
The video stream is transmitted through the USB-to-UART interface as a compressed MJPEG stream, with each frame – or interlaced field – encoded as an individual JPEG image. Since the Pinebuds Pro's SoC has limited ability to handle JPEG encoding, the setup achieves a maximum frame rate of about 18 FPS.
Despite these limitations and quirks, DoomBuds represents a remarkable achievement in the longstanding tradition of extreme Doom ports. Previous enthusiasts have brought the iconic FPS to screen savers, web servers, a LEO satellite, an Anker power bank, a QR code, and a collector's cardboard box, just to name a few projects.