Parameter

In respect to the Doom engine a parameter (or command line parameter and command line argument) is a start-up indication by the user that the engine should change its default behavior. The parameters are typed after the executable's name in the command line and are followed by variables or text strings, if applicable. The command line may be the MS-DOS command line, or any compatible interface, such as a batch file, the command line or target entry in a shortcut's properties dialog box, the Windows Run command, or the command line in DOSBox. Any number of parameters may be typed in, limited only by the maximum length of text allowed by the interface (for example, a 127 character total in some DOS versions).

Many parameters that affect in-game behavior require warping through -wart, -warp, -episode, -skill, -playdemo, -record, or -loadgame, or else they are overridden when the user starts a game through the menu. In deathmatch and cooperative modes an extra program called a device driver by the Doom documentation handles some of the multiplayer specifics and passes any parameters to the main executable. The extra program will also warp the player to the first level of the game if no other warping parameter is used. Unless stated otherwise, parameters work for all versions of both Doom and Doom II, with some exceptions that are detailed accordingly in their descriptions. Note that if you warp internally using the idclev cheat code, any parameters that required warping will be disabled.

Engine variants
While most parameters are available to all the released versions of the Doom games, some became obsolete with newer versions, and some were added as features were enabled or changed. Earlier versions of the engine, particularly up to 1.2, tend to require the -devparm</tt> parameter (that enables "developers mode") to use many of the parameters, but later versions do not require it.

Ports of the Doom engine usually retain most if not all the available parameters, and sometimes add some of their own, or customize some of the original ones. Since ports often rely less on the command line and more on a graphical user interface they may have alternate ways of entering commands and parameters. Doom95, for example, accepts the usual parameters but adds a launcher to be used by default for all purposes, and various source ports add a console that can handle most options and variables, or support drag-and-drop capabilities that take care of some of the start-up options.

Other games with Doom-based engines, such as Heretic, Hexen, and Strife, also use the same parameters with only slight differences, mostly because of required customizations or because they are based on earlier versions of the Doom engine that did not include all the parameters available in the latest versions of the Doom games.

In order to use parameters in Strife, the player needs to launch the game using strife1.exe</tt>. Strife.bat</tt> will trigger two opening videos before giving the command to load the game itself. After the videos have been displayed, strife1.exe</tt> is launched automatically meaning that all previously added parameters will be ignored.

List of parameters
The parameter descriptions in the list below are preceded by practical identifiers which give a general idea of what the general effect of each parameter is. The parameter identifiers include:


 * Analysis: measures something
 * Configuration: access to settings or files
 * Gameplay: changes the way the game is played
 * Input: affects player input devices
 * Monsters: affects monster qualities
 * Multiplayer: enables multiplayer functions
 * None: disabled development parameter
 * Output: affects sound or graphic output
 * Recording: records or plays demos
 * Warping: starts the game in a level

Below the identifier each parameter description includes a basic command line structure, headed by the type of executable needed or generally used with the parameter, mainly doom (doom.exe</tt> or doom2.exe</tt>) or a driver (ipxsetup.exe</tt> or sersetup.exe</tt>), and followed by other required parameters, the parameter in question, and a variable, if applicable. If doom is used driver also applies unless noted otherwise, and executable types not in italics are actual executale file names.

Note: Except where noted, when a variable required by a parameter is a number, any value lower than the lowest expected value will be taken as that lowest value, and any value higher than the highest expected value, as the highest value. Non-numerical characters will be considered either as the lowest or the highest value, depending whether the operating system places them after or before the numbers in an alphanumeric listing.

-8250

 * (multiplayer)
 * sersetup -8250</tt>


 * This parameter sets the UART value for the modem to 8250, in case 16550 fails to work properly.

-9600, -14400, -38400, -57600

 * (multiplayer)
 * sersetup -9600</tt>


 * With these parameters the baud rate for the modem can be changed from the default 14400.

-altdeath

 * (gameplay, multiplayer)
 * driver -altdeath</tt>


 * The -altdeath</tt> parameter enables the alternate deathmatch mode (called deathmatch v2.0 in the documentation) added in version 1.5 where most items picked up by players respawn after a while after being picked up. This also applies to weapons, which (unlike in normal deathmatch mode) also disappear for a while upon being pick up. The mode is meant for multiplayer games, although it will work in single player mode as well (doom -warp -altdeath</tt>), where the player will be spawned on a deathmatch spot.

-answer

 * (multiplayer)
 * sersetup -answer</tt>


 * With this parameter the Doom networking component tells the modem that it should await an incoming call.

-avg

 * (multiplayer)
 * driver -deathmatch -avg</tt>


 * This -avg</tt> parameter tells Doom to behave as if <tt>-timer 20</tt> were used. The three letters are an acronym that stands for an establishment called "Austin Virtual Gaming" near the University of Texas set up in 1994 for pay-to-play Doom multiplayer.

-cdrom

 * (configuration)
 * <tt>doom -cdrom</tt>


 * This parameter makes the engine use C:\DOOMDATA as the directory where configuration data (such as default.cfg and any saved games or screen shots) is stored, so that the game can be run directly from a CD-ROM. If the directory does not exist on the system, Doom creates it. The disk activity indicator also changes to a picture of a CD, rather than a diskette, when the parameter is applied.

-com1, -com2, -com3, -com4

 * (multiplayer)
 * <tt>sersetup -com1</tt>


 * The <tt>-com</tt> parameters define what COM port is used when making a connection.

-comdev

 * (configuration)
 * <tt>doom -comdev</tt>


 * With <tt>-comdev</tt> the id Software developers told the engine to read the WAD and lump data for the commercial game (Doom II) from specified directories.

-config

 * (configuration)
 * <tt>doom -config </tt>


 * With this parameter the engine uses an alternate configuration file instead of the usual <tt>default.cfg</tt>. The required configuration string may be just a file name (such as <tt>doom.cfg</tt>), which will be read from (or created in) the game's directory, or a path-and-file name (<tt>c:\configs\doom.cfg</tt>, for example) if another directory is desired.


 * The <tt>-config</tt> parameter may be used along with <tt>-cdrom</tt>, in which case the configuration file will be assigned as chosen while saved games and screen shots will be placed in the Doomdata directory.

-control

 * (none)
 * <tt>doom -control &lt;pointer&gt;</tt>


 * This parameter, added in v1.4, enables an interrupt-driven external control driver to provide input to the game. A pointer to a buffer containing an interrupt number and a tic command structure must be passed as the argument (providing an invalid value could crash or corrupt the game). When provided, this parameter causes the message <tt>Using external control API</tt> to appear. This parameter is also available in Strife, but not in Heretic or Hexen.

-deathmatch

 * (gameplay, multiplayer)
 * <tt>driver -deathmatch</tt>


 * The <tt>-deathmatch</tt> parameter enables the head-to-head competitive mode that pits players against each other, as opposed to the cooperative mode. This is the original deathmatch mode where ammunition and power-ups do not respawn and weapons remain but can be picked up only once per player life, like in cooperative games. There is a difference, however: in deathmatch weapons come with quantity of ammo equal to one large pickup (that is, either 50 bullets, 20 shells, 5 rockets, or 100 energy cells). This parameter is meant for multiplayer games, although it will work in single player mode as well (<tt>doom -warp -deathmatch</tt>), where the player will be spawned on a deathmatch spot. This parameter does not exist in Strife due to its lack of cooperative play; a netgame is inherently always a deathmatch in that game.

-debugfile

 * (analysis)
 * <tt>doom -debugfile</tt>


 * With this parameter the engine produces a file listing available realtics against used gametics to show the internal resources available at each point during play or demo playback. It produces a file called <tt>debug0.txt</tt> where the data is stored in real time. This parameter has no effect when used in conjuction with <tt>-timedemo</tt> (which also deals with the same data).

-devparm

 * (analysis, configuration)
 * <tt>doom -devparm</tt>


 * The developer's parameter runs the game in developer mode, creating screen shots with the F1 key instead of displaying the help screen and showing the tics-per-frame meter on the lower left of the screen. If only the first dot on the meter is displayed, performance is optimal. The <tt>-devparm</tt> parameter is also required by some parameters in older versions of Doom. In Strife, -devparm disables the graphical startup sequence, but does not enable a tic counter or change the function of the F1 key, as Strife already has a dedicated key for taking screenshots.

-devsnd

 * (analysis, configuration)
 * <tt>hexen -devsnd c:\path\to\sndinfo.txt</tt>


 * A development function from Hexen. Instead of loading the SNDINFO lump embedded in the IWAD, the game will load the given text file as a SNDINFO lump. It is only in this mode that the <tt>$archivepath</tt> command is used.

-dial

 * (multiplayer)
 * <tt>sersetup -dial </tt>


 * With this parameter the Doom networking component tells the modem what phone number to dial.

-dup

 * (multiplayer)
 * <tt>driver -dup</tt>


 * The <tt>-dup</tt> parameter duplicates tic commands (see ticdup). When this is specified, the same tic command is used for two consecutive tics; as a result, the network bandwidth is halved at a cost in movement accuracy.

-episode

 * (warping)
 * <tt>doom -episode </tt>


 * This parameter starts one of Doom's three episodes from its first level. The usual values for the episode variable are the numbers <tt>1</tt>, <tt>2</tt>, or <tt>3</tt>, representing each episode. This parameter is the equivalent of <tt>-warp <e> 1</tt>, where e is the number of the episode, and when playing Doom II it always loads the first level of the game, regardless of what episode number is chosen. The <tt>-episode</tt> parameter has no effect if no value is added after it. This parameter does not exist for Strife.

-extratic

 * (multiplayer)
 * <tt>driver -extratic</tt>


 * The <tt>-extratic</tt> parameter provides extra data in each data packet sent over the network; this adds redundancy and makes the game more resilient to dropped packets at the possible cost of using more bandwidth (see extratic).

-fast

 * (gameplay, monsters)


 * <tt>doom -warp -fast</tt>


 * The fast monsters parameter makes monsters attack often, increases the speed of demons and spectres, and makes demonic fireballs faster than usual. It requires warping (such as <tt>-warp</tt>) to be effective and was first introduced with version 1.2 of Doom. Note that Heretic and Hexen lack this command.

-file

 * (configuration)
 * <tt>doom -file </tt>


 * The <tt>-file</tt> parameter allows Doom to load additional WADs and lumps, beyond the usual IWAD. The files variable may be a single file name, path-and-file name (if the file is on a different directory than where Doom is run from), or a series of these. A second file would be typed in one space after the first, a third one space after the second, and so on. The order of multiple files may make a difference, as equivalent lumps will be overwritten in the run-time memory, with the rightmost file in the list taking precedence. Note that the engine has a static limit of twenty loaded files (IWAD included), so no more than nineteen separate files should be listed after this parameter.


 * When this parameter is used a warning message stating that the game has been modified is enabled during start-up. The engine normally stops at the message, and to continue the user must press the Enter key. The message can be bypassed by creating a text file (named <tt>a</tt>, for example) with nothing but <tt>echo</tt> typed in it, and adding it thus in the command line:


 * <tt>doom -file<a </tt>


 * In any case, if any of the files is missing, the engine will notify the user over the warning message, but will still run normally, missing files notwithstanding. Issues may occur if those missing files are required, though, so it may be convenient not to disable the warning if the location of files being loaded is uncertain.

-flip

 * (gameplay, output)
 * <tt>strife1 -flip</tt>


 * Attempts to display flipped player gun sprite graphics in Strife, for players with opposite handedness. Unfortunately the effect is incomplete and broken, because while it flips the graphics, it does not suitably reverse their x offsets as well, causing the weapon animations to appear improperly aligned. Rogue Entertainment never documented this parameter in the game's text files as a result. This parameter exists only in Strife.

-irq

 * (multiplayer)
 * <tt>sersetup -irq</tt>


 * With this parameter the Doom networking component will define what IRQ number will be used for the COM port. The irqport variable should be a valid IRQ number to have any effect.

-left

 * (output)
 * <tt>doom -net 3 -left</tt>


 * Under Doom version 1.0 or 1.1, the <tt>-left</tt> parameter will cause a networked computer to display the area to the left of the player's normal view.

-loadgame

 * (configuration, warping)
 * <tt>doom -loadgame </tt>


 * This parameter starts Doom from a previously saved game. The savegame is normally a number from 0 to 5 (these stand for the 6 slots available from the "save game" menu) although an edited slot using any other single readable character, such as a single digit number or a letter, will also be loaded (<tt>doom -loadgame z</tt> will load <tt>doomsavz.dsg</tt>). If you use this parameter with <tt>-record</tt>, a demo will be produced, but it will quite likely not properly be played back, becuase it will start "from scratch" on the usual player start, instead of using the location and conditions of the saved game, even if <tt>-loadgame</tt> is used along with <tt>-playdemo</tt> or <tt>-timedemo</tt> (in which cases it is ignored).

-maxdemo

 * (recording)
 * <tt>doom -record -maxdemo </tt>


 * This defines the maximum size in kilobytes for a demo recording, instead of the usual value of 128 (which is roughly 15 minutes for a single-player game). If the limit is reached while recording, the game ends with a Demo .lmp recorded message in the command line.

-net

 * (multiplayer)
 * <tt>doom -net </tt>


 * The <tt>-net</tt> parameter enables the networking component in Doom versions 1.0 and 1.1, and defines the number of players (<tt>1</tt> to <tt>4</tt>) involved. In later versions this parameter is not added externally by the user, and instead applied automatically by part of the networking component of the engine to enable certain multiplayer functions, when a driver is used.

-nodes

 * (multiplayer)
 * <tt>ipxsetup -nodes </tt>


 * Networked games connected through the IPX protocol use the <tt>-nodes</tt> parameter to define how many computers will join the game. The players value stands for the number of players or nodes, from <tt>1</tt> to <tt>4</tt>. If this parameter is not used, the engine assumes two players.

-nodraw

 * (output)
 * <tt>doom -timedemo -nodraw</tt>


 * When the <tt>-nodraw</tt> parameter is used along with <tt>-timedemo</tt> the graphics drawing functions of the Doom rendering engine are not used, so the speed of the underlying engine can be measured without any resources spent displaying the in-game graphics. Without <tt>-timedemo</tt>, this parameter has no effect.

-noblit

 * (none)
 * <tt>doom -noblit</tt>


 * This is a disabled parameter similar to <tt>-nodraw</tt> with which, during development, the programmers told the engine not to pass data from an internal buffer onto the screen.

-nograph

 * (output)
 * <tt>strife1 -nograph</tt>


 * Disables the graphical introduction sequence in Strife and replaces it with limited DOOM-style text output. The <tt>-devparm</tt> parameter has the same effect, so specifying the two together is redundant. This parameter only exists in Strife.

-nomonsters

 * (monsters)
 * <tt>doom -warp -nomonsters</tt>


 * If the <tt>-nomonsters</tt> parameter is applied, monsters will not be spawned when any levels are loaded. It is usually used along with deathmatch modes although it can also be useful for walkthroughs and during testing. It must be used along with a warping parameter, to be effective.

-nomouse

 * (input)
 * <tt>doom -nomouse</tt>


 * This parameter disables the mouse during the game session.

-nomusic

 * (output)
 * <tt>doom -nomusic</tt>


 * The <tt>-nomusic</tt> parameter simply disables the background music during the game session.

-nosfx

 * (output)
 * <tt>doom -nosfx</tt>


 * This parameter disables the game's sound effects (screams, clunks, explosions, and so on) during the game session.

-nosound

 * (output)
 * <tt>doom -nosound</tt>


 * With <tt>-nosound</tt> both music and sound effects are disabled during the game session.

-novoice

 * (output)
 * <tt>strife1 -novoice</tt>


 * Causes Strife to play as though voices.wad was unable to be found, even if the file is present. Text will appear in all dialogue boxes by default. This parameter exists only in Strife.

-playdemo

 * (recording, warping)
 * <tt>doom -playdemo </tt>


 * Demo recordings are played using the <tt>-playdemo</tt> parameter. The lump variable is the name of a lump, excluding any file extension and without a file path. The parameter will play any one demo in the directory where the engine is executed, in the IWAD, or that is loaded using the <tt>-file</tt> parameter (as part of a PWAD or as a separate lump). In the latter cases the engine will state that it has not found the demo, but it will play it any way (as the message refers to not finding it in the directory the engine is launched from). If the specified lump does not exist, the engine exits to the command prompt with an error message.

-port

 * (multiplayer)
 * <tt>driver -port </tt>


 * For IPX connections, this parameter defines the port number the Doom networking component will use between connected computers, instead of the default 666. It allows simultaneous games on a single network or a means to bypass blocked ports. If the parameter is used without a variable, or if the variable is a non-numerical character, the driver will attempt to use port 0.

For modem connections, <tt>-port</tt> will define the COM I/O port the Doom networking component uses to communicate with the modem. In this case the port variable allows either decimal or hexadecimal values.

-random

 * (gameplay, multiplayer)
 * <tt>strife1 -altdeath -random</tt>


 * When <tt>-altdeath</tt> mode is active, this parameter causes Strife to respawn items after a randomized amount of time, rather than a fixed interval as occurs normally. This parameter exists only in Strife.

-ravpic

 * (analysis)
 * <tt>heretic -ravpic</tt>
 * <tt>hexen -ravpic</tt>


 * This parameter replaces -devparm for Heretic and Hexen, and allows to take screen shots with the F1 key. It does not display the ticker which is instead enabled by cheat codes for these games, <tt>ticker</tt> for Heretic and <tt>rrettenmund</tt> for Hexen. This parameter does not exist for Doom.

-record

 * (recording, warping)
 * <tt>doom -record </tt>


 * The <tt>-record</tt> parameter tells the engine to generate a demo lump containing the actions of any participating players when it exits to the command prompt, displaying a message that the demo has been recorded, instead of the <tt>ENDOOM</tt> screen. The demo variable is the name of the lump to be created, excluding any file extension and optionally including a file path. If a file path is included, the demo will be recorded only if the target directory exists. If the directory in the optional path does not exist, the engine will state a demo has been recorded upon exiting the game, but no demo will be produced. If this parameter is not used along with a warping parameter, it will load the first level of the game. If it is applied without a demo name, it will try to read any following parameter as a name, or will have no effect if nothing follows.


 * When this parameter is applied the Q key will immediately exit the game, and since the demo format simplifies what tics are recorded for the player's movements, movement may be slightly less accurate. This is noticeable while using the mouse and, if a multiplayer game is attempted, it will not allow a recording peer to connect to one that is not recording (a consistency failure will occur.


 * When used with the <tt>-cdrom</tt> parameter it may be necessary to use a path-and-file name for the demo string, particularly if the game is launched from a CD, or else Doom will attempt to unsuccessfully write the demo lump onto the disc.

-recordfrom

 * (recording, warping)
 * <tt>doom -recordfrom </tt>


 * This parameter was meant to record from a saved game, where savegame is generally a number from 0 to 5, and demo the name of the lump to be recorded. It was never fully implemented, as in versions 1.0 to the leaked "1.4" of Doom it warps to the start of the level the saved game takes place in, instead of loading the saved game, and does not record a demo. In later versions, it was removed.

-regdev

 * (configuration)
 * <tt>doom -regdev</tt>


 * With <tt>-regdev</tt> the id Software developers told the engine to read the WAD and lump data for the registered game (Doom) from specified directories.

-respawn

 * (gameplay, monsters)
 * <tt>doom -warp -respawn</tt>


 * The <tt>-respawn</tt> parameter makes each monster return via respawning after a few seconds. Monster corpses are teleported away and replaced by a live monster teleporting in at the monster's initial starting location on the level. After respawned monsters remain active and move immediately if any opponent they were pursuing before death occurred still lives, but will be spawned in dormant state otherwise. The parameter requires warping (such as <tt>-episode</tt>) to be effective and was first introduced with version 1.2 of Doom.

-right

 * (output)
 * <tt>doom -net 3 -right</tt>


 * Under Doom version 1.0 or 1.1, the <tt>-right</tt> parameter will cause a networked computer to display the area to the right of the player's normal view.

-shdev

 * (configuration)
 * <tt>doom -shdev</tt>


 * With <tt>-shdev</tt> the id Software developers told the engine to read the WAD and lump data for the shareware game (Doom: Knee-Deep in the Dead) from specified directories.

-skill

 * (gameplay, monsters, warping)
 * <tt>doom -skill </tt>


 * Doom's difficulty skill level can be chosen during start-up by using the <tt>-skill</tt> parameter. The level variable stands for the particular skill level, where <tt>1</tt> is "I'm Too Young To Die", <tt>2</tt> is "Hey, Not Too Rough", <tt>3</tt> is "Hurt Me Plenty", <tt>4</tt> is "Ultra-Violence", and <tt>5</tt> is "Nightmare!". If a value of <tt>0</tt> (or any character of less value than a 1) is chosen, all things except for the player are absent from the game. This parameter will warp the player to the first level of the game if another warping parameter is not included in the command line.

-statcopy

 * (analysis)
 * <tt>statdriver</tt>


 * A statistics driver (statdriver stands for the name of a program, such as <tt>statdump</tt>) which invokes the Doom executable uses this parameter to link to it in order to collect the statistics that are presented on the game's tally screens.

-timedemo

 * (analysis, recording, warping)
 * <tt>doom -timedemo </tt>


 * The <tt>-timedemo</tt> parameter plays a demo without limiting graphics to 35 frames per second and upon exiting to the command prompt displays the number of screen frames drawn (gametics) and the time taken to play them (realtics), instead of the <tt>ENDOOM</tt> screen. The average screen frame rate on a level can be determined using the formula (gametics/realtics)*35=fps. If a demo recording spans more than one level, the resulting values will be incorrect, as the realtics will correspond only to the last level played.


 * Like during the built-in demo sequence normally played at the start of a game, this parameter makes most device input bring up the menu while the demo is playing, so pressing the Tab key to select automap mode or pressing Enter to display the last status message cannot be used. Some non-playing functions do still work, such as increasing or decreasing the screen size.

-timer

 * (multiplayer)
 * <tt>driver -deathmatch -timer </tt>


 * With <tt>-timer</tt> users tell Doom to automatically exit levels to the intermission screen after a number of minutes, as if an exit switch had been activated. The parameter requires either <tt>-deathmatch</tt> or <tt>-altdeath</tt> to have any effect.

-turbo

 * (gameplay)
 * <tt>doom -turbo </tt>


 * The -turbo parameter multiplies the player's movement speed by a percentage of 10 (the player moves ten times slower than usual) to 400 (the player moves four times faster than usual). When no value is specified, the player moves at twice normal speed, and any value exceeding 255 will cause the player to move backwards at twice the increased speed if the user presses the "run" key (key_speed). This command is present in Doom and Strife.

-warp

 * (warping)


 * <tt>doom -warp &lt;map&gt;</tt>


 * This parameter selects on what level the game will start, skipping title screen and the demo sequence. When playing Doom both an episode number from <tt>1</tt> to <tt>3</tt> and a map number from <tt>1</tt> to <tt>9</tt> must be specified, with a space in between, while in Doom II only a map number from <tt>1</tt> (or <tt>01</tt>) to <tt>32</tt> is required. If no variable is placed after the parameter, the game starts with the title screen as usual. The <tt>-warp</tt> parameter first appears in the leaked "v1.4" version.


 * Adding a tilde (~) character before the filename causes the WAD to be reloaded each time the level is restarted, allowing the level to be edited in parallel without the overhead of restarting the game (see reload hack).

-wart

 * (configuration, warping)
 * <tt>doom -devparm -wart </tt>


 * The <tt>-wart</tt> parameter is an earlier version of <tt>-warp</tt>. In versions above 1.2 it is superseded by <tt>-warp</tt>, but is still available instead as a development parameter that does not require <tt>-devparm</tt> and which attempts to load a WAD file named after level located in a hard-coded directory; <tt>1 3</tt> will try to load <tt>E1M3.wad</tt>, for example. If the WAD file it not found, the user is sent to the command prompt with a W_Reload error message. This parameter allowed the developers to play the game and work on the maps at the same time, seeing changes in near-real-time by using the warp cheat to return to the level. It would be reloaded with any changes saved in the editor.

-work

 * (gameplay, analysis)
 * <tt>strife1 -work</tt>


 * Enables Rogue Entertainment's hidden playtesting mode in Strife. God mode is automatically given to all players and pressing the inventory drop key (backspace by default) will toggle no-clipping state. This parameter exists only in Strife.

@

 * (configuration)
 * <tt>doom @ </tt>


 * This parameter tells the Doom engine to read from a response file, a text file that may store additional command line parameters. The file may have any name that is valid to the system, optionally with an extension. The parameters are typed as in the command line (<tt>-episode 2</tt>, for example), but one per line, where up to 100 lines may be used. The additional parameters may be disabled for later use by placing a vertical bar (the | character) between the prefixing dash (-) and the rest of the parameter name.


 * ''Main article: Environment variables

Unix port parameters

 * Main article: Unix port parameters

Source port parameters

 * Main article: Source port parameters