DSDHacked is a specification and standard aimed at removing several limitations as imposed by DeHackEd. It is an extension to the MBF21 specification regarding raising the limits of things, states, sprites and sounds in DeHackEd, but it can also be supported separately.
The DSDHacked specification was finalized on August 21, 2021.
The idea behind the specification was originally by Ryan Krafnick (Kraflab) in a Doomworld thread titled: "DSDhacked [unlimited everything]". It is defined as a general standard, with specific implementations required for each source port.
- Support for unlimited things, states, sprites, and sounds (until you run out of memory / reach 2^32)
Use Doom version = 2021 in a DeHackEd file to denote that you are using DSDHacked indices. This allows ports to adapt your changes to their specific internal tables. Otherwise your file may be interpreted differently in different ports.
Further details can be seen in the following files:
When you define a new index, the game allocates new entities up to that value. The data is filled with default values.
Defining Things / States / Sounds
These can be defined normally, with Thing 1234, Frame 4444, or Sound 137 for instance. From the perspective of DeHackEd format, there is no change except conceptually "every index exists" for these entities.
Defining Sound / Sprite Lumps
The author can define the lump names for sprites and sounds in the table sections of the DeHackEd file. These sections normally replace lump names (OLD1 = NEW1). If the left value is a number, it is interpreted as the index where you want to store the given name. You must set the lump names for any new sound or sprite indices that you reference elsewhere, otherwise the data won't be allocated and the associated sound / sprite won't actually exist. An example is shown below:
[SPRITES] 1234 = NEW1 63 = WHOA [SOUNDS] 100 = EXPLOD 3930 = TWISTR
Support for DSDHacked is currently supported by the following ports:
- The name DSDHacked is a reference to DeHacked and the Doom Speed Demo Archive.