Paragon Project: DOOM on an Arduino Nano

There’s a classic question in the universe of computer games – but can it run Crysis? However, in the world of microcomputer games and microcontrollers, we have a slightly different question – but can it run DOOM?
Well we finally have the answer for the Arduino Nano. And the answer is: yes!
You can indeed play DOOM on an Arduino Nano, albeit with some necessary adjustments. But by the end of this little project, you’ll have a fully portable DOOM console.
Huge shout out to Naveen, who created this and then uploaded the details to hackster.io to show you how you can put it together yourself!

And really, this is unbelievably straightforward. All you need to do is wire the components together and then configure and flash the firmware in order to get DOOM running.
On the hacker.io page, the estimation that this project will take you 5 hours. But I’d say you could probably get it done a lot faster than that with Naveen’s fantastic instructions.
Hardware
So, as already mentioned, this project revolves around an Arduino Nano. Naveen’s gone with an Adafruit 2.8″ TFT capacitive touchscreen as the display, but if you’ve got another display lying around, that’ll surely do.
Additionally, Naveen has gone with a breadboard to hold everything together. For the proof of concept, as you might have notice, this console is also made with some leftover plastic. Of course, something like will only serve as a temporary solution.
If you’re looking to hook this up permanently, you might have to get creative with a 3D-printed case and a soldering iron.
Anyway, aside from that, if you look at the picture below, you’ll see that Naveen has also utilized an M5Stack Joystick and a Seeed Studio Grove dual button. Again, if you’ve got another joystick or other buttons lying around, those will suffice.

Finally, of course, you’ll need some jumper wires to hook up everything together through the breadboard.
As Naveen explains, the connection between the Nano and the TFT display is based on the Serial Peripheral Interface (SPI). Meanwhile, the joystick and buttons are connected via the Inter-Integrated Circuit Bus (I2C).
Software
Naveen clarifies that in order to port DOOM, the game requires some modification, because the original game demands more RAM and disk space than the Arduino Nano offers.
Therefore, the setup is based on Ducalex’s very cool Retro-Go repository on GitHub, which is firmware that modifies classic games for ESP32 devices.
For this project specifically, Naveen has configured it to work with the joysticks, buttons, and display. aking a DOOM configuration that you’re sure to appreciate.
Then you just need to flash the firmware and enable WiFi on the SD card and then insert that into your Arduino Nano.

The game has an average frame rate of 34 FPS with a resolution of 320×240 pixels.
Now you can have DOOM on the go with an Arduino Nano!
Conclusion
You can find the full schematics, code, and more details over on the hacker.io page.
You can also check out more Paragon Projects that we’ve featured by clicking here.
We’ve covered one of Naveen’s projects before, the Microcontroller Computer.
Let me end this with a confession. To be honest, I’ve never actually completed the classic, full DOOM – have you?