Paragon Project: DOOM on an Arduino Nano ESP32

Doom on Arduino Title Image

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 ESP32, 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!

Credit: Naveen.

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 ESP32. 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.

Credit: Naveen.

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 then you need a configuration file to enable WiFi automatically on the ESP32.

Put that on the SD card and then insert that into your Arduino Nano.

Credit: Naveen.

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?

21 Comments

  1. Виталий on September 15, 2023 at 12:49 pm

    это ложь в некоторой степени. представленная ссылка ведёт на Ардуино нано с атмега 128, а на картинках esp32. это небо и земля

    • Adam on October 9, 2023 at 10:45 am

      Да, ссылка была неверной – спасибо за комментарий!

  2. motosega on September 15, 2023 at 1:03 pm

    that’s not an Arduino nano with an atmega 328 (like the one you linked).

    it’s an Arduino nano-stm32. which isn’t that shocking to run doom on. significantly more powerful than say: an Amiga 500, which people have gotten doom running on.

    • Adam on October 9, 2023 at 10:45 am

      Yes, the link was listed incorrectly. Sorry for the mistake!

  3. Tim on September 15, 2023 at 7:42 pm

    that’s a nano-esp32 version. I thought for a
    moment you had this running on an AVR nano.

    • Adam on October 9, 2023 at 10:46 am

      No, sorry. I didn’t make the ESP32 part clear enough! I’ve corrected the text.

  4. Alex on September 15, 2023 at 8:32 pm

    Es ist ein “minimaler” Unterschied zwischen einem Arduino Nano (8 MHz, 2kB RAM) und einem ESP32 (240MHz, viel mehr RAM)! Das ist komplett irreführend formuliert.

    • Adam on October 9, 2023 at 10:47 am

      Du hast voll recht! Ich habe den Text korrigiert. Danke für den Kommentar!

      • Albert on November 8, 2023 at 2:05 pm

        Aber Du sprichst sehr gut Deutsch. Wo kommst Du her?

  5. Алексей on September 15, 2023 at 10:42 pm

    это не просто Arduino Nano, а ардуино с контроллером esp32. А ссылка отправляет нас в магазин где просто arduino nano, а не esp32

    • Adam on October 9, 2023 at 10:48 am

      Да, ссылка была неверной – спасибо за комментарий!

  6. Александр on September 16, 2023 at 6:12 am

    Что бы писать такие статьи, нужно хоть немного разбираться в этом. Создатель молодец, а автор статьи написал полную ахинею.

    • Adam on October 9, 2023 at 10:50 am

      Хаха извини за ахинею!

  7. Проходящий мимо пользователь on September 16, 2023 at 6:16 am

    просьба поменять заголовок, так как используется Arduino Nano ESP32

    • Adam on October 9, 2023 at 10:52 am

      Все в порядке?

  8. Brak wiedzy autora on September 18, 2023 at 4:57 am

    to nie jest Arduino nano !
    nano jest na atmedze a nie na esp

    • Adam on October 9, 2023 at 10:51 am

      Masz rację, przepraszam za pomyłkę! To jest Arduino Nano ESP32

  9. Brak wiedzy autora on September 18, 2023 at 4:59 am

    wifi na karcie SD ???

    • Adam on October 9, 2023 at 10:55 am

      Myślę, że w tłumaczeniu brakowało jednego słowa. Teraz lepiej?

  10. robbert on December 4, 2023 at 8:33 pm

    pretty stuck in the esp idf progress. (code is not the same as in your documents) a pre compiled version available that only needs uploading?
    that would be nice 😀

  11. robbert on December 4, 2023 at 8:38 pm

    Seems like my last comment didnt make it trough haha

    Im pretty stuck at the esp-idf progress. the code seem the have changed over time.
    wanted to build one for my kids this christmas haha
    any option to get a pre-compiled bin to upload to the esp32?

    With kind regards and many thanks
    Robbert

Leave a Comment