Changes

From DoomWiki.org

Doom source code

1,545 bytes added, 21:36, 17 March 2018
See also: +license, +strife code
The '''Doom source code''' was released [[Timeline#1997|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]] in on [[Timeline#1999|October 3, 1999]].
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 then released to the public.
Because of legal issues regarding the [[DMX]] [[sound]] library developed by [[Paul Radek]] which was used for Doom, the release was of the source code to the [[Wikipedia:Linux|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-specific code; M_*: Miscellaneous (includes the menu); P_*: Game logic/behaviour; R_*: [[Doom rendering engine|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|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]].
 
==Doom Classic==
''[[Doom 3: BFG Edition]]'' incorporates the "Doom Classic" port allowing to play [[The Ultimate Doom]] and [[Doom II]] on 32- and 64-bit Windows, on the [[Xbox 360]] and on the [[PlayStation 3]]. There are a few changes done to the source code and packaging here. Notably:
* Bugs introduced in the LinuxDoom code by Bernd Kreimeier's cleanup and changes are absent
* [[MUS|MUS2MIDI]] and [[TiMidity]] are incorporated for MIDI playback, instead of using [[DMX]]
* A few [[static limits]] have been raised, notably [[visplane]]s and [[drawseg]]s to accommodate for [[No Rest for the Living]]'s levels
* Several #defines have been moved out of their original files and into either Precompiled.h or defs.h (both new files)
* The [[Master Levels]] and No Rest for the Living are handled as mission packs like [[TNT: Evilution]] and [[Plutonia]]
* The French language file is still present but emptied, French is removed from the language_t enum
* The code is available under the GPLv3 or later
 
Note: this should not be confused with the iOS port also named [[Doom Classic (iOS)|Doom Classic]].
 
== See also ==
* [[Doom Source License]]
* [[Heretic source code]]
* [[Hexen source code]]
* [[Strife source code]]
* [[Doom 3 source code]]
== External links ==
* [httphttps://www.doomworld.com/10years/ports/ports01_1.php Doomworld - 10 years of Doom] - some history of the Doom source release.* {{idgames|id=8802|title=Doom source code}} (Original [[httpLicences#Source code release|DOOM Source Licensed]] version)* {{idgames|id=14576|title=Doom source code}} (Revised [[Licences#GNU_General_Public_License_.28GPL.29|GPL]] version)* [https://www.3ddownloadsgithub.com/showfile.php3?file_id=7430 Original id-Software/DOOM GitHub repository for Doom Source Code] - The source code as [* [https://github.com/id -Software/DOOM-3-BFG/tree/master/doomclassic GitHub repository for Doom Classic]] released it. [[Category:Doom_engineDoom engine]]
[[Category:Code]]