ezgoodnight

The RetroRGB Guide to DOOM Source Ports

The joke we tell ourselves about Doom is that it “runs on everything.” We’ve seen it run on pregnancy tests, potatoes, lawnmowers. Well, what about modern PCs?

With so much attention on FPGA, I initially found it odd that the Doom community didn’t seem to care much about FPGA recreations or about vintage hardware for serious play. As it turns out there’s no need for it, because the most iconic PC game of all time has truly excellent ports for any platform you could possibly want.

Today we’ll be going over the top Doom source ports, accurate to the original engine and even capable of replaying old Doom demos recorded in 90s. You’ll also get an excellent gaming experience on any platform or OS you might choose to use.

This guide is going to cover a lot of material, and hopefully be useful to gamers that are used to Doom Source Ports, as well as people who are learning the concepts right here and now. If you see stuff that seems basic (or more complicated than you’re interested right now), feel free to use the table below to skip to the sections that are the most helpful for you.

 

What Is A Source Port?

How Do I Play?

Review of Source Ports

Demo Compatibility

Enhancing Sound

Launchers

 

What Is A Source Port?

Via Doomworld by user Princeontiger.
Via Doomworld by user Princeontiger.

Doom is generally thought of as having two discrete parts. One is the assets: the monsters, the maps, the music, etc. The other part is the game engine, the code and logic that turns those assets into a playable game.

This is relevant because the source code for Doom was released by John Carmack in 1997, and has been ported to many platforms. That’s what we’re going to continue to go over today, and how to use those source ports to play.

 

Jump to Source Port Reviews:

GZDoom

DSDA Doom

PrBoom+

Chocolate Doom

Crispy Doom

Eternity Engine

Zandronum

Honorable Mentions and DOSBox

 

I’m Not That Nerdy. How Do I Play?

Not that nerdy? What are you doing on this website then? You can get an adequate experience just buying Doom and Doom 2 from GOG or Steam.

In fact, the first thing you should do is buy both Doom and Doom 2 from either store. Source ports will require the files DOOM.WAD and DOOM2.WAD from those installs, as they contain the assets you need to play. Even without a source port, both will install a perfectly playable experience if you want to dip your toe back into the world of Doom.

TLDR; What Source Port Should I Use? Use GZDoom.

There are many, many options available. If you want the easiest answer, GZDoom is the solution. It’s modern, offers all kinds of new tech and quality of life improvements. It’s robust and can handle all kinds of stuff that Id software never thought of back in 1993. Very much a great experience if you’re coming back to Doom and want to have some serious fun while seeing what a modern port of the engine can do.

GZDoom can do it all: lighting effects, anti-aliasing, SAI effects, mouselook, even… (gasp!) jumping. And if you’re a fan of Heretic and Hexen, GZDoom supports them. It basically is a one stop shop, capable of doing nearly anything the community can throw at it.

While you’re at it, you can download some great WADs like Doom Infinite, or MyHouse.WAD, both incredible releases from 2023. WADs like Doom Infinite or MyHouse are perfect examples, because other ports of the engine won’t run them. They need the full featureset provided by GZDoom.

Game footage by IcarusLIVES on Youtube

GZDoom is needed for what many call “Total Conversion” mods. Really, GZDoom is its own game engine that can play Doom. Some “Total Conversions” sell in Steam or other storefronts and ship with GZDoom as a commercial product. Many are so far removed from Doom it’s kind of crazy that GZDoom can do so much.

Recommended. A solid Doom experience and necessary to play a lot of newer games and WADs from the community.

Windows | MacOS | Linux

OK, The Normies Are Gone. What Source Port Should I Use?

Now that I’m only talking to my fellow maniacs, let’s get down to business. There are many, many ports, all of which will give you a more “Doom-like” experience than GZDoom. Many of us that get really into Doom want a more authentic experience. GZDoom is… fine. It’s just that out of the box, it’s doing SO MUCH. Anti-aliasing? SAI filters? Mouselook? JUMPING??? It just kind of gets in the way of a more authentic experience. Maybe you like these things, but I personally prefer them off when I use GZDoom. And most of the other source ports offer an experience that is a little simpler and truer to classic Doom.

DSDA-Doom

The Lineage of DSDA Doom starts with BOOM. Created by TeamTNT for DOS, BOOM had a first release in 1998 and final release in 1999. Yes, Doom has been ported ever since the late DOS days, which I personally find remarkable. (And if you have a DOS computer, you can run BOOM in DOS, because BOOM 2.02 is still available for download. But unfortunately, you currently can’t run it on MiSTer FPGA…)

The history of Doom codebases and compatibility is a long and winding one; a story that could be the subject of a long documentary. But to be brief, the Boom project eventually lead to PrBoom+, which was recently retired. This made the fork DSDA Doom the current key branch of the project.

DSDA stands for the Doom Speed Demos Archive, and as you might expect, DSDA has all the features a speedrunner would want. Doom speedrunning is nearly as old as the game itself, predating internet fast enough to let us upload huge video files of our l33t gameplay. Doom demos were the solution to this problem. These were essentially a scripted recording of your actions during play, and could be played back, given the environment and engine were identical.

You can expect to find tools for TAS and Demo recording, including features like rewind and fast forward, similar to many console emulators. DSDA Doom also supports Hexen and Heretic, which PrBoom+ does not. One of my favorite features is the “Level Table” which keeps track of your level times, kills, items, and secrets for each level. It also warps you to any map available in the WAD you’re playing without using the IDCLEV cheat code.

Recommended. Great Doom experience, much like PrBoom+, but with more features.

Windows | MacOS | Windows (Alt)

PrBoom+

PrBoom+ is the port I originally had on this list first, and for a good reason. PrBoom+ is one of the best ports in a field of very well made free software. Despite not being actively developed anymore, the final version of PrBoom+ is no slouch.

And as far as “runs on everything” goes, PrBoom+ has you covered. You can get this thoroughly excellent source port on nearly any stupid piece of hardware you have lying around. If it runs code, it can run Doom, and PrBoom+ almost certainly has a binary ready to go for your platform. Heck, I fired up my 19 year old GP2X only to find it has PrBoom installed on it!

Much like DSDA, PrBoom+ has compatibility features for recording and playing demos. This means that bugs and behaviors in multiple versions of Doom are replicated or emulated. “Demo compatible” is very important in the community, and PrBoom+ has complevel settings to handle it. This is very common these days with advanced source ports, including the PrBoom+ lineage. More on Complevels in sections after the reviews.

One feature that does not appear to be in DSDA Doom that PrBoom+ has implemented is ALSA support for sound. I hear this allows you to use real MIDI hardware to produce music. (As of writing I have not personally tested this feature, but I have ordered a USB sound card capable of OPL3 that I am itching to fire up with PrBoom+…)

If you want a really great classic DOOM experience and have outgrown GZ Doom, PrBoom+ is a great way to go.

Recommended. Great DOOM experience.

Windows | MacOS | Linux | Raspberry Pi

Chocolate Doom

Look at that glorious 4:3, low-res experience. The goal of Chocolate Doom was to create the most possible “vanilla” Doom experience, warts and all. The developers of Chocolate Doom intended to keep true to that spirit and created one of the key source ports of modern Doom gaming.

Chocolate also comes with a DOS-like setup tool for sound, mouse, and keyboard. Yes, you can’t change your key bindings inside the game itself, but this is still an incredibly cool detail to include with the port.

Forks of Chocolate have added modern features in to this landmark source port. But as it stands, if you want a basic, true to DOS, classic DOOM experience, it’s hard to argue that Chocolate DOOM isn’t a great way to play on many different platforms. Chocolate is also one of the ports with the most binaries readily available, so right behind PrBoom+ you’ll often find a copy of Chocolate for your platform of choice.

Recommended if you are a purist that prefers low res gaming.

Windows | MacOS | Linux

Crispy Doom

A fork of Chocolate Doom, Crispy Doom is another delightful Doom gaming experience. One of the Chocolate Doom devs maintains the project. It is a similar port, except with a few quality of life additions like higher resolution.

There’s not much to be said one way or the other about Crispy that hasn’t been said about other ports. After PrBoom+ and DSDA it is my personal favorite port. It plays and looks great and has a true Doom-like feel, despite the increased resolution. The first times I beat all of Doom 1 and 2 on Ultra Violence I did it on Crispy (with saves). It’s a great experience.

Like Chocolate Doom, it has a DOS-like setup tool for managing sound, mouse, and keyboard.

Recommended. Like Chocolate Doom, but with nice quality of life features.

Windows | MacOS | Linux

Eternity Engine

Eternity Engine is very good, if not a stand out experience. I personally found the gameplay felt a little funny compared to DSDA-Doom or PrBoom+ but it looks surprisingly great and feels Doom-like.

Eternity sets itself to your native monitor resolution by default, which is nice, as some ports require you to set your preferred resolution or default to running in a window. I did however have to bind “always run” to caps lock in order to toggle it on, when it seems most other ports assume always run by default.

I also seemed to notice what seemed like odd frame drops while playing, something that has not stood out during my many hours of playing PrBoom+, DSDA, or Crispy. This could be a quirk of my setup or my video card, although my system has performed just fine on all of the other ports on this guide.

Your mileage may completely vary, as EE is clearly a solid port that is compatible with complevel 2, 3, and 4.

The sound emulation seems to primarily use software OPL3 from the DOSBox project, so it does sound quite good. Like a lot of the Eternity Engine menus, I found the options a bit confusing compared to the rest of my source port experience, but all source ports have a ridiculous amount of settings that can be fiddled with. Intrepid Eternity enthusiasts, please correct me, but it appears that soundfont support is limited, with emulation of OPL3 the main MIDI driver in EE.

Windows | Mac

I find Zandronum an interesting outlier. Despite having a different codebase from ZDoom/GZDoom, Zandronum feels and looks a lot like GZDoom, boasting compatibility with many GZDoom Mods and WADs, as it has the “full featureset” of the ZDoom/GZDoom source ports. It is good for an experience that goes beyond basic map and texture pack WADfiles.

Zandronum is primarily known for its multiplayer and is worth installing if you would like to find a feature-rich, modern day fragfest. While many other source ports support multiplayer, when you load Zandronum without launching a WAD or PK3, it will assume you are looking for multiplayer, and will load a list of servers to help you find a game.

Recommended as possibly the definitive modern way to explore Doom multiplayer. Solid single player and support of IWADs, mods, and total conversions.

Windows | Mac | Linux

Other Honorable Mentions

DOSBox

DOSBox is an emulator, not a source port. But it’s a cromulent way to play Doom without a native port of the engine. If you buy the version of the game from GOG, for example, it comes packaged with DOSBox, and launches the DOSBox environment, as well as the the original DOS version of the Doom engine.

Above is literally how a fresh install of Doom from GOG looks. I cannot believe it stretches the 4:3 this way by default. This is an… acceptable… way to experience DOOM; it will be a pretty authentic, low resolution experience. But you’ll be limited to what the original engine, or perhaps the BOOM port running in DOS, can do.

Not recommended. DOSBox is amazing software, but is not the best Doom experience possible compared to all source ports on this list. This may be controversial, but, seriously, use one of the recommended source ports. It is a superior experience.

Windows | MacOS | Linux | Raspberry Pi

MiSTer FPGA ao486 Core

Listen. I love my MiSTer so, so damn much. It’s maybe the coolest piece of retro tech I’ve ever owned. But it’s a mediocre Doom experience compared to the source ports or real hardware.

If you have your MiSTer set up primarily for the computer cores, with a mouse, keyboard, and desk, there’s no reason it can’t be brilliant. With recent improvements to the ao486 core, Doom runs pretty well at full screen. And it’s easy to set up an MT-32pi with nice sound, like a SC-55 soundfont, so you can get DOS running as if it was all real hardware, which is very cool!

But I think it’s far more pleasant to use source ports as a daily driver for your Doom gaming. If this is your preferred setup, you’re not wrong. But it is certainly wrong for me, and my setup, which dedicates my MiSTer primarily to console gaming.

Not recommended as your primary Doom experience, but nice to set up and experiment with.

ao486 Core | FreeDOS

Vintage Hardware

It is really quite cool to get a piece of DOS era hardware running Doom. Especially given the quality of sound from OPL3 sound cards or affordable equipment like MT-32pi, you can get a delightful, pure, uncut, vanilla experience out of Doom.

Personally I don’t keep my vintage computers setup in a convenient way, so playing a few levels of Doom on them is a bit of an event. Same critique I would offer using the MiSTer, it’s not the best as a daily driver, and also has little to no modern benefits, as you’re playing the original DOS version of the engine.

It does feel GREAT to get it running and clack on a PS1 keyboard, and to hear those OPL3 sounds. I personally love the sound of real FM Synth hardware.

Not recommended unless you’re already a retrocomputing nut, in which case you probably have already done it.

Ebay | Goodwill

Delta Touch is a commercial Android port containing multiple source ports, available in the Android store. It has multiple versions of GZDoom, as well as LZDoom+, Zandronum, Chocolate Doom, PrBoom, and even Dhewm 3, a port of Doom 3(!). This is a lot of features for a little phone port.

It is considered to have very solid controls for a touch screen source port, and is a not-altogether-terrible way to experience Doom on the go, if your only available device is your phone. Controllers are also supported if you have one compatible with your Android phone. The value is definitely there for a few paltry dollars you will pay for a copy.

It does not come with a license for the Doom or Doom 2 assets, like any other source port. It is a little annoying to install your DOOM.WAD or DOOM2.WAD files on an Android phone, but it is a perfectly cromulent port once you’ve done so. As you can see, you can download Freedoom1 and 2 asset packs directly to the device.

Android | Open Touch Gaming Website

Complevels and Demos

Complevels are a bit confusing; the history of Doom is a long and winding road. 30 years of nonstop community development, mapping, support, bugfixes, and progress have made it a bit hard for a beginner to understand.

The cliff notes version is that Complevels (Compatability Levels) are emulations of the various changes and engine quirks in order to remain compatible with older recorded demos. By using this shorthand of “Complevel 2” or “Complevel 9” you can jump quickly to a set of rules of quirks of an earlier version of the engine.

The differences in each complevel are too numerous and complicated to be in scope of this already very complex article, so if you are so inclined, check the video above, and allow Pumpkin Man decino to explain them to you in a very concise, yet thorough way.

You can also refer to this chart from doomwiki.org:

Level Emulated engine
-1 Engine defaults (“current version”)
0 Doom v1.2 (note: flawed in PrBoom; requires PrBoom+ 2.5.0.8 or later)
1 Doom v1.666
2 Doom v1.9
3 Ultimate Doom & Doom95
4 Final Doom
5 DOSDoom
6 TASDoom
7 Boom‘s inaccurate vanilla compatibility mode
8 Boom v2.01
9 Boom v2.02
10 LxDoom
11 MBF
12 PrBoom v2.03beta
13 PrBoom v2.1.0
14 PrBoom v2.1.1 – 2.2.6
15 PrBoom v2.3.x
16 PrBoom v2.4.0
17 Engine defaults (“current version”)
21 MBF21 (note: requires DSDA-Doom)

MIDI, OPL, and Improving the Sound of DOOM

Let’s back up for a second and talk a bit more about MIDI. I personally became interested in vintage computing from learning about MIDI, and how music and sound changed when the same instructions were used on different hardware or sound banks. Let’s talk about it briefly and cover how we can improve the sound in your Doom source port experience.

Rather than recorded sound, MIDI is effectively instructions for a device to do something like “Play these notes on instrument 1, 3, and 6.” Because of this, MIDI files in games could be considerably smaller than what we think of as sound files like MP3, FLAC, or WAV. The instruments were handled on a piece of hardware like a Soundblaster sound card, or an external MIDI module, like a Roland MT-32.

In addition to great emulation of OPL3, many source ports include the ability to send the MIDI data to outside MIDI instruments for playback. Modern Windows and many operating systems don’t have great MIDI support anymore, now that the standards for sound files have changed.

It’s possible to set up programs to emulate high end MIDI, or even use a real vintage Roland MT-32 on modern source ports.

Doom has two basic methods for MIDI sound that are essentially the most “canonical” and “correct” ways to hear the music. A standard for the era was an OPL3 sound card, like a Soundblaster 16, which used something like Yamaha sound chips to create music via FM Synthesis. OPL emulation is included in all major source ports and DOSBox, and it sounds good and authentic, as years of critique and effort on the projects have made the emulation quite good.

The other main “correct” way to experience the MIDI from a Doom source port is with an SC-55, which is an external MIDI instrument sound module, similar to the MT-32 mentioned above. Doom was scored by Bobby Prince using the SC-55. Therefore the SC-55 is (arguably) the “intended” way to experience the music of Doom. The SC-55 soundfont is my personal favorite way to hear the music of Doom while playing.

There is of course, a third way to experience the music of Doom , and that’s however the heck you want to. If you played Doom as a kid on an amazing or crappy piece of sound hardware, it could be that feels like the “real” experience to you. And you can recreate that in any number of ways. Today we’ll cover setting up the SC-55 Soundfont in VirtualMidiSynth for use in PrBoom+. Use this basic guide as a starting point to beefing up your own Doom Source Port Audio, or… don’t!

VirtualMidiSynth and MIDIMapper Configurator for DOOM

There are several ways to use soundfonts and richer MIDI sound in your Doom source port but this is one of the most robust ways, especially if you use multiple source ports. This method also works with DOSBox, if you’re doing other DOS gaming beyond just Doom.

Step 1: CoolSoft VirtualMIDISynth allows you to install and prioritize multiple soundfonts. You can download the installer for Windows here.

Step 2: SC-55 soundfonts are freeware and you can find several with a simple Google search. Download one, like this one from this Doomworld thread, and add it as a soundfont in your VirtualMIDISynth application. Plenty of interesting soundfonts exist. The OPL and Arachno Soundfont are two interesting ones worth checking out, as are other Yamaha based soundfonts.

Step 3: Modern windows has pretty poor support of MIDI by default. Once VirtualMIDISynth is installed on your Windows computer, you can use MIDIMapper to direct all MIDI data to VirtualMIDISynth with no fuss. I have personally had good success using this method with all of the ports mentioned here and DOSBox.

Step 4: Change the “Preferred MIDI Player” to “PORTMIDI” in a source port like DSDA-Doom or PrBoom+. You can find this under the options in the main menu. This will map the MIDI information to VirtualMIDISynth. Crispy and Chocolate both use a separate setup program, but can also be set up to use soundfonts.

Launchers and Setting Up Doom Launcher for Windows

If you check the manuals, source ports have a lot of options. They can load all kinds of different types of files, and in general can have as complicated a loading process as a setup under the in game options menu. Launchers are what many, if not most, Doom community folks use to get their games going, as they simplify this process.

You can achieve a lot of the same functionality by editing Windows shortcuts or writing BAT files, but unless you like doing that, seriously, why? Doom Launcher and ZDL are far more streamlined and easy.

It’s possible the barebones but very functional ZDL is more common in the Doom community, today we will be doing a short tutorial on setting up Doom Launcher, currently being developed by nstlaurent.

Setting up Doom Launcher

Doom launcher is a simple download and install from the project GitHub. Grab the installer for Windows, and install like you would any program.

The hamburger menu on the left will allow you to add your source ports. You can install many, even multiple portable installations, or multiple versions of each port. Add any you may have installed. Many source ports are portable EXEs, so you can just point to the EXE in whatever place you’ve put the folder, and Doom Launcher will add it and suggest a name for the port based on that EXE file name.

Next, you will need to add IWADs, or the core game WADs that we discussed earlier. Even if you already installed them in your source ports, Doom Launcher will need them installed. You can drag and drop them, or use the Hamburger menu to navigate to the “Add IWAD” option in the menu.

Then you’ll want to “Add Files” either by dragging and dropping into Doom Launcher, or using the hamburger menu again. These files should be your map packs, total conversion WADs, sound or graphical upgrades, or other various mods that you might want to use.

You will be able to set a default source port and also use different settings per WAD or file. In the case of the DOOM Infinite Demo, you would need GZDoom to run it. Doom Launcher makes it easy to switch to PrBoom+ or DSDA Doom to play Doom 2 (complevel 2), or Eviternity (complevel 11), or Ancient Aliens (complevel 9).

It is also very simple to add assets or parameters to your game. Here I am launching the original Doom using the Ultimate Doom WAD. DSDA Doom supports the Widescreen asset packs, as well as the “Pistolstart” flag, ensuring I pistol start each map during continuous play through the game.

Doom Launcher

Liked it? Take a second to support ezgoodnight on Patreon!