Difference between revisions of "Doom source code"

From DoomWiki.org

[unchecked revision][unchecked revision]
m (link source ports)
(format, links)
Line 1: Line 1:
The Doom source code was released December 23 1997, initially under a not-for-profit license.  Later, permission was granted to re-release the source code under the GNU GPL.  
+
The '''Doom source code''' was released December 23, 1997, initially under a not-for-profit license.  Later, permission was granted to re-release the source code under the GNU [[Wikipedia:GPL|GPL]].  
  
Before release, the source code was apparently tidied up by Bernd Kreimeier; the source release includes a ChangeLog of his contributions.  Several documentation files are also included.  The original plan for the source code release involved a book Kreimeier was to write on the Doom engine; however, due to Doom's decreasing relevance in the gaming community it was eventually judged not to be a marketable idea and the project was abandoned.  The source code was released to the public.
+
Before release, the source code was apparently tidied up by [[Bernd Kreimeier]]; the source release includes a changelog of his contributions.  Several documentation files are also included.  The original plan for the source code release involved a book Kreimeier was to write on the Doom engine; however, due to Doom's decreasing relevance in the gaming community, it was eventually judged not to be a marketable idea, and the project was abandoned.  The source code was released to the public.
  
Because of legal issues regarding the sound library used for Doom, the release was of the source code to the Linux port of Doom.  Despite this, within several months several ports had been made back to DOS.  As a result several [[source ports]] exist.
+
Because of legal issues regarding the [[sound]] library used for Doom, the release was of the source code to the [[Linux]] port of Doom.  Despite this, within several months, several ports had been made back to DOS.  As a result, many [[source ports]] exist.
  
 
== Source code structure ==
 
== Source code structure ==
Line 18: Line 18:
 
; P_*:  Game logic/behaviour
 
; P_*:  Game logic/behaviour
 
; R_*:  [[Doom rendering engine|Rendering engine]]
 
; R_*:  [[Doom rendering engine|Rendering engine]]
; S_*:  Sound code
+
; S_*:  [[Sound]] code
 
; ST_*:  [[Status bar]]
 
; ST_*:  [[Status bar]]
 
; V_*: General graphic rendering
 
; V_*: General graphic rendering
Line 25: Line 25:
 
; Z_*:  [[Zone memory|Zone memory allocation system]]
 
; Z_*:  [[Zone memory|Zone memory allocation system]]
  
The following are common prefixes for functions although they do not denote a particular subsystem and there are no files with these prefixes:
+
The following are common prefixes for functions, although they do not denote a particular subsystem, and there are no files with these prefixes:
  
 
; A_*:  Action functions invoked in sprite movement frames (these are the functions used in [[Dehacked]] "code pointers")
 
; A_*:  Action functions invoked in sprite movement frames (these are the functions used in [[Dehacked]] "code pointers")

Revision as of 22:14, 31 May 2005

The Doom source code was released December 23, 1997, initially under a not-for-profit license. Later, permission was granted to re-release the source code under the GNU GPL.

Before release, the source code was apparently tidied up by Bernd Kreimeier; the source release includes a changelog of his contributions. Several documentation files are also included. The original plan for the source code release involved a book Kreimeier was to write on the Doom engine; however, due to Doom's decreasing relevance in the gaming community, it was eventually judged not to be a marketable idea, and the project was abandoned. The source code was released to the public.

Because of legal issues regarding the sound library used for Doom, the release was of the source code to the Linux port of Doom. Despite this, within several months, several ports had been made back to DOS. As a result, many source ports exist.

Source code structure

The source code can be divided into sections. Files and functions within the source code have one or two-letter prefixes to denote their subsystem.

AM_*
Automap code
D_*
Initialisation/general code
F_*
"Finale" (end of game) and "screen melt" code.
G_*
Main game loop/control
HU_*
Heads-up display
I_*
System-independent code
M_*
Miscellaneous (includes the menu)
P_*
Game logic/behaviour
R_*
Rendering engine
S_*
Sound code
ST_*
Status bar
V_*
General graphic rendering
WI_*
End-of level "intermission" screen
W_*
WAD file loading
Z_*
Zone memory allocation system

The following are common prefixes for functions, although they do not denote a particular subsystem, and there are no files with these prefixes:

A_*
Action functions invoked in sprite movement frames (these are the functions used in Dehacked "code pointers")
PIT_*
Callback functions passed to P_BlockThingsIterator (see p_maputl.c)
T_*
"Thinker" functions set to be called each clock tic for some purpose (eg, moving platforms or flickering lights)

A detailed list of files and their purposes can be found in Doom source code: files.

External links