Lump

From DoomWiki.org

A lump is any section of data within the structure of a WAD file, or a file containing such a portion of a WAD file. Each lump has a name (up to 8 characters), which is not necessarily unique. Lumps contain data such as:

Some lumps have specific reserved names. Examples of these are (from DOOM.WAD):

Map lumps[edit]

Each map is made of several lumps, the precise number of which depends on the map format and the port used. Since the map data is stored in lumps that do not have unique names, all maps require a map header with a unique name that serves to identify it in the engine. For example, the map data for MAP01: Entryway is not contained in the MAP01 lump itself, but in the lumps that come directly after it.

Standard lumps[edit]

Lump name Description
Header Should be unique. Typically follow either the ExMy convention (Ultimate Doom, Heretic, Chex Quest) or the MAPxy one (Doom II, Final Doom, Hexen, Strife). Other names can be possible depending on MAPINFO or DDF support. The map header can optionally contain FraggleScript or some metadata, but is usually left empty.
THINGS Contains all mobj data as initially placed in the map, as well as player starts. Created by the map editor.
LINEDEFS Contains all line definitions. Created by the map editor.
SIDEDEFS Contains all line side defintions. Created by the map editor.
VERTEXES Contains all vertices. Created by the map editor, but usually completed by the node builder.
SEGS Contains all line segments. Generated by the node builder.
SSECTORS Contains all subsectors. Generated by the node builder.
NODES Contains all nodes. Generated by the node builder.
SECTORS Contains all sectors. Created by the map editor.
REJECT Contain a simple visibility set allowing to quickly determine whether line-of-sight is possible between two sectors. Generated by the node builder or by a dedicated reject builder.
BLOCKMAP Contain all blockmaps. Generated by the node builder. The final lump in a Doom-format map.
BEHAVIOR Contain the compiled ACS bytecode. The presence or absence of this lump is often used by editors and source ports to determine the map format. Generated by ACC or similar software.
SCRIPTS Contain the ACS source code. Not used by the engine, its presence is optional (for example, it is not present in the Hexen IWADs) however map editors make use of it to save the source code and allow its modification.

Additional map lumps[edit]

Lump name Found in Description
LEAFS Playstation Doom, Doom 64 Node leaves. Generated by the node builder.
LIGHTS Playstation Doom, Doom 64 Colored light information. Created by the map editor.
MACROS Doom 64 Macros. Created by the map editor or a macro compiler.
GL_Header OpenGL ports Optional. Mark the start of GL node lumps for the map with the corresponding header, allowing to put GL node information in a separate file from the original map, which is useful for generating GL nodes for the IWAD maps without having to modify the IWADs themselves. For example, GL_MAP01 is the header for MAP01. It does not need to be used for GL node lumps that directly follow the normal map lumps.
GL_VERT OpenGL ports Contains additional vertices used for GL nodes. Generated by the node builder.
GL_SEGS OpenGL ports Contains line segments used for GL nodes. Generated by the node builder.
GL_SSECT OpenGL ports Contains subsectors used for GL nodes. Generated by the node builder.
GL_NODES OpenGL ports Contains GL nodes. Generated by the node builder.
GL_PVS Vavoom, Strife: Veteran Edition Potentially visible set. Generated by glVIS.

UDMF map lumps[edit]

Lump name Found in Description
Header Standard Same as in binary format maps, it serves to uniquely identify the map, and can optionally contain FraggleScript.
TEXTMAP Standard Contains all map information entered in the map editor, regrouping the functionality of THINGS, LINEDEFS, SIDEDEFS, VERTEXES and SECTORS in a single lump.
BEHAVIOR Source ports Contains compiled ACS bytecode. Generated by ACC or similar software.
SCRIPTS Source ports Contains ACS source code. Created by the map editor.
DIALOGUE Source ports Contains Strife conversation data. Created by the map editor.
ZNODES Source ports Contains all node information, including additional vertices, segments, and subsectors. Generated by the node builder.
ENDMAP Standard Final lump of any UDMF map. Allows to unambiguously mark the end of a map's collection of lumps, so that compliant editors can preserve even unknown or unidentified map lumps.

Trivia[edit]

  • During development of the Doom games id Software created many of the contents of the IWADs as separate lumps which could be merged into the WAD files, or loaded separately. Using DeHackEd or a hex editor to read Doom's executable, it's possible to see development mode loading commands that read some data, such as TEXTURE1, directly from a lump file. Not long after the release of Doom's source code, the developers released the sources for the utilities with which they handled lumps and WADs, including wadlink, their lump merging tool.
  • In DOOM.WAD and DOOM2.WAD, each lump is padded such that the following lump is aligned on a four-byte boundary. The padding, when present, is always the first byte of the preceding lump repeated either one, two, or three times. For example, the DEMO1 lump of DOOM.WAD is 6,854 bytes long. The remainder of 6,854 divided by 4 is 2, and so two padding bytes appear after the DEMO1 lump data and before the DEMO2 lump data. Both of those padding bytes are 0x6D because the first byte in the DEMO1 lump is 0x6D. Note that many modern WAD editing tools do not pad lumps in this way when saving a file.

Sources[edit]

See also[edit]