ESP32-Doom available
Posted: Mon Jul 03, 2017 11:27 am
Hi all,
Okay, if you happen to have hardware with a rev1 ESP32, psram and a LCD, I have something for you: you can run a version of Doom (the 1993 version, not the recent one) on your hardware!
The backstory, for whoever is interested in reading: Back when we started working on PSRam support for the ESP32, I decided to try and port Doom over to the ESP32, specifically the PrBoom version of Doom. Unfortunately, as you all know, Psram support for the ESP32 has been a slightly more rocky road than we expected, and Doom turned out to be a pretty good indication on if we still had bugs left... it's a pretty complicated program that has a pretty extensive set of memory access patterns, so whenever for example the demo de-synced or the program crashed, we knew we still had work to do. Needless to say: Doom at the moment runs stable on our hardware (as long as you don't try to do something we didn't implement.)
At the moment, the code is capable of running in 320x240 with a speed of around 20FPS. You can actually get a few FPS by clocking the flash at 80MHz instead 40MHz, but because Wrover-Kits do not work well at that speed out-of-the-box, we didn't enable it in the default sdkconfig.
We didn't implemented all things: there is no sound, no music, no savegame support and because we didn't include all data that PrBoom has (because we wanted it all to fit in 4MiB of flash) some menus will crash. Also, because of the 4MiB flash limitation, we only tested a stripped down version of the shareware Doom game data. With more flash, you can theoretically run other game data as well, but we did not test this. In general, this code comes as is: we do not expect to add any more features to it, although we're receptive to pull requests if you do.
A video, for those without the hardware: https://www.youtube.com/watch?v=Gb_JFDa0AIo
And for those with the hardware: the code repository is here: https://github.com/espressif/esp32-doom . Sorry, because of the licensing of PrBoom I'm not sure if we can spread compiled binaries around. The code needs the PSRAM SDK branch (plus toolchain) to work.
(And yes, I know E1L1 by heart now and can tell you exactly how the first demo goes and where it crashes if we have memory problems...)
Okay, if you happen to have hardware with a rev1 ESP32, psram and a LCD, I have something for you: you can run a version of Doom (the 1993 version, not the recent one) on your hardware!
The backstory, for whoever is interested in reading: Back when we started working on PSRam support for the ESP32, I decided to try and port Doom over to the ESP32, specifically the PrBoom version of Doom. Unfortunately, as you all know, Psram support for the ESP32 has been a slightly more rocky road than we expected, and Doom turned out to be a pretty good indication on if we still had bugs left... it's a pretty complicated program that has a pretty extensive set of memory access patterns, so whenever for example the demo de-synced or the program crashed, we knew we still had work to do. Needless to say: Doom at the moment runs stable on our hardware (as long as you don't try to do something we didn't implement.)
At the moment, the code is capable of running in 320x240 with a speed of around 20FPS. You can actually get a few FPS by clocking the flash at 80MHz instead 40MHz, but because Wrover-Kits do not work well at that speed out-of-the-box, we didn't enable it in the default sdkconfig.
We didn't implemented all things: there is no sound, no music, no savegame support and because we didn't include all data that PrBoom has (because we wanted it all to fit in 4MiB of flash) some menus will crash. Also, because of the 4MiB flash limitation, we only tested a stripped down version of the shareware Doom game data. With more flash, you can theoretically run other game data as well, but we did not test this. In general, this code comes as is: we do not expect to add any more features to it, although we're receptive to pull requests if you do.
A video, for those without the hardware: https://www.youtube.com/watch?v=Gb_JFDa0AIo
And for those with the hardware: the code repository is here: https://github.com/espressif/esp32-doom . Sorry, because of the licensing of PrBoom I'm not sure if we can spread compiled binaries around. The code needs the PSRAM SDK branch (plus toolchain) to work.
(And yes, I know E1L1 by heart now and can tell you exactly how the first demo goes and where it crashes if we have memory problems...)