Doom128

From DoomWiki.org

Doom128
Codebase Doom32, gamesrc-ver-recreation
Developer(s) Adam Bilbrough (Gibbon)
Initial release 10022022 (2022-02-10, 7 months ago)
Latest release 18022022 (2022-02-18, 7 months ago)
Development status Active
Written in C, Assembly
Target Platform DOS

Doom128 is a series of source modifications created by Adam Bilbrough (Gibbon). It is derived from the recreated and reverse-engineered works of the gamesrc-ver-recreation project and Doom32, providing further increased static limits to reduce the risk of crashes, premature program exits and certain visual problems, while maintaining full compatibility with the original executable, including the usage of the original DMX sound engine.

It allows several WADs to be playable in the vanilla engine that previously required a limit-removing source port to be run.

Its exact file names are:

History[edit]

Inspired and derived by the gamesrc-ver-recreation project, which aims to recreate and reverse-engineer various versions of DOOM.EXE, DOOM2.EXE, HERETIC.EXE and HEXEN.EXE for educational purposes, Gibbon set out to create the ultimate executable hack for MS-DOS. Doom32 was used as a basis to increase the limits. A first release followed on February 10, 2022. It increased the limits imposed by Doom32 by a factor 16 and provided DOOM128.EXE for Doom and Doom 2 1.9 and DOOM128F2.EXE for the Final Doom Anthology executable.

A second release followed a day later, increasing the stack size to 4096 and fixing the ouch face bug. A Doomworld thread discussing Doom128 was made on February 17, 2022. [1] A third release fixed the tutti-frutti bug and reverted the ouch face bug and increased the MINFRAGMENT from 64kb to 4MB.

Legacy[edit]

After the Doom128 release, Gibbon used the applied increased limits featured in that version as a base template to port over to other games that ran on the Doom engine, resulting in Heretic128, Hexen128 and Strife128 respectively.

Raised limits[edit]

The following static limits are raised in Doom128.

limit                         : old    * k   = new
-------------------------------------------------------
visplanes[MAXVISPLANES]       : 1024   * 16  = 16384
drawsegs[MAXDRAWSEGS]         : 2048   * 16  = 32768
SAVEGAMESIZE                  : 2883584 * 16 = 46137344
activeplats[MAXPLATS]         : 7680   * 16  = 122880
vissprites[MAXVISSPRITE]      : 1024   * 16  = 16384
linespeciallist[MAXLINEANIMS] : 16384  * 16  = 262144
openings[MAXOPENINGS]         : 200 * 256 * 16  = 819200
  • MAXOPENINGS relies on the SCREENWIDTH constant, which is 200 (from a 320x200 screen, which is what is used in Vanilla Doom)
  • The MINFRAGMENT limit is increased from 64kb to 4MB utilizing the following constant:
* SCREENHEIGHT MINFRAGMENT 4096 * SCREENHEIGHT

Additional features[edit]

Outside of the raised limits, Doom128 includes additional features:

  • The lump stack is increased from 64 KB to 4096 KB, allowing more lumps to be loaded in
  • R_CheckTextureNumForName error is now non fatal, taken from Crispy Doom
  • The tutti-frutti effect bug is fixed, taken from Crispy Doom and Russian Doom
  • The function R_DrawColumnLow is converted from assembly to C language and modified based off Russian Doom and Heretic

Trivia[edit]

  • DeHackEd isn't supported because the executable cannot be understood by DeHacked.

External links[edit]

References[edit]

  1. Doomworld forums thread
Source code genealogy
Based on Name Base for
Doom32 Doom128 Heretic128
gamesrc-ver-recreation Hexen128
Strife128