6 Resource Loader: Overview
This tour examines DOOM
’s WAD
resource system through:
- WAD
file types and functions in w_wad.h
- Lump loading and caching functions in w_wad.c
- Map data structures in doomdata.h
6.0.1 📂 File: w_wad.h
Defines: - wadinfo_t
: WAD file header - filelump_t
: directory entries - lumpinfo_t
: in-memory lump tracking
The w_wad.c
file handles loading and managing WAD files
, which store DOOM’s game data in discrete chunks called lumps
.
6.0.2 📄 File: w_wad.c
(lines 19–21)
Header comment explains the file manages WAD headers, directory reading, and lump I/O.
6.0.3 📄 File: w_wad.c
(lines 292–316)
W_InitMultipleFiles
loads WAD files into memory for engine access.
6.0.4 📄 File: w_wad.c
(lines 141–144)
W_AddFile
reads either a WAD or single lump into the resource system.
6.0.5 📄 File: w_wad.c
(lines 507–513)
W_CacheLumpName
loads a lump by name into memory and returns a pointer to its contents.
6.0.6 📄 File: f_finale.c
(lines 598–602)
Uses W_CacheLumpNum
to load a sprite patch, then draws it flipped or normally.
6.0.7 📄 File: i_sound.c
(line 226)
Loads a sound effect lump into sfx
using W_CacheLumpNum
.
6.0.8 📄 File: p_setup.c
(lines 137–140)
W_CacheLumpNum
loads ML_VERTEXES
, cast to mapvertex_t *
.
6.0.9 📄 File: r_data.c
(lines 258–260)
Texture patch is loaded into realpatch
via W_CacheLumpNum
, and width is read to calculate x2
.
6.0.10 📄 File: w_wad.c
(lines 351–359)
W_CheckNumForName
finds a lump by name, returning its index or -1.
6.0.11 📄 File: w_wad.c
(lines 399–404)
W_GetNumForName
gets lump index or fails if not found.
doomdata.h
defines the data formats used to store map geometry in WAD files.
6.0.12 📄 File: doomdata.h
(lines 43–56)
Enum defining the sequence of map data sections in a WAD file.
6.0.13 📄 File: doomdata.h
(lines 60–64)
mapvertex_t
stores vertex positions from the ML_VERTEXES
lump.
6.0.14 📄 File: doomdata.h
(lines 69–78)
mapsidedef_t
represents a wall side with texture info and sector reference.
6.0.15 📄 File: doomdata.h
(lines 84–93)
maplinedef_t
represents a map line, with vertex references and wall properties.
6.0.16 📄 File: p_setup.c
(lines 144–148)
Loop converts vertex coordinates from integers to fixed-point format.
6.0.17 📄 File: p_setup.c
(lines 178–179)
Segs connect to vertices by indexing the vertex array.
6.0.18 📄 File: p_setup.c
(lines 184–188)
P_LoadSegs
connects segs to linedefs, sidedefs, and front sectors.
6.0.19 📄 File: p_setup.c
(lines 514–517)
Subsectors get sector pointers from their first seg’s sidedef.
WAD I/O
handles DOOM’s resource loading through lump management and caching, with specialized formats for map data.