Sprinkled Doom

From DoomWiki.org

Sprinkled Doom
Sprinkled-Doom.png
Codebase Chocolate Doom, Chocolate Doom Plus, Doom32
Developer(s) Adam Bilbrough (Gibbon)
Initial release 1.0 (2021-09-09, 3 years ago)
Latest release 3.4.1 (2022-06-12, 2 years ago)
Development status Active
Written in C
Target platform Cross-Platform
License GPLv2+
Website Doomworld forums thread
Source Repository

(Git)

SourceForge

Sprinkled Doom is a source port developed by Adam Bilbrough (Gibbon), forked from Chocolate Doom and AxDoomer's version of Chocolate Doom Plus. It applies the raised static limits of Doom32 which are then multiplied against itself to essentially remove all said limits on a 64-bit build of Chocolate Doom which are then applied for Doom, Doom II, Heretic, Hexen and Strife through a file called dpplimits.h.

It is kept in sync with the main Chocolate Doom branch.

History[edit]

Development was discussed in a Doomworld thread titled: "Chocolate Doom Plus Plus."[1]. On September 30, 2021 version 3.1.0 was released, containing bugfixes and support for the Sigil mapset. Previous versions of Sprinkled Doom applied the raised limits of Doom2-plus to a 64-bit build of Chocolate Doom and applied them for Doom, Doom II, Heretic, Hexen and Strife.

From version 3.3.0 onwards, Doom32's limits are used and then multiplied once more, essentially making Sprinkled Doom a limit-removing port.

Main Features[edit]

  • All features from Chocolate Doom 3.0
  • Raised static limits courtesy of Doom32 and multiplied for the following games:
    • Doom
    • Doom II
    • Heretic
    • Hexen
    • Strife
  • Heap and lump sizes are now based on the size of the WAD
  • Extra gibs for Doom and Hexen, inspired by Nugget Doom (Version 3.2.0)
  • Support for the SIGIL mapset through a flag: -sigil
  • Support for the No Rest for the Living expansion through a flag: -nrftl
  • Support for the Crispy Doom level stat feature through a flag: -levelstat
  • Minimal level stat support for Hexen
  • A minimal launcher for all Sprinkled binaries that allows the loading of command line arguments

Static limits[edit]

The following static limits are raised in Sprinkled Doom. They are derived from Doom32 and are then multiplied against themselves using the following constant:

#define SAVEGAMESIZE    0x2c0000 * DOOM_PLUS_PLUS_SAVEGAMESIZE_FACTOR
#define SAVEGAMESIZE    0x2c0000 * DOOM_PLUS_PLUS_SAVEGAMESIZE_FACTOR
#define MAXPLATS        7680 * DOOM_PLUS_PLUS_MAXPLATS_FACTOR
#define MAXDRAWSEGS     2048 * DOOM_PLUS_PLUS_MAXDRAWSEGS_FACTOR
#define MAXVISPLANES    1024 * DOOM_PLUS_PLUS_MAXVISPLANES_FACTOR
#define MAXOPENINGS     SCREENWIDTH *256 * DOOM_PLUS_PLUS_MAXOPENINGS_FACTOR
#define MAXVISSPRITES   1024 * DOOM_PLUS_PLUS_MAXVISSPRITES_FACTOR

As such, the hardcoded limits for Sprinkled Doom are as follows:

limit                         : old    * k   = new
-------------------------------------------------------
visplanes[MAXVISPLANES]       : 1024   * 1024   = 1048576
drawsegs[MAXDRAWSEGS]         : 2048   * 2048   = 4194304
SAVEGAMESIZE                  : 2883584 * 2883584 = 8.3150567e+12
activeplats[MAXPLATS]         : 7680    * 7680  = 58982400
vissprites[MAXVISSPRITE]      : 1024    * 1024  = 1048576
linespeciallist[MAXLINEANIMS] : 16384   * 16384 = 268435456
openings[MAXOPENINGS]         : 65536   * 65536 = 4294967296

Trivia[edit]

  • The port was originally called Chocolate Doom Plus Plus as a token of respect towards AxDoomer's fork of Chocolate Doom Plus. The repository is still named after this.

External links[edit]

References[edit]

  1. Doomworld forums thread
Source code genealogy
Based on Name Base for
Chocolate Doom Sprinkled Doom Active
Chocolate Doom Plus
Doom32