Doom runs on everything. Billboard trucks, digital cameras, and even McDonald’s cash registers have been tweaked to run the 1993 first person shooter. But a developer named Sylvain Lefebvre has taken Doom to the next level and programmed a computer chip to have only one exclusive task—it runs Doom.
“The DooM-chip! It will run E1M1 till the end of times (or till power runs out, whichever comes first),” Lefebvre said on Twitter.
As Engadget first reported, Lefebvre coded the game on to a Cyclone V FPGA circuit board—think a more expensive and powerful Raspberry Pi. The bulk of the code, the renderer, is 666 lines of code. The chip doesn’t play Doom so much as it runs a camera through a custom port of the first level, rendering it as it goes. This is all the chip does, and will continue to do as long as it's operational.
Lefebvre told Motherboard in an email that he’s tackling the project as part of a programming language he’s working on for FPGAs.
“I will be releasing everything at some point, and the Doom-chip will be one of the advanced examples,” he said. “So this is both an exercise for me, a stress test for the language I work on, and later a tutorial / proof of concept. Also an homage to Doom and the great community around it, as we all learned so much from hacking its data, executable and source code!”
“The level is rendered in real time on the FPGA, everything is stored within it, an external SDRAM is used for the framebuffer,” Lefebvre said. “I focused solely on the environment, forced all doors open to make the run and recorded the path from the excellent chocolate- Doom port that I hacked to store current position in a file. Still missing some environment features such as blinking lights and working doors/lifts, also the sky is solid gray. Other than that it has correct per-sector light levels and diminishing lights.”
Right now, the Doom chip only runs through a predetermined path. But Lefebvre plans to change that.“Interactivity is definitely possible, I am planning to hook a joystick and walk around,” he said. “The renderer starts from a position x,y,z, angle at every frame, whether this is pre-recorded or coming from a keyboard makes no difference for it. The thing that is missing however is to check collisions so that we slide gently along the walls as opposed to traversing them (basically we currently have idspispopd [A cheat code that removes collision detection] always on).”
Once someone can actually play the Doom chip, Lefebvre said he’ll look into adding monsters and sound. “It is both a question of fitting the data in there (I am roughly 80% full already with textures) and adapting the renderer while preserving framerate,” he said. “If this works, then moving monsters would be a great addition!”
“Algorithm is burned into wires, [look-up-tables] and flip-flops on [the chip,]" Lefebvre said. “Doom was released as I was learning how to code graphics. It was, and remains, an immense inspiration and motivation boost. I spent countless hours making levels, hacking the game and hex dumps of doom.exe / doom.wad. This was a good opportunity to dive back into it!”