It’s technically true that any piece of software can be reproduced in hardware, although modern software’s size and complexity generally makes this a non-starter. But if we go far enough back in time, older software becomes easier and easier to implement in hardware. The original DOOM from 1993 might one day be recreated in full this way, but that day is not today. Instead, [Nick] has recreated the original music from that game, playing the opening track in nothing but 555 timers.
The circuit starts with a 555 timer that acts as a system clock with a rate of just over 7 Hz. These pulses feed a binary counter which in turn feeds a decoder, giving the circuit 15 positions. Each output of the decoder feeds to a diode matrix which stores information about what pitch the circuit should play. The circuit only needs to play six pitches so the diodes effectively connect each moment in time to one of these six notes. From there the circuit feeds into a set of switches which select different resistor networks of another 555 which is actually responsible for producing sound. The resistor networks have different values to adjust the timing of the 555 to produce different pitches.
Of course this entire exercise is largely academic as almost any microcontroller would be able to be programmed to play this chiptune quite easily, but it’s not a bad idea to get down into the weeds of digital logic from time to time in order to refine one’s skills and knowledge about what’s really going on in the inner workings of circuits. Or, go even deeper than that and build the logic gates themselves from first principles.


For this project, [Andrea] began by porting the game to the SCINTIX P4. It’s a rather interesting device, being a single board designed in the Raspberry Pi CM4/CM5 form factor, but carrying an ESP32-P4 and an ESP32-C6 instead. The game runs on the P4 and is displayed on a 1024×600 MIPI DSI panel, but it’s only stepped through a few frames at a time. These frames are then passed to Claude Sonnet via a WebSockets setup. With only the same information as a human player would get, the LLM has to figure out what it’s looking at, and then respond with movement and fire commands to play the game.



