Main Content

Given a new platform it is only natural to think of porting Doom to it. With 264K of RAM, two CortexM0+ CPUs and a decent clock speed, the RP2040 is certainly not the tightest platform Doom has ever been ported to - although at <$1 it is probably one of the cheapest - so I wanted to set my self a more aggressive set of goals:

Everything should match the original game experience, i.e. all the graphics at classic 320x200 resolution, stereo sound effects, OPL2 music, save/load, demo playback, cheats, network multiplayer… basically it should feel like the original game.

It should run on a Raspberry Pi Pico. This really tightens things up a lot, as there is only 2M of flash for all the code and data. Nevertheless, I decided that all 9 levels of the shareware DOOM1.WAD should be playable on the Pico in a single binary. There was to be no sneaky discarding of splash screens, altering of levels, down-sampling of textures or whatever. RP2040 boards with 8M should be able to play at least the full Ultimate Doom and DOOM II WADs.

The RP2040 should output directly to VGA (16 color pins for RGB565 along with HSync/VSync) along with stereo sound. Note that the RP2040 itself doesn’t have any video or audio hardware, however its PIO (Programmable IO) feature can be used to generate a wide range of digital signals under software control.”

Link to article