Doom source code files
From DoomWiki.org
This page describes the files in the Doom source code and their roles in the overall system.
Main files[edit]
Files | Description |
---|---|
am_map.c, am_map.h | Automap |
d_englsh.h | Text strings used in the game (English versions) |
d_event.h | Event structure |
d_french.h | Text strings used in the game (French translations) |
d_items.c, d_items.h | A table which controls weapon animations |
d_main.c, d_main.h | System-independent main function, and setup code |
d_net.c, d_net.h | System-independent networking code |
doomdata.h | Basic data structures used to represent levels on disk |
doomdef.c, doomdef.h | Constants used throughout the source code |
doomstat.c, doomstat.h | Game mode variables |
doomtype.h | Common type definitions used throughout the source code |
d_player.h | Definition of the player_t structure, which represents players |
dstrings.c, dstrings.h | Quit messages |
d_textur.h | An unused data structure, shared in common with Rise of the Triad. Possibly left over from Shadowcaster engine. |
d_think.h | Definitions of thinker structures used for AI |
d_ticcmd.h | Player movement command definition (ticcmd_t) |
f_finale.c, f_finale.h | Finale screen code |
f_wipe.c, f_wipe.h | Screen melt effect |
g_game.c, g_game.h | High-level game stuff: transitions between game states, level exits, main game event responder, setting up new games, demo recording |
hu_lib.c, hu_lib.h | Library functions for heads-up display |
hu_stuff.c, hu_stuff.h | Heads-up display code |
i_main.c | Main function |
i_net.c, i_net.h | System-dependent network code (UDP Unix version) |
i_sound.c, i_sound.h | System-dependent sound code |
i_system.c, i_system.h | Miscellaneous system-dependent code (error handling, timer, etc.) |
i_video.c, i_video.h | System-dependent video code (X11 Unix version) |
info.c, info.h | Tables of data used by the game: sprite name table, thing data table, frame table |
m_argv.c, m_argv.h | Functions for searching the command line argument list |
m_bbox.c, m_bbox.h | Bounding boxes |
m_cheat.c, m_cheat.h | Cheat code parsing |
m_fixed.c, m_fixed.h | Fixed point number functions |
m_menu.c, m_menu.h | Menu |
m_misc.c, m_misc.h | Miscellaneous functions: text rendering, configuration file loading, writing screenshots |
m_random.c, m_random.h | Pseudo-random number generator |
m_swap.c, m_swap.h | Endianness conversion routines |
p_ceilng.c | Ceiling movement |
p_doors.c | Door movement |
p_enemy.c | Monster AI |
p_floor.c | Floor movement |
p_inter.c, p_inter.h | Object interaction: item pickup functions, object damage functions |
p_lights.c | Animated lights |
p_local.h | Global header for functions in the p_* section |
p_map.c | Object movement: collisions, teleportation, detecting for injury |
p_maputl.c | Library functions for p_map.c: blockmap code |
p_mobj.c, p_mobj.h | Basic object control functions: creating/destroying objects, movement, etc. |
p_plats.c | Lifts |
p_pspr.c, p_pspr.h | PSprite (weapon sprite) functions |
p_saveg.c, p_saveg.h | Savegames |
p_setup.c, p_setup.h | Loading of map data and setup |
p_sight.c | Line-of-sight/visibility checking for monsters |
p_spec.c, p_spec.h | Special effects: texture animations, line triggers, floor/ceiling/lighting changes |
p_switch.c | Wall switches |
p_telept.c | Handling of teleporter lines |
p_tick.c, p_tick.h | Base thinker code |
p_user.c | Player point-of-view code (weapon bobbing, player object thinker, etc.) |
r_bsp.c, r_bsp.h | BSP tree traversal |
r_data.c, r_data.h | Initialisation of data (textures, etc.) for use in the rendering code |
r_defs.h | Type definitions used in the rendering engine |
r_draw.c, r_draw.h | Fast drawing functions |
r_local.h | Includes all the r_* header files |
r_main.c, r_main.h | Entrypoint into rendering code |
r_plane.c, r_plane.h | Rendering of planes (floor/ceilings) |
r_segs.c, r_segs.h | Rendering of walls |
r_sky.c, r_sky.h | Sky rendering code (actually this is only some very basic initialisation code; the sky rendering code is really in r_plane.c) |
r_state.h | Definitions for global variables used by the rendering engine |
r_things.c, r_things.h | Rendering of sprites |
sounds.c, sounds.h | Sound/music tables |
s_sound.c, s_sound.h | System-independent sound code |
st_lib.c, st_lib.h | Library routines for status bar code |
st_stuff.c, st_stuff.h | Status bar main code |
tables.c, tables.h | Lookup tables for fast sine/cosine |
v_video.c, v_video.h | Generic image patch rendering (for menu, etc.) |
wi_stuff.c, wi_stuff.h | Intermission screens |
w_wad.c, w_wad.h | WAD loading code |
z_zone.c, z_zone.h | Zone memory allocator |
Sound server[edit]
These files are part of the sound server:
Files | Description |
---|---|
linux.c | Linux-specific sound output code |
sounds.c,sounds.h | List of sound effects |
soundsrv.c,soundsrv.h | Core sound server code |
soundst.h | Sound structures and prototypes |
wadread.c,wadread.h | WAD file reading code |
Missing files[edit]
The following files were part of the original source code, but were removed in the "cleanup" before the source release. Evidence of these files remains in the text file "FILES" distributed with the Doom source, which appears to contain a Unix file listing of the source code files before Bernd Kreimeier's changes.
Versions of some of these files can nonetheless be found elsewhere.
Files | Description | Can be found in... |
---|---|---|
am_data.h | Vector graphics macros for the automap (merged into am_map.c) | am_oids.zip released by John Romero |
am_oids.c, am_oids.h | Automap asteroids - an Easter egg which was never completed | am_oids.zip released by John Romero |
defs.inc | Assembly header file for optimized rendering code | Heretic source code |
dither.c, dither.h | Dithering code for NeXTSTEP version, unused in Linux port | Quake II source code, 2023 Doom source code leak |
drcoord.h | Objective C header; possibly part of the intermission statistics driver that was powered by the -statcopy command. | Heretic source code |
dutils.c, dutils.h | "Dave's utilities"; cheat parsing, and screen melt effect. This apparently contained singly and doubly linked lists, among other common data structures | Portions are split into f_wipe.c and m_cheat.c; entire file in 2023 Doom source code leak |
fpfunc.S | Optimised fixed point assembler | Trace i386 portions found in README.asm; m68k portions in the 2023 Doom source code leak |
i_cyber.c | Logitech CyberMan 3D mouse code | Heretic source code |
i_dga.c | X11 DGA graphics | 2023 Doom source code leak |
i_header.h | Header for system-dependent sound code (became i_sound.h) | Heretic source code |
i_ibm.c | PC graphics code | Heretic source code |
i_ibm_a.asm | IBM PC joystick assembly code | Heretic source code |
i_pcnet.c | PC networking code | 2023 Doom source code leak |
i_svgalib.c | Linux SVGA graphics, replaced i_main.c | - |
i_unix.c | Unix fixed-point, networking and display code | 2023 Doom source code leak |
i_x.c | X11 with SHM code | Heavily modified and released as i_video.c; original file in the 2023 Doom source code leak |
irix.c | Irix sound server backend code | 2023 Doom source code leak |
planar.asm | Assembler; optimized versions of R_DrawColumn and R_DrawSpan | Replaced with linear.asm in the Heretic source code; original file in the 2023 Doom source code leak |
sun.c | Sun sound server backend code | 2023 Doom source code leak |
t.c | Text snippet of Unix sound server init code | 2023 Doom source code leak |
tmap.S | i386 and m68k Optimized texture mapping assembler functions; self-modifying code version of R_DrawColumn and variants | i386 portions included in README.asm; m68k portions in the 2023 Doom source code leak |
vgaview.h | Objective C header; possibly part of id's original map editor. Contains information about palettes, graphics, and scaling. | Heretic source code |
wi_data.h | Splotch position data and animated graphics position data for the DOOM intermission sequence | Merged into wi_stuff.c; original file in the 2023 Doom source code leak |