RealDOOM is an in progress port of the DOS version of DOOM (based on PCDOOMv2) to Real Mode to support 16-bit processors (namely the 8088 and 286). It is meant to be accurate to the original game and id software WADs first and foremost. So it should work with timedemos, and have the support for the same level of graphical detail as the original game.
The current release supports Shareware and commercial DOOM/DOOM2 as well as Ultimate DOOM. TNT and Plutonia are not currently supported. Custom wads are not currently supported.
The current development focus is on bugfixing and ASM rewrites of the rest of the codebase to produce an entirely ASM application.
RealDOOM is still in a Alpha state and so it does not cleanly support many hardware configurations yet. The easiest way to run it is to use EMM386 with a page frame set and the pageable conventional memory enabled. 16 bit machines will need EMS 4.0 compatible hardware with conventional pagination such as a 286 chipset supporting such features or a something like an Intel Above Board.
Performance on 32-bit PCs is similar to Vanilla DOOM, so performance should generally be okay on a 486 or Pentium. Slower machines might want to turn detail level to low or potato for faster framerates.
The "minimum spec" is a standard 4.77 MhZ 8088 machine with a VGA card, ~560KB conventional free, a hard disk that can fit the software/WAD, and 256 KB of system memory with a 2 MB populated Intel Above Board (or other compatible EMS 4.0 board with backfill - note that Lo-Tech EMS card does not support backfill). Many 286 chipsets (C&T SCAT, VLSI SCAMP, VLSI TOPCAT... ) support EMS 4.0 and you will be able to use their appropriate EMS drivers or SQEMM, or the chipset specific build if available, which is faster.
Building RealDOOM requires openwatcom 2.0 and tasm 2.51. Simply run the makeall script and select your build option (286, 386, 8086, chipset, etc).
- joystick support
- multiplayer/networking
- custom wads
There are also a lot of hard caps on things like texture size and count, node count, etc.
- Occasional missing columns on Player Sprite renders
- Occasional misdraws of sprites over the border and HUD
Not necessarily meant to be accurate, but just to give an overview of the general order in which things are probably going to be built.
(Dec 4, 2023)
v0.10 release: mostly stable shareware demo
(Dec 12, 2023)
v0.11 release: UMB usage and all shareware demos playable. Last EMS 3.2 compatible version?
- render bugfixes
- use UMBs if available - e1m6 now playable
(Jan 11, 2024)
v0.15 : EMS 4.0 multitasking features
- EMS 4.0 multitasking
- dynamic allocations in the 256-640KB memory range
- level data and things broken into physics/render regions
- texture cache added for more textures in memory during render
- using full sine tables again
- visplane cap only 60 for now, to be fixed in 0.16
- removed use of page frame
- Some fixes and additions:
- fixed fwipe (screen wipe)
- fixed intermission animations
- fixed finale
- added 286 build option
(May 23, 2024)
v0.20 : Commercial game/feature support
- doom 1 wad support, full timedemo compatibility
- doom 2 wad support, full timedemo compatibility
- medium memory model
- ems visplane allocation
- texture cache improvements
- many bugfixes, memory organization improvements
(Jun 18, 2024)
v0.21 : ASM improvements
- R_DrawColumn, R_DrawSpan, R_MapPlane ASM optimized
- Potato quality implemented
- FixedMul ASM Optimized
(Aug 20, 2024)
v0.22 : More ASM improvements
- FixedDiv ASM optimized
- Additional render pipeline optimization
- Textures paragraph/segment aligned
(Oct 11, 2024)
v0.23 : Memory, Build
- fixed DS to 0x3C00
- build tools to support fixed DS and binary offloading to file
- offloaded render function binaries loaded into EMS memory at runtime
- 286 chipset specific builds
- binary size significantly reduced
- 386 math build option (WIP, only FixedMul)
- improved rendering fidelity
(Jan 8, 2025)
v0.24 : More ASM improvements
- main render pipeline ASM optimzied
- increased texture cache size
- more code moved into offloaded binary
- various render and engine bugfixes
- additional 386 optimized math functions
(Mar 31, 2025)
v0.25 : Improved feature compatibility
- fix save/load game
- fix demo recording
- implement music
- more code moved into offloaded binary
(May 15, 2025)
v0.26 : SFX implementation
- Implemented Speaker SFX
- Implemented Sound Blaster SFX
- various bugfixes
(Jun 24, 2025)
v0.27 : ASM Optimizations
- EMS paginated WAD fields
- 30kb or so of c converted to asm
- binary size decreased, code a little faster
(Jul 3, 2025)
v0.28 : E000 requirement removed
- Exported a ton more code to reduce binary size ~30k
- Moved E000 data into low memory area
- Moved pagination code from C to asm
(Jul 22, 2025)
v0.29 : Physics code to ASM
- Exported more code to reduce binary size ~18k
- Fixed many enemy behavior bugs
- Restored music driver support which had been removed in 0.28
(Aug 2, 2025)
v0.30 : Physics code to ASM
- ASM optimization of some physics code saving ~6k
- Improved span drawing fidelity to 24 bit (same as vanilla)
- Added span/column/sky rendering fidelity options
(Sep 20, 2025)
v0.31 : Bugfixes, most code to ASM
- Major ASM rewrites of c code saving ~35-40k
- Movable EMS Page Frame
- Lots of bugfixing...
(Sep 28, 2025)
v0.32 : Bugfixes
- Lots more bugfixing...
(Oct 11, 2025)
v0.78 : Pre-Alpha 1
- Sound effects bugfixed but not optimized
Remaining Alpha Goals:
- improved sfx code
- helpful user facing diagnostics such as EMS/memory testing
Beta Goals:
- Remove clib dependencies
- Entirely ASM application
- "More" feature complete
- AWE32, Gravis SFX - etc
- Improved custom WAD support
"1.0" Goals:
- 386 Render path optimization (mainly for 386SX)
- General stability and architecture improvements
- Rewrite render path from scratch Post 1.0 Goals:
- EMS 3.2 compatible version
- Remove MS-DOS dependencies, self boot version?
Various performance benchmarks can be found in this spreadsheet: RealDOOM Benchmark Results
For the most part, a 386SX currently runs RealDOOM ~20% faster than (vanilla) DOOM 1.9. 32 bit bus cpus all generally run it 5-10% worse than vanilla. A very fast 286 achieves around 6-7 FPS in high quality, 10-11 in low, and 15-16 in potato quality. 5150/5160 class machines are sub 1 FPS.