DOOM, Emacs
Summary
A developer ports the classic game DOOM to run inside Emacs using a native module and a Canvas API patch, requiring a custom-patched Emacs build and a WAD file.
View Cached Full Text
Cached at: 07/31/26, 08:51 PM
minad/doom-on-emacs
Source: https://github.com/minad/doom-on-emacs
#+title: DOOM on Emacs
This is [[https://github.com/id-Software/DOOM][DOOM]] running inside Emacs via a native module. The port is based on
[[https://github.com/ozkl/doomgeneric][doomgeneric]] such that only a handful of functions like DG_DrawFrame need to be
[[file:doomgeneric/doomgeneric_emacs.c][implemented in C]] with some [[file:doom.el][Elisp code as glue]]. It uses the native Canvas API
which is not yet part of the Emacs source tree, and currently available for
download as [[https://github.com/minad/emacs-canvas-patch][patch]]. See further canvas links below.
#+html: 
- Running DOOM
In order to run DOOM, you first need to apply the Canvas patch to the Emacs
source and recompile Emacs. Then execute ./run.sh to compile the module and
start DOOM on Emacs. You will need a WAD file which contains the game data. The
file doom1.wad is freely available.
- Canvas links
- [[https://debbugs.gnu.org/cgi/bugreport.cgi?bug=80281][bug#80281]]
- [[https://github.com/minad/doom-on-emacs][doom-on-emacs]]
- [[https://github.com/minad/emacs-canvas-patch][emacs-canvas-patch]]
- [[https://github.com/minad/emacs-shader-demo][emacs-shader-demo]]
- [[https://tusharhero.codeberg.page/emacs-pale-canvas-and-stuff-demos.html][Pale and other demos]]
Similar Articles
DOOM running on a regex engine
A developer demonstrates running the game DOOM using a regex engine as a computational substrate, performing millions of substitutions per frame.
56,000 lines of DOOM, in a language I made up
The author built a joke programming language called bet that compiles via LLVM, uses arena-based memory management, and successfully runs the full DOOM game (56,000 lines) without code review, relying only on tests.
Running ‘Doom’ on E. coli cells… very, very slowly
MIT researcher Lauren Ramlan published a paper demonstrating that the classic game Doom can be played on a display made from E. coli cells, though at an extremely slow frame rate that would take centuries to complete a single playthrough.
DOOMQL
Peter Gostev built a Doom-like game using SQLite as the game engine, with ray tracing via recursive CTE, and integrated with Datasette for a real-time web interface. The project was created using GPT-5.6 Sol and demonstrates the creative potential of using SQL for game logic.
Why fastDoom is fast
A detailed technical analysis of why the fastDOOM port achieves significant performance improvements over the original Doom executable, covering the history of Doom's source code lineage and specific optimization techniques.