I've been building and tweaking with Doom for over 20 years. Here's some of the things I've built.





Liquorice is a Haskell embedded domain-specific language (eDSL) for the algorithmic construction of Doom maps.




Simple UNIX-philosophy-style command-line utilities for Doom hacking. See hwadtools for more information.

Chocolate Doom


I started contributing code to Chocolate Doom in 2015, completing a long-held ambition of mine to hack on Doom. I wrote a re-implementation of pitch-shifting for chocolate-doom which is also used in Doomretro and crispy doom. Here are my extended notes.

Ink Foundry


Ink Foundry is a re-implementation of the DOS MIXMAPS tool originally distributed with Ink Works.

WadC (Wad Language)



WadC is a vaguely-functional programming language for the construction of Doom levels. I took over maintenance of the project from the original author in 2009.

Some hacks made with WadC have been released individually. "2countrv" is a 2-bit binary ripple counter (based on a design by Fraggle) with a surprise when the counter overflows. Implemented entirely in WadC.

Game Engine Black Book: Doom


I proof-read Fabien Sanglard's excellent book Game Engine Black Book: DOOM prior to its release. You can now get the book on a pay-what-you-want deal, and contribute suggested edits directly to its GitHub project.

Maps, mods, etc.



A Deathmatch level that I took 20 years to make. Dedicated to Adam Emerson (alias NeoStoic). Inspired by the "Lost Village" series of DM maps for Half Life. Started in 1999 or 2000. Custom textures. Requires a limit-removing port. Designed for Doom 2.

BRutal EXctinction International Tournament


A short arena-style map for Vanilla Doom, illustrating a newly discovered mapping trick. This map works in the original DOS Doom 2, Chocolate Doom, Crispy Doom and PrBoom+ at complevel 2. It does not work in GZDoom and likely won't in any other advanced port that makes significant changes to the engine. Animated GIF courtesy of Linguica (4.7M)

Bird Cage


An arena-style slaughter map for Heretic, developed entirely with WadC for the Heretic Upstart Mappers Project. Requires a Heretic engine that raises the original game's static limits, such as Eternity, ZDoom, etc. Grab the whole project from that link or see just this map at the WadC examples site.

Cursed Hangar (Freedoom)

(2001-2008, 2016)

Freedoom is an open source game which can be played with a modern Doom engine. I was an early contributor to the Freedoom project and co-managed it from around 2001 until around 2008. I've submitted all sorts of stuff but my best contribution was E1M1/MAP01, which was eventually replaced in Freedoom's 0.11 release. I later released a "director's cut" version standalone, entitled "The Cursed Hangar".

Someone else had a go at converting a bunch of Freedoom maps to be compatible with the original Doom, including my map: Invasion of the Damned

Lift Tension (10 Sectors)


I submitted this map to Doomworld's 10 sectors competition in 2000, and got into the top 30. Review-bites: "A very different and original map"; "Some boring rooms (quite a bit)"; "reasonably diverse in its textures, height, and light levels".

Doom Noir


This is just a silly little palette hack, turning all but the red-range into grayscale. It makes the game take on a sort-of film noir feel, and the contrast with the red makes things look gorier.

I originally knocked this together in 1999 or thereabouts, but I was only spurred to releasing it with the film "Sin City", which employed a similar effect.

There's some notes about colormap hacking available.

Map author Aluqah has made a couple of maps with this palette, Oniria and Epicus Furor.



A Quake-inspired mod from 1998-1999. When you gib monsters, chunks of meat fly out. The ZIP also includes GREEN.WAD, a palette hack which swaps the red and green ranges. I created this at the time by accident, but it looks quite good combined with "Gib".

Abandoned, Unreleased, Unfinished

I have some things hanging around that I have never finished or properly released.



Coloured lighting hacks in Vanilla Doom. (colormap)



Unfinished DM map inspired by the "Jailbreak" mod for Quake 2 (which I've never played).



An effects demo for an old version of Doom Legacy, including transparent rays of light; 3D floors, a two-layer lift/elevator. None of the effects work with modern versions of Doom Legacy (at least 1.46.2).


I'm an admin and occasional contributor to the Doom Wiki. There's a biography of me there.

I've written some miscellaneous bits of code for reading and interpreting doom WAD files. lswad is a program that lists the contents of a WAD file (including any wasted space). wadfs is a filesystem interface for WAD files using the excellent fuse library. wad.c and wad.h are the shared bits of code for interpreting WAD files used by these two programs.

Grab the code files individually from code.

I once drafted an article about parsing WAD files in a portable manner in C: wad.

Once upon a time I started (but never finished) working on a scheme for checksumming some of the game state during demo playback to use for regression testing: checksum.

More writing about Doom

Blog posts: