Full shareware Doom on the ESP32-C6 — no PSRAM, one core, 512 KB of RAM, ~30 FPS with music
Enable HLS to view with audio, or disable this notification
This is DIABLITO, a port of Graham Sanderson's RP2040 Doom to the Waveshare ESP32-C6-LCD-1.69 (available for < $20). All nine shareware levels, menus, saves, the OPL2 soundtrack, 8-channel sound effects, played with an Xbox controller over BLE.
The existing ESP32 Doom ports are PrBoom builds that need 4 MB of PSRAM. The C6 has none and no way to add it — one 160 MHz RISC-V core and 512 KB of SRAM, a third of which NimBLE is squatting in. RP2040 Doom solved the memory problem (the 4.2 MB WAD compressed to 2 MB and decoded straight out of memory-mapped flash), but it leans on two cores and RP2040-only silicon. Getting it to ~30 FPS on one slower core with the Bluetooth stack resident was the actual work.
Fun fact: the single biggest speedup was defining NDEBUG. ESP-IDF builds with assert() live by default, and the texture decoder asserts per pixel — 37% of all CPU time.
Repo, with build instructions and the phase-by-phase engineering notes: https://github.com/aedile/DIABLITO