# Doom Legacy 1.48.10 Console Reference

# Last updated 2021-12-30

## Contents

1. Console basics
   1. Console usage
   2. Console input
   3. Commands and variables
   4. Configuration files
   5. Autoexec.cfg
   6. Script files
2. Console commands and variables
   1. Basic commands
   2. Game commands
   3. Console setup
   4. Player setup
   5. Player controls
   6. Game options
   7. Bot options
   8. Effect options
   9. Lighting options
   10. Net options
   11. Server options
   12. Connect options
   13. Menu options
   14. Video options
   15. Sound options
   16. Misc options

Make sure you read this, you will discover a lot of goodies available in Legacy! Be a Doom power user!
Skip to section 2 and browse through the list of commands if you're in a hurry!

## Console basics

### Console usage

With the DoomLegacy console, you will be able to change most of the game parameters from within the game, and customize it to your preferences. The console is simply a command prompt, where you can enter commands and change the values of game variables. The first game console we know of was from id Software's game Quake. We have been inspired by it and have tried to implement the same functionality for the benefit of Quake/Doom fans.

To open the console, press the console key. The default console key is the accent key located just below ESC. You can change your console key using the Setup Controls menu, or edit it in the config.cfg file. To exit the console, either press the console key again, or press ESC which will close the console, and bring up the menu.

The console displays all messages from the game. You can go back in the messages with key PAGE UP, and go down with the key PAGE DOWN. Press the key HOME to jump to the oldest message in the console text buffer, and key END to jump to the last output message (the most recent).

When the console is off, the last lines of the console text buffer are displayed at the top of the screen. There you can see 5 lines of messages (the original Doom only showed 1 line). You can change the message display duration with the console variable con_hudtime. See the commands section for more information.

### Console input

While the console is on, you can type in commands. BACKSPACE erases the last input character, and ENTER executes the command. For convenience, you have a history of the last 32 commands entered. Press UP ARROW to go back in the commands history, DOWN ARROW to go forward.

Another useful key is TAB: it completes a partially entered command or variable name. This is also a good way to sequence through the existing commands, without having to remember their exact spelling. Enter the first letter, then press TAB to complete the command. Each press of TAB displays another alternative command.

Use SHIFT-TAB to step through the alternatives in reverse order. It also completes the command line, when used after typing.

The variables to customize the console itself usually start with "con_". To see them all type "con" and press the TAB key. The first con_ variable will be displayed, con_height. Each press of the TAB key will display the next variable, con_speed, con_hudtime, con_backpic...

### Commands and variables

The console accepts commands, and the setting and display of variables. A command executes an operation. It may have parameters. A variable always has an associated value. For example the variable name holds your name as a player.

Entering a command without any parameters will usually display the command syntax.

> map Usage: map <number|name> [<entrypoint>]: warp players to a map.

Entering a variable name without a value will display the current value of the variable.

> name "name" is "flynn"

To set the value of a variable, enter the variable name followed by the new value. For example, to change your name to "dj fab", type

> name "dj fab" flynn renamed to dj fab

There are several types of variable and command parameters. The legal values differ according to the variable type.

String:
String values can be simple, such as Fred, or quoted, such as "Mr. Fred", String values that contain spaces, or certain other special characters, must be quoted using double quotes, as we saw in the previous example.

Example:

> name "Punkin Smasher"

Inside a quoted string you can use the following C-style backslash escape sequences:

Escape sequence | Resulting character
--- | ---
\\ | literal backslash
\" | double quote (does not end the string!)
\t | tab
\n | newline

Example:

> echo "this string contains \"escaped\" special chars such as \\,\n\ttab and newline" this string contains "escaped" special chars such as \, tab and newline

Boolean:
Boolean variables (true/false, yes/no) use 0 to denote false. Any nonzero value means true.

Example:

> allowjump 0

Integer:
Integer variables are simple integer values, such as 2, and 13.

Example:

> con_height 48

Enum:
Enum variables are integer variables with a limited set of values. They can be set by the name of the enum value, or by the integer value.

Example:

> showmessages verbose

Float:
The float values are decimal values with a decimal point, such as 13.2, and 0.5. Float values are stored as 16.16 fixed point numbers.

Example:

> gravity 1.25

### Configuration files

Many variables are automatically saved to the default configuration file config.cfg, in the home directory. Like in the original Doom, the -config command-line parameter will specify the configuration file. Thus, you can have default settings for different persons, using different configuration files. While the configuration files support any commands, and are executed like a script, you should not edit them, because they are always overwritten with the current settings when the game exits.

Some variables, like gravity, are not saved. They are restored to initial settings every time DoomLegacy is started. These might be changed for a specific game, but would not want to be saved, as that would affect all games that follow. See Autoexec.cfg and exec files for setting up DoomLegacy for a specific game.

Each video drawmode has a drawmode config file that is loaded after the main config.cfg file is loaded. It can save the values of control variables that depend upon the drawmode. When the video drawmode is set, the appropriate drawmode config file is loaded.

When a value is loaded from the drawmode config file, it will push down and hide the value loaded from the main config file. All other control variables will still have the value from the main config file, or a default value. When menu options are changed, those changes will be saved to the config file that last loaded that control variable.

Each drawmode can have separate settings for video mode, fullscreen, gamma, and can save any other control variable that is saved in config. Thus, the OpenGL drawmode can have a different Gamma setting, than the Software drawmodes. All the other control variables will continue to have the value loaded from the main config file.

By default, the drawmode config are empty. The files will not be written unless they contain some control variable to be saved. The user must set this up by the INSERT of a control variable while using the drawmode.

The menu interface can edit which control variables are saved in each config file. Entries can be inserted and deleted.

F1 | normal menu view
F2 | Main config values only
F3 | Drawmode config values only
F4 | normal menu
INSERT | add the menu item to the config file
DEL | delete the menu item from the config file

Example: Add Gamma settings to the native drawmode. Note that Gamma settings are unusual in that there is a Gamma function, and separate Gamma, Black, and Bright.

- Change to the Native drawmode.
- Go to the Video Options menu.
- Move to the gamma function option.
- Press F3, to edit the drawmode config file.
- Press INSERT to add gamma function to the drawmode config file.
- Change the gamma function as desired.
- Move to the gamma value.
- Press INSERT to add the gamma value to the drawmode config file.
- Repeat for any other values that are used by the gamma function.
- Press F1, to return to the normal options menu.

Changes to the gamma value, while in Native drawmode, will now only change the Native drawmode config value. The main config file value is pushed down and hidden when a value from a drawmode config file is present. When the program is exited and the config is saved, the gamma value will be saved back to the Native drawmode config file. The gamma value in the main config file will not be affected.

Other drawmodes, that do not have a gamma setting of their own, will use the main config file gamma settings.

Menu entries that are not relevant to the drawmode config, like the control key assignments, do not have support for insert to the drawmode config file.

The command line can be used to load a personal main config file, which may contain personal key assignments. This does not affect the loading of drawmode config files. If there are gamma settings in a drawmode config file, they will overload any settings from whatever main config file that is loaded. To get better personal control, the user will have to specify a different home directory.

The config files can always be edited using an ordinary editor to include anything. It may be easier to initially create drawmode config files with a text editor, and copy a few lines from your existing config file. Mistakes and comments will be ignored and lost. When the program is exited, the file will be overwritten with the most recent saved values.

Software 8 bit | config8p.cfg
Software 15 bit | config15.cfg
Software 16 bit | config16.cfg
Software 24 bit | config24.cfg
Software 32 bit | config32.cfg
Native | confign.cfg
OpenGL | configgl.cfg
MiniGL | configmg.cfg
Glide | configwg.cfg
D3D | configwd.cfg

### Autoexec.cfg

The autoexec.cfg file is a text 'script' file which, if found, is automatically executed at the game startup. You can edit autoexec.cfg to set the values of those variables that are not automatically saved to config.cfg. You can also add commands that will be executed one after another, just like a script.

Comments start with //. Each line of the autoexec.cfg file is like a line that you would have typed at the console. Here are some examples:

This sample 'autoexec.cfg' will warp you to map01 as soon as the game is loaded:

// always start with map01, without waiting at the menu
map map01
echo "welcome to map 01" //useless comment

Another example, here we set the variables that are not saved to the config.cfg, because they are not considered standard parameters:

// set my preferred weird game mode
bloodtime 5 // blood lasts 5 seconds
fastmonsters 1
teamdamage 1
echo "bigjim's weird mode active"

In the last example, each time you start the game, it will set the variables like bloodtime that are not normally saved to config.cfg. Just look at config.cfg to find out which variables are saved.

Doom Legacy first looks for a user autoexec.cfg file in the home directory, where the config and savegame files are kept. This is intended for the user to own and edit.

If the user autoexec file is not present, it will look for the autoexec.cfg file with the executable. This is intended for the installer of the executable to own and edit. This could be system games, or some other protected directory.

The user autoexec.cfg file can chain to another file, like the system autoexec.cfg file.

// Get system settings first
exec autoexec.cfg

### Script files

config.cfg and autoexec.cfg are script files. It means they contain commands and variables that are executed in sequence. You can create any number of script files, and execute them from the console using the exec command.

For example, to start a script named blood.cfg just enter

> exec blood.cfg

## Console commands and variables

This chapter describes all the console commands and variables in Doom Legacy. Many console variables can also be modified through the menu. You will need to use the console only if you want to customise the game more to your needs.

### Basic commands

Here are the basic commands for script execution. They have the same usage and functionality as in Quake. You can use a semicolon to separate several commands in the same line.

command | definition
--- | ---
alias <aliasname> <command> | Define an alias. When you type <aliasname>, it will be like if you had entered <command>. Let's have an example: > alias silence "soundvolume 0; musicvolume 0" When you will type "silence", it will execute the corresponding command. In this example, we have given two commands as one, inside " ", and using the semicolon as a separator for commands.
echo <text> | Just echoes (prints) the text to console.
exec <filename> | Execute a script file. A script file is just a text file containing a sequence of commands or variables. Script files usually have the .cfg extension. Example: > exec autoexec.cfg will execute all the commands in autoexec.cfg
help [<category>|<variable>] | Shows a list of all the console commands and variables. Alone, it will respond with help categories. Help of a category (INFO, CHEAT, COMMAND, SAVEGAME, CONFIG, CONTROL, FS, CHAT, NET, CONSOLE), will list associated commands. Help of a category (VAR, NETVAR, CFGVAR) will list variables of that category. If given a variable name, shows detailed info on that variable.
toggle <variable> [<value>] | Without the <value> parameter this toggles a variable, i.e. changes it to the next possible value. With the <value> parameter it adds <value> to the variable. This command is very useful for use with bind. Example: bind ">" "toggle gr_fogdensity" bind "<" "toggle gr_fogdensity -1" so you can modify fogdensity without going into the console or menu!
wait [<ticks>] | Wait a given amount of time before the next command is executed. The unit is 1/35 seconds. Example: this will wait 5 seconds, then display "ok!". wait 175; echo "ok!"
bind <keyname> <command> | Bind commands to a key. Each time you press the key, the commands will be executed. Example: > bind s screenshot Now each time you press the s key the game will save a screenshot.
cls | Clear the console text buffer.

### Game commands

Here we describe the commands that can be used during the game.

command | definition
--- | ---
addfile <wadfile.wad> | Add a WAD file to the list of resource files used. Like the -file commandline option, but works in runtime.
map <mapname[.wad]> [-skill <1-5>] [-monsters <0|1>] [-noresetplayers] | Warps all the players to a new map.
restartlevel | Restart the current map.
exitlevel | Exit current map and go to the intermission screen. If there are game-start waiting players, they will join the game during the intermission.
pause | Pauses/unpauses the game (or requests a pause from the server).
save <slot_number> <description> | Save the game in the given slot, with chosen description.
load <slot_number> | Loads a previously saved game.
exitgame | Closes the current game, goes back to the intro loop.
quit | Quits the game without further confirmation.
saveconfig <filename> | Save the current config in the specified file. This is always done when you exit Legacy.
loadconfig <filename> | Load a config file like at the begining of legacy. For the pro: this is a simple exec command with ".cfg" default.
changeconfig <filename> | Do a 'savegame currentconfigfilename', then a 'loadconfig filename'.
screenshot | Take a screenshot (like the key F1 in devparm mode). This is also a command key, which can be assigned a key.
kill me | <playername | playernum> | Kills players. Everyone can suicide, only the server can kill others.
playdemo <demoname[.lmp]> | Start demo playback. The demos are either lumps in a WAD or external files. If the demo name ends with .lmp, read it from an external file of that name.
stopdemo | Stop the currently playing demo.
timedemo <demoname[.lmp]> | Time a demo.
turbo <boost> | Set the player movement speed to boost/100 times the original value. Boost needs to lie between 10 and 255.
noclip | Enables/disables clipping for the console player. Like the cheat code idclip. When noclip is on, the player can walk through walls and instantly move to the top of any platform, but cannot pick up items. This is useful for exploring, but is considered a cheat when used during game play.
god | God mode. Just like the cheat iddqd.
gimme health | ammo | weapons | armor | keys | map | fullmap | chainsaw | shotgun | supershotgun | chaingun | rocket | plasma | bfg | berserk | Gives the attributes or items to the player. Can have one or more cheat names on one gimme command, such as "gimme health armor keys".

Network/multiplayer commands

command | definition
--- | ---
connect <server_ip | server_address> | any | self | Connects to a server to play a netgame. "connect any" starts searching for servers and connects to the first one it finds.
disconnect | Disconnects from the server.
kick <playername | playernum> | One of the rare pleasures of being the server: Kick somebody out of your game!
addbot | Adds a bot (AI player) to the game. You can remove bots from the game using kick. Bots can be added during a netgame. Sometimes there are problems with clients. The exact conditions that trigger the problems are unknown, and it may require restarting to clear. If bots are added during an intermission, the clients can consistency fault. This is a known problem.
say <message> | Sends a message to all players.
sayto <playername|playernum> <message> | Sends a message to a specified player.
sayteam <message> | Sends a message to your own team.
chatmacro <0-9> <message> | This very useful command allows to change the chat messages at any time during the game. They are saved in the configfile too! You can now quickly setup some circumstance messages at the start of a game. Press the chat key, then ALT plus a number key from 0 to 9 to send one of the chat messages. Well, just like it has always been in Doom.

Informative and debugging commands.

command | definition
--- | ---
version | Shows the game version and build date.
gameinfo | Prints information about the current game.
mapinfo | Prints information about the current map.
playerinfo | Prints information about the players.
meminfo | Show the amount of heap, virtual and physical memory available. The heap is the memory allocated for the game, and you can change it using the -mb command line parameter.
frags | Shows the frags table, like in the original Doom intermission. It shows the frags count for each player, against each other player.
teamfrags | Shows the frags table for teams.
fs_dumpscript <scriptnum> | Prints the given FS script on the console.
fs_runscript <scriptnum> | Runs the given FS script.
fs_running | Lists all the currently running FS scripts.

### Console setup

These variables control the look and feel of the console.

variable | type | definition
--- | --- | ---
showmessages | enum | Limits the messages that are shown on the HUD during gameplay.
Off | 0 | Never show any messages on the screen.
Minimal | 1 | Important play messages are shown, like you got the BFG. Common messages, like those about ammo, are not shown.
Play | 2 | The standard Play messages are shown, but verbose and diagnostic messages are not (default).
Verbose | 3 | Verbose messages too.
Debug | 4 | Debug and Verbose messages too.
Dev | 5 | Development. All messages are shown.
There is also a control for this in the Options menu.
con_backpic | bool | 0: use a translucent LCD-like console background. 1: use an opaque console background picture, like in Quake.
con_height | int | How many percent of the total screen height the console will use. E.g. con_height 50 (the default) will use half the screen height for the console.
con_speed | int | The speed (in pixels/tic) at which the console comes down or moves out of the screen when you press the console toggle key.
con_hudtime | int | The number of seconds messages stay on the top of the screen. They are 5 message lines that scroll as soon as new messages arrive. E.g. con_hudtime 5, which is the default, will make the messages stay for 5 seconds before disappearing. Set this to 0, and you will never see any messages outside the console (HUD means heads-up display).
darkback | enum | The console background is darkened to make the text easier to read. This controls how dark it gets.
Half | 0 | Half darkness (40%).
Med | 1 | Middle darkness (25%).
Dark | 2 | Darkest (17%).
There is also a control for this in the Video menu.
con_fontsize | enum | The console fontsize.
Small | 0 | Smallest font.
Med2 | 1
Med3 | 2
Med4 | 3
Large | 4 | Largest font.
There is also a control for this in the Video menu.
msg_fontsize | enum | The HUD message fontsize.
Small | 0 | Smallest font.
Med2 | 1
Med3 | 2
Med4 | 3
Large | 4 | Largest font.
There is also a control for this in the Video menu.

### Player setup

These variables control your player avatar's appearance and your game preferences. The splitscreenplayer has similar variables, but with the number 2 appended to the variable name, e.g. "color2 red" turns the splitscreenplayer's avatar red.

variable | type | definition
--- | --- | ---
splitscreen | bool | Enable/disable the splitscreen. If necessary, this spawns a secondary local player, called the splitscreenplayer.
name | string | The name of Player 1. Enter your name as a player, for network games. Your name will be seen when you send a message (chat key), and is displayed in the deathmatch rankings. Use "" if the name contains spaces, e.g. name "dj fabbe"
name2 | string | The name of Player 2.
color <0 - 10> | int | The color of Player 1. Choose your avatar's color. 0: Green 1: Gray 2: Brown 3: Red 4: Light Gray 5: Light Brown 6: Light Red 7: Light Blue 8: Blue 9: Yellow 10: Beige
color2 <0 - 10> | int | The color of Player 2.
skin | string | The skin selection for Player 1. Change your skin, provided some skins are loaded (use the commandline option -file to add skins wads. The default marine skin name is "marine".
skin2 | string | The skin selection for Player 2.
autoaim | bool | Enable autoaim for Player 1. The original Doom used autoaiming in the vertical direction, and a small aim adjustment in the horizontal. Now that you can freely aim up and down with the freelook, you can play like a pro and set autoaim off. NETWORK NOTE: in a multiplayer game, the server can force the autoaim off for all players with the command allowautoaim.
autoaim2 | bool | Enable autoaim for Player 2.
originalweaponswitch | bool | Choose whether to use the original weapon change method (1), or the new preferred weapons order (0), see weaponpref for more. With the original weapon switch, whenever you pick up a new weapon it becomes the active one, even if it is not as powerful as the one you are currently using. That can be sometimes very annoying, especially in fast deathmatches.
weaponpref | string | The preferred weapons order for Player 1. This works only if you have set originalweaponswitch to 0. You give a priority to each of the weapons, with a number digit from 0 to 9. Several weapons can have the same priority. When you pick up a weapon that you don't already have, you will switch to that weapon IF AND ONLY IF that weapon's priority is greater that the one you are carrying. If you already had the weapon, you will pickup the ammo as usual, without changing weapon. The command is given a string of priority values, one for each weapon, in the following order: Fist, Chainsaw, Pistol, Shotgun, Super Shotgun, Chaingun, Rocket Launcher, Plasma Rifle, BFG. Thus 'weaponpref "021485763"' means that the super shotgun has the highest priority (8), while the fist is lowest priority (0). After the super shotgun, in decreasing priority you have the rocket launcher (7), plasma gun (6), chaingun (5), shotgun (4), BFG (3), chainsaw (2) and pistol (1). Let's have another interesting example: 'weaponpref "333333333"' Since all weapons have the same priority in this last example, you will NEVER change weapon automatically, because no weapon has a priority higher than any other one. You might consider this the manual weapon change.
weaponpref2 | string | The preferred weapons order for Player 2.
crosshair | enum | The type of aiming point (crosshair) that appears on the screen for Player 1.
Off | 0 | No crosshair.
Cross | 1 | Large white + with an open center, the largest crosshair.
Angle | 2 | Small vertical and horizontal green lines. The aiming point is where the two lines meet.
Point | 3 | Red aiming dot, like a laser pointer.
There is a control in the Options menu.
crosshair2 | enum | The type of aiming point (crosshair) that appears on the screen for Player 2.

### Player controls

These variables control the way the game handles the players' input. The splitscreenplayer has similar variables, but with the number 2 appended to the variable name. The second mouse used by player 2 has variables that start with "mouse2".

Player 1 controls.

variable | type | definition
--- | --- | ---
autorun | bool | The autorun setting for Player 1. With this set, Player 0 will always be running, EXCEPT when pushing the run key.
use_mouse | bool | Enable using the mouse for Player 1. Setting use_mouse to 0 will disable the mouse. The next time you start the game, the mouse won't be detected. Set use_mouse to 1 to search for a mouse, and activate it. There is also a control for this in the Mouse menu.
alwaysmlook | bool | Setting alwaysmlook to 1 will enable freelook for Player 1. When alwaysmlook is 0, you will need to hold the freelook key down while moving the mouse up and down. When releasing the key, the view will always re-center. This is useful if you keep firing rockets at your feet.
invertmouse | bool | Set invertmouse to 1 to invert the mouse y (up and down) axis for Player 1. This is for freelook only, you will look up, when moving the mouse down (backward), and look down when moving mouse forward. There is also a control for this in the Mouse menu.
mousemove | bool | Enable/disable mouse y-axis for forward/backward movement of Player 1. There is also a control for this in the Mouse menu.
mousesensx mousesensy | int | Sets the mouse sensitivity in the x and y directions for Player 1. There is also a control for this in the Mouse menu.

Player 2 controls.

variable | type | definition
--- | --- | ---
autorun2 | bool | The autorun setting for Player 2 (splitplayer). With this set, Player 1 will always be running, EXCEPT when pushing the run key.
use_mouse2 | bool | Enable using the second mouse for Player 2. Setting use_mouse2 to 0 will disable the mouse. The next time you start the game, the mouse won't be detected. Set use_mouse2 to 1 to search for a second mouse, and activate it. There is also a control for this in the Mouse menu.
mousemove2 | bool | Enable/disable mouse y-axis for forward/backward movement of Player 2. There is also a control for this in the Mouse menu.
alwaysmlook2 | bool | Will enable freelook for Player 2.
invertmouse2 | bool | Set invertmouse to 1 to invert the mouse y (up and down) axis for Player 2. This is for freelook only, you will look up, when moving the mouse down (backward), and look down when moving mouse forward. There is also a control for this in the Mouse menu.

Mouse 2 controls. These setup the mouse2 serial port. See serial mouse documentation for your operating system, and the FAQ.

variable | type | definition
--- | --- | ---
mouse2port | enum | Select the mouse serial port for mouse2. This varies by operating system. See serial mouse documentation for your operating system, and the FAQ. Linux: gpmdata, mouse2, ttyS0, ttyS1, .. ttyS6. These are all "/dev" devices. If a "/dev/mouse2" indirection to the actual device has been created, then select mouse2 to use it. Windows: COM1, COM2, .. COM8. Some Windows can have USB devices connect to COM ports, such as COM7.
mouse2type | enum | Select the type of serial mouse for mouse2. PC: PC mouse, Microsoft protocol, 7-bit. MS: MouseSystems mouse, 8-bit. PS/2: PS/2 basic mouse.
mouse2opt | string | Change the CTS and RTS settings on the mouse serial port. Some mice are enabled, or change modes, by sensing these lines. CTS on is "C1", off is "C-". RTS on is "R1", off is "R-".
mouse2sensx mouse2sensy | int | Sets the mouse sensitivity in the x and y directions for Player 2. There is also a control for this in the Mouse menu.

These input variables are common to both local players.

variable | type | definition
--- | --- | ---
controlperkey <1|2> | int | When set to 2 (several) you can bind more than one control to a key. Otherwise binding a control to a key will remove the key's other assignations.
mousemotion | enum | SDL port only. Does not affect mouse2.
Absolute | 0 | Uses the original mouse interface with local difference calculations. It should work for any SDL port.
Relative | 1 | Uses the newer relative motion interface, which may not work on some SDL library ports. It is reported to work with Linux and Windows.
There is also a control for this in the Mouse menu.
mousedouble | int | Sets the mouse double click detection. A normal double click is about 6. There is also a control for this in the Mouse menu.
grabinput | bool | Sets the SDL grabinput attribute. This keeps the mouse in the window. It also disables most of any window manager's keyboard and mouse functions, so DoomLegacy gets all combination events. Pause releases grabinput to let the mouse be used outside of DoomLegacy. There is also a control for this in the Mouse menu.

Keyboard, mouse button, and joystick button inputs can be defined as game controls using the following commands. There also is a menu system for setting these controls.

command | definition
--- | ---
setcontrol <control> <key1> [<key2>] | Binds a key/joystick button/mouse button to a game control (forward, fire, use etc.). The second keyname is optional. You can set it, and have two keys attached to one game control, e.g. have both UP ARROW and MOUSE2 mean forward. If a key does not have a useful name, it uses a name of the form 'KEYxxx' where xxx is the key code. To learn the names of the keys, look for them at the Setup Controls menu. The controls are forward, backward, strafe, straferight, strafeleft, speed, turnleft, turnright, fire, use, lookup, lookdown, centerview, mouseaiming, weapon1, weapon2, ..., weapon8, talkkey, scores, jump, console. Example: > setcontrol forward "keypad 8" "up arrow"
setcontrol2 <control> <key1> [<key2>] | Same as setcontrol but for splitscreenplayer.
bindjoyaxis [<joynum> <axisnum> [<playernum> <control> <scale>]] | Lists, releases or creates joystick axis bindings.

### Game options

Using these variables you can change may aspects of the game itself. For obvious reasons, in a network game only the server can change them.

variable | type | definition
--- | --- | ---
deathmatch | enum | Select the multiplayer game type, coop or deathmatch
Coop_weapons | 0 | Coop. Placed weapons respawn immediately. |
DM_weapons | 1 | Deathmatch. Placed weapons respawn immediately |
DM_item | 2 | Deathmatch. Items respawn |
DM_both | 3 | Deathmatch. Items respawn, placed weapons respawn immediately |
DM | 4 | Deathmatch. Option menu controls the item and weapon respawning |
Coop | 16 | Coop. Option menu controls the item and weapon respawning |
Coop_80 | 32 | Coop, 80%. Monsters added for Coop that are too strong are changed to lesser monsters according to map level, skill level, and 80% level. Option menu controls the item and weapon respawning. |
Coop_60 | 48 | Coop, 60%. Monsters added for Coop that are too strong are changed to lesser monsters according to map level, skill level, and 60% level. Option menu controls the item and weapon respawning. |
Coop_SP_Map | 128 | Coop, on the Single Player Map. Limited weapons. Option menu controls the item and weapon respawning. |
gravity | float | Sets the acceleration of gravity in the game. The default gravity is 1.
solidcorpse | bool | Setting solidcorpse to 1 makes the dead corpses (monsters/marines) solid. The corpses thus stack one on top of another, and you walk over them. Sometimes you can even reach ledges where you couldn't get before by climbing on corpses!
respawnitem | bool | Choose whether items respawn. This is set automatically by some of the deathmatch modes, while others use this value. NOTE: it is considered cheating to allow respawning of items when in single player mode ! :)
respawnitemtime | int | Set the respawn item time in seconds. The time between the moment you pick up the item, and the moment it reappears. The default is 30 seconds, from the original Doom.
respawnmonsters | bool | Choose if monsters can respawn. The -respawn command-line option will temporarily set this to 1.
respawnmonsterstime | int | Choose the time of respawn for the monsters, in seconds. The default is 12, from the original Doom.
nomonsters | bool | Set to 1 to prevent monsters from spoiling your gaming experience. Often used in deathmatch.
fastmonsters | bool | Choose if monster are "fast" like with the original -fastparm
monsterbehavior | enum | Select the mode of monster infighting.
Normal | 0 | Monsters retaliate by default, as in vanilla Doom.
Coop | 1 | Monsters cooperate by default. This is the same setting as the -coopmonsters command line switch.
No Infight | 8 | Monsters take damage, but do not retaliate. Missiles of their own species do no damage.
Infight | 2 | Monsters retaliate by default. Missiles from their own species do no damage (as in Boom, MBF, Eternity). This is the same setting as the -infight command line switch.
Full Infight | 6 | Monsters retaliate, and can be damaged by their own specie's missiles (DoomLegacy, PrBoom).
Force Coop | 3 | Monsters cooperate. Overrides DEH infight setting.
Force No Infight | 5 | Monsters take damage, but do not retaliate. Missiles of their own species do no damage. Overrides DEH infight setting.
Force Infight | 4 | Monsters retailiate, and damage each other. Missiles from their own species do no damage (as in Boom, MBF, Eternity). Overrides DEH infight setting.
Force Full Infight | 7 | Monsters retailiate, and damage each other. They can be damaged by their own specie's missiles (DoomLegacy, PrBoom). Overrides DEH infight setting.
Default is Normal. DEH settings in the wad can override the default monsterbehavior setting, but the "Force" settings override any DEH infight settings.
monsterfriction | enum | Select the mode of monster friction.
None | 0 | Monsters ignore friction, as in vanilla Doom and Heretic.
MBF | 1 | Monster friction from MBF, where ice gave momentum to monsters. Has momentum effects on transition between ice and other sectors.
Momentum | 2 | Monsters have momentum all the time. Their friction is tuned to match the player friction.
Heretic | 3 | The monster friction only has some special ice effects.
Normal | 4 | Enable monster friction based on the friction model.
Default is Momentum.
monstergravity | enum | Select how monsters fall according to gravity.
Off | 0 | Monsters ignore gravity and instantly fall to the floor, as in vanilla Doom and Heretic.
MBF | 1 | Monsters fall according to gravity, as in MBF. When a fall is greater than 24 units then the fall ignores gravity.
On | 3 | Monsters fall according to gravity.
Default is On.
dropoff | bool | Enable the MBF dropoff behavior, which blocks or allows a monster at a dropoff based on situation and height. It also handles dogs and monkeys. An MBF behavior. Default is On.
falloff | bool | Enable the MBF falloff behavior for objects hanging on a dropoff. This torques them until they fall off, or until it gives up and lets them stay. An MBF behavior. Default is On.
monkeys | bool | Enable the monsters to climb steps more easily, and jump down from high dropoffs. An MBF behavior. Default is Off.
mon_avoidhazard | bool | Enable the monsters to avoid crushing ceilings. An MBF behavior. Default is On.
mon_backing | bool | Enable monsters to back away from an enemy when it is favorable, such as having missiles and the enemy does not, or when the enemy has the chainsaw. An MBF behavior. Default is Off.
mon_remember | bool | Enable monsters to remember their last target, when they cannot find a new target. A Boom behavior. Default is Off.
pursuit | bool | Enable monster pursuit of a targeted enemy they can still see. An MBF behavior. Default is Off.
staylift | bool | Enable monsters to stay on a lift if their targeted enemy is on it. An MBF behavior. Default is On.
helpfriend | bool | Enable monsters to help friends that are in danger of dying. This applies to dogs and other friends of the player. An MBF behavior. Default is On.
distfriend | int | The distance that a friendly monster should be from the player. This is what makes a friendly monster follow the player, and what makes them back away when too close or in the way. This applies to dogs and other friends of the player. An MBF behavior. Valid range is 0 to 999. Default is 128.
dogs_cnt | int | Spawns a number of friendy dogs with the player at level start. This applies during single player and coop play. An MBF behavior. Valid range is 0 to 9. Default is 0.
dogjump | int | Enables friendy dogs, and BEX designated helper friends, to jump down a dropoff, up to 128 units, to follow their player. An MBF behavior. Default is On.
voodoo_mode | enum | Sets the voodoo doll behavior. A voodoo doll is an accident of the original doom code that occurs when a wad has extra player starts. The voodoo dolls that are spawned at the extra starts look like players, but do not move on their own. When they get shot or damaged, a player gets damaged too. Many wads use voodoo dolls for automated actions because they can trip linedefs.
Vanilla | 0 | No enhancements. Allows zombies and walking dead players.
Multispawn | 1 | The target of damage is determined by the wad spawn type. A player2 voodoo doll will damage player2. Because most wads only have player1 voodoo dolls, often player1 gets the damage instead.
Target | 2 | DoomLegacy will attempt to determine the player that triggered the voodoo doll, and will put the damage on them. There are still many ways the wrong player can get hurt (which is wad related), some as simple as one player tripping the death-trap, right before another pushes the switch to turn it off (if timed right, the player at the switch dies instead).
Auto | 3 | If the wad has multiple player voodoo spawning, then it switches to Multispawn, otherwise it will be Target.
Default is Auto.
instadeath | enum | Used to mitigate the effects of voodoo doll teleport frag. For coop and deathmatch play, a setting other than Die is suggested. The telefrag kills the player instantly, thus the name "instadeath". Used in unusual wad traps to kill the player, like when they touch something dangerous. Vanilla voodoo doll behavior has the voodoo doll instadeath always killing the same player, and it does not matter who walked into the death-trap. In most wads the victim is always player1.
Die | 0 | Telefrag death of player.
Damage | 1 | Player takes 20 damage, stunned, and gets thrown back.
Zap | 2 | Player takes 5 damage, stunned longer, and gets thrown back.
Default is Die.
invul_skymap | enum | How the sky appears when the player is invulnerable. This was a bug in the vanilla Doom.
Vanilla | 0 | The sky does not change when the player is invulnerable.
Boom | 1 | The sky changes just like everything else.
Default is Boom.
skygen | enum | Select how to make a Doom vanilla sky fit the larger Doom Legacy sky. Whenever a starry sky is detected, a star fill will be selected automatically.
auto | Will look for a replacement sky first, then will make best choice, which is usually extend_bg. |
subst | Will use a replacement sky. (not fully implemented yet) |
bg_stars | Extend the sky, replace all of background with stars. |
extend_stars | Extend the sky, replace missing background with stars. |
extend_bg | Extend the sky, fill with background color. |
extend_fill | Extend the sky, fill with random samples. |
stretch | Stretch the sky to fit. |
Default is auto.
zerotag | enum | Control if sectors with a tag value of 0 will react to a linedef with a tag of 0. By default, new sectors have a tag value of 0. In vanilla Doom, a tag of 0 on some linedefs would affect every sector with the default value, causing havoc.
Allow | 0 | Allow tag values of 0, just like vanilla Doom. |
Boom | 1 | Ignore most linedefs that have a tag value of 0. It is valid special case for only a few linedefs. |
Default is Boom.
blockmap | enum | Control automatic blockmap generation. A simple blockmap generator is included in Doom Legacy to cope with wads with broken, large, or missing blockmaps.
Vanilla | 0 | Use the wad blockmap. as in vanilla Doom. |
Large | 1 | Upon detecting a large blockmap, that overflows the offset, generate a new blockmap instead. |
Generate | 2 | Always generate a new blockmap. |
Auto | 3 | Try to Load the blockmap, and upon significant errors then Generate a blockmap. |
Default is Auto.
weaponrecoil | bool | Boom weapon recoil effect. Each weapon has a recoil, with the missile launcher and BFG having the most recoil. This will push the player back when they fire, which may be significant if they are on ice. Default is Off.
playdemospeed | int | Number of frames to skip for each frame rendered when playing back demos. Default is 0.

Map adjustments for monster health, and pickups.

normal | 0 | normal spawn. |
-40 | 1 | -40%. |
-20 | 2 | -20%. |
+20 | 3 | +20%. |
+40 | 4 | +40%. |
+80 | 5 | +80%. |
+100 | 6 | +100%. |
+140 | 7 | +140%. |
+180 | 8 | +180%. |
+220 | 9 | +220%. |
rand+10 | 10 | random +0 to +10%. |
rand+20 | 11 | random +0 to +20%. |
rand10 | 12 | random -10% to +10%. |
rand20 | 13 | random -20% to +20%. |

variable | type | definition
--- | --- | ---
monsterhealth | enum | Adjust monster health at spawn. See map adjustments table.
healthpickup | enum | Adjust health gained from health and stimpack. See map adjustments table.
armorpickup | enum | Adjust armor pickup quality. See map adjustments table.
ammo pickup | enum | Adjust ammo pickup amount. See map adjustments table.

### Bot Options

These variables control the bots. Bots are a work-in-progress, so some of these behaviors will likely change in the future.

These all appear in the Bot options menu.

variable | type | definition
--- | --- | ---
botskill | enum | The skill level of the bots. Some of the bot skill selections affect all bots, but the rand bot skills gives each individual bot an independent skill setting. The game selections make the bot skill dependent upon the game skill setting.
crippled | 0 | All bots. |
baby | 1 | All bots. |
easy | 2 | All bots. |
medium | 3 | All bots. |
hard | 4 | All bots. |
nightmare | 5 | All bots. |
randmed | 6 | Random, 0 to gameskill-1 |
randgame | 7 | Random, 1 to gameskill. |
gamemed | 8 | All bots use gameskill-1 setting. |
gameskill | 9 | All bots use gameskill setting. |
botspeed | enum | The speed at which bots move. It also controls how long they can run before they tire.
walk | 0 | Walks most of the time. |
trainer | 1 | 4 second run. |
slow | 2 | 6 second run. |
medium | 3 | 12 second run. |
fast | 4 | 24 second run. |
run | 5 | Always run, does not tire. |
gamemed | 8 | dependent upon gameskill-1, speed=0..4 |
gameskill | 9 | dependent upon gameskill, speed=1..5 |
botskill | 10 | dependent upon bot skill, speed=0..5 |
botgen | enum | How the bots are generated. It also selects the random number generator that is used for bot name, skin, and color.
Plain | 0 | Repeatable using Bot random. Reset at Game Start. Same bots each Multiplayer game start. |
Seed | 1 | Bot Random Seed. Reset to seed each Game start. Same bots each Multiplayer game start. |
Seed Random | 2 | Bot Random Seed. Reset to seed at Program Start. Different bots each Multiplayer game start. |
Cfg Random | 3 | Persistant Config Random number. Does not repeat. Different bots each Multiplayer game start. |
Sys Random | 4 | System Random number. System Random is usually init at Program Start. Different bots each Multiplayer game start. |
botrandseed | int | A user set random number seed, that is saved in config. Used to initialize the Bot Random number generator. This seed is also used by some bot generation settings to determine the bot names, skins, and colors. A particular seed value will generate the same bot names, skins, and colors each game. This appears in the Bot options menu, but it is easier to change using console, than by pressing up or down several thousand times.
botrandom | int | A persistant random number that is saved in the config file. The value changes automatically. It is used by some of the Bot generation settings. This does not appear in any menu.

### Net options

variable | type | definition
--- | --- | ---
allowjump | bool | Choose whether jump is allowed or not. Those of you who come from the planet NoJump or have a limited sensory system and couldn't survive a jump in the 3rd axis of our world can disable the jump in single player too. NOTE: Jumping is considered cheating in maps not designed with it in mind, especially in speedrunning.
allowrocketjump | bool | Enable emulation of the Quake1 bug known as "Rocket Jump".
allowautoaim | bool | Off will disable autoaiming for all players. Make sure everyone is ok before getting your friends angry.
allowfreelook | bool | Off will disable looking up and down for all players in the game.
allowturbo | bool | Off will disable clients use of the -turbo switch. Default is not-allowed.
allowexitlevel | bool | Off will disable all the exit level doors, switches, and linedefs.
fraglimit | int | When the limit is reached, the level exited and game goes to intermission. Use 0 to disable.
timelimit | int | After the given number of minutes, the level is exited and game goes to intermission. Use 0 to disable.
teamplay | enum | You can change the deathmatch mode while in a multiplayer game.
Off | 0 | No teams, usual free-for-all deathmatch. |
Color | 1 | Teamplay by color. Use color to identify teams (players of the same color will be in the same team). The team names will be like "red team" or "yellow team". |
Skin | 2 | Teamskin. Use skins to identify teams (players who use the same skin will be in the same team). The team names will show as "leprechaun team" or "terminator team", according to the name of the skin. |
teamdamage | bool | Determines whether members of the same team can hurt one another. Useful with beginner players who have not yet learned how much a chaingun sprays when you just hold the trigger down. Real players always have teamdamage on.
fragsweaponfalling | bool | Enables the weapon to remain after a kill in deathmatch.
hiddenplayers | bool | REMOVED. You cannot see other players in the automap during deathmatch.

### Server options

variable | type | definition
--- | --- | ---
sv_name | string | This is the name of your server. It is displayed on clients' screens when they are searching for servers.
wait_players <0 - 32> | int | Wait for this number of players to join before starting the game. This can be specified in the network menu when starting the server.
wait_timeout <0 - 120> | int | Wait timeout in seconds. When the timeout expires, start the game even if there are fewer players than specified by wait_players. This can be specified in the network menu when starting the server.
sv_allownewplayers | bool | Off will disallow the joining of new players to the game. Net Menu: Allow Join Players.
sv_maxplayers | int | Maximum allowed number of players in the game. Default is 32 so don't worry about it. Net Menu: Max Players.
sv_download_files | boolean | Serve files, Enables the server to send files to the client. This can be disabled if you have limited network bandwidth, or do not want to serve files.
sv_download_savegame | boolean | Serve savegame. Enables the server to send a savegame to joining clients, and for repair. The savegame is needed if the client is joining a game-in-progress. This can be disabled if you have limited network bandwidth, or do not want to be sending savegames. Any client that has a different endian than the server, will be prevented from downloading a savegame. When savegame is disabled, the client will join the game at the start of the next level.
sv_netrepair | enum | Serve Repair, the server network repair setting. Controls the automatic repair when the server detects a client consistency error. Repair is also limited by Client settings.
None | 0 | Repair off. |
Minimal | 1 | 1 Repair attempts, 0 savegame. |
Medium | 2 | 4 Repair attempts, 1 savegames. |
Aggressive | 3 | 7 Repair attempts, 2 savegames. |
The default is Medium.
masterserver | string | The masterserver address used during server search and when registering your server.
sv_public | bool | InternetServer control. Enables this server to announce itself to the master server so that it will be visible outside the local network.
netstat | bool | Print network statistics on the HUD.

### Connect options

variable | type | definition
--- | --- | ---
download_files | boolean | Enables download of files from the server. This can be disabled if you have limited network bandwidth, or do not want files downloaded.
download_savegame | boolean | Enables download of savegame from the server. The savegame is needed if the client is joining a game-in-progress. This can be disabled if you have limited network bandwidth, or do not want savegames downloaded. If your client has a different endian than the server, then you need to disable savegames because the server savegame will be made using the endian of the server. When download_savegame is disabled, the client will join the game at the start of the next level.
netrepair | enum | The client network repair setting. Controls the automatic repair when the server detects a client consistency error. Repair is also limited by Server settings.
None | 0 | Repair off. |
Minimal | 1 | 1 Repair attempts, 0 savegame. |
Medium | 2 | 4 Repair attempts, 1 savegames. |
Aggressive | 3 | 7 Repair attempts, 2 savegames. |
The default is Medium.
server1 server2 server3 | string | The IP addresses (server1, server2, server3) that will be checked to find the DoomLegacy server. The server should have an IP address such as "192.168.1.1", or a network broadcast address such as "192.168.1.255". For a home network, addresses should be 192.168.nn.xx, where all your computers have the same nn, but different xx (nn=1..254, xx=1..254). Do not use addresses such as 255.255.nn.xx as those do not work. Default is "192.168.1.255". These can be set in the Connect menu.

### Menu options

Variables that control menu and other non-play effects. These controls appear in the Menu Options menu.

variable | type | definition
--- | --- | ---
screenlink | enum | Select the screen transistion effect.
None | 0 | No transition effect. |
Crossfade | 1 | Crossfade. It was in the original code, we just enabled it. |
Melt | 2 | Melt the screen, revealing the next screen. |
menusound | enum | The sound played during menu movements. The menu sound selections.
Auto | 0 | DoomLegacy will automatically select the menu sound. |
Legacy | 1 | Softer wooden clack sounds. |
Doom | 2 | Gun shots mostly. Only when playing Doom. |
Heretic | 3 | Heretic clicks. Only when playing Heretic. |

### Video options

These variables control many visual aspects of the game.

variable | type | definition
--- | --- | ---
drawmode | enum | Choose the drawmode. When changed, this control also automatically saves the previous drawmode config file, and loads the new drawmode config file. This is most easily set by the control in the Video menu.
Software 8bit | 1 | 8 bit palette draw. |
Software 15bit | 2 | 15 bit RGB draw. |
Software 16bit | 3 | 16 bit RGB draw. |
Software 24bit | 4 | 24 bit RGB draw. |
Software 32bit | 5 | 32 bit RGB draw. |
Native | 7 | Query the interface for the native draw. Software draw. |
OpenGL | 8 | OpenGL draw. |
MiniGL | 9 | MiniGL, WIN32 only. |
Glide | 10 | Glide, WIN32 only. |
D3D | 11 | DirectDraw, WIN32 only. |
fullscreen | bool | Choose between fullscreen and windowed mode.
scr_depth <8|16|24|32> | int | Screen color depth in bits.
scr_width | int | Screen width in pixels.
scr_height | int | Screen height in pixels.
gammafunc | enum | Select the gamma curve function for controlling display brightness. The function selected enables appropriate control sliders. Gamma is the brightness encoding curve for CRT displays.
Gamma | 0 | Gamma adjustment (-12 - +12).
Gamma_black | 1 | Gamma and a black level control (-12 - +12).
Gamma_full | 2 | Gamma, black level, and brightness controls (-12 - +12).
Linear | 3 | Linear segment approximation, useful for some LCD displays.

There is a control for this in the Video menu.
gamma
<-12 - 12>int Fine gamma control for all gamma functions (slider index, not the actual GAMMA value). Default is 0, which is no-correction (GAMMA=1.0).
Original gamma settings are at (0, -3, -6, -9, -12).
See Gamma table in User Reference Manual.
black
<-12 - 12>int Fine black level control for Gamma_black and Gamma_bright_black functions. Adjusts the black end of the curve to get even blacks and grays in dark rooms.
Normal is 0.
bright
<-12 - 12>int Fine brightness control for Gamma_bright_black function. Adjusts the bright end of the curve to get evenness in bright lit rooms.
Normal is 0.
viewsize
<3 - 11>int Choose the size of the game viewport.
'3' is the smallest view window.
'10' is the full viewsize with the status bar.
'11' is the full viewsize without the status bar.
viewfit enum Select the draw scaling to fit the screen size.

Auto | 0 | Auto select according to video screen size. |
Std | 1 | Stretch to fit the screen. |
Fit Width | 2 | Fit the draw scale to the width, the vertical is scaled to preserve normal ratio. |
Fit Height | 3 | Fit the draw scale to the height, the horizontal is scaled to preserve normal ratio. |

viewheight
<16 - 56>int Set the height of the viewpoint (the height of the eyes above the floor). The normal value for the Doom marine is 41. We have limited the range into acceptable values, to prevent cheating.
chasecam bool Enable/disable the chasecam.
cam_height float Sets the chasecam height.
cam_dist float Sets the distance between the chasecam and the player.
cam_speed float Sets the speed of the chasecam.
playersprites bool Choose whether to draw the player weapon sprites. Don't laugh! Sometimes I like to play with playersprites off.
scalestatusbar bool The status bar can be small or scaled up.
This is the Scale Status Bar control in the video menu.
hud_overlay string

Choose what information to show in the HUD when in full screen mode. Each letter represent a piece of information that will be shown.

f : show frags (only in deathmatch)
h : show health
m : show armor
a : show current weapon ammo
k : show keys
e : show monsters kill
s : show secret found count

Example: > hud_overlay "hma"
ticrate enum The ticrate is displayed as Frames Per Second.

Off | 0 | Display of frame rate is off.
Graph | 1 | Draw a scrolling graph of the Frames Per Second.
Numeric | 2 | Display the Frames Per Second.

This is the Show Ticrate control in the Video menu.

These options only apply in the OpenGL mode.

variable | type | definition
--- | --- | ---
gr_gammared | gr_gammagreen | gr_gammablue | int | Set the intensities of red, green and blue on the scale 0-255. You can use them to make Legacy uniformly brighter or darker if you set all these variables to the same smaller or higher value.
gr_dynamiclighting | bool | Dynamic lighting renders on walls and planes a diffuse reflection of nearby light sources, such as missiles or BFG balls. Be aware it can be slow on low end PC. See also gr_mblighting.
gr_mblighting | bool | Same as dynamic lighting, except it shows the light emitted by missiles thrown by monsters.
gr_staticlighting | bool | This is an experimental variable for now since it's not yet optimized. I don't recommend you to use it, except if you have the cream of the cream PC. It's ok for some maps, though.
gr_fog | bool | Enable/disable the fog, default is on.
gr_fogcolor | string | Change the RGB (in hexadecimal format, "rrggbb") color of the fog. The default is 000000 (black, looks like the original Doom fog). For a grey fog, set the value to 707070 (for example).
gr_fogdensity | float | Change the fog density. The default value is 500. I suggest you to try different values to see the changes.
gr_fov | float | Field of view, in degrees. If you set a value above 90 and gr_mlook (see below) is "Off", then Legacy will automatically set gr_mlook to "On". This is because FOV, with a value higher than 90 degrees, needs this mode to work properly. You can use it for zooming: Mandeep/FlynnT tips for zooming (see other commands/variables) alias psprites_on "playersprites 1" alias psprites_off "playersprites 0" alias zoom_in "set_zoom_out; psprites_off; gr_fov 80; wait 1; gr_fov 71; wait 1; gr_fov 62; wait 1; gr_fov 54; wait 1; gr_fov 46; wait 1; gr_fov 39; wait 1; gr_fov 32; wait 1; gr_fov 26; wait 1; gr_fov 20; wait 1; gr_fov 15; wait 1; gr_fov 10" alias set_zoom_out "bind n zoom_out" alias zoom_out "set_zoom_in; gr_fov 15; wait 1; gr_fov 20; wait 1; gr_fov 26; wait 1; gr_fov 32; wait 1; gr_fov 39; wait 1; gr_fov 46; wait 1; gr_fov 54; wait 1; gr_fov 62; wait 1; gr_fov 71; wait 1; gr_fov 80; psprites_on; wait 1; gr_fov 90" alias set_zoom_in "bind n zoom_in" bind n zoom_in I suggest you to put this in the autoexec.cfg file. It allows you to use the n key for zooming in and out.
gr_mlook | int | How to fix the "mlook" bug (when you look too far up and down). The default value is 1, "On".
Off | 0 | Should only use if you don't use full mlook.
On | 1 | Fast, fixes most of the mlook bug, but walls behind you can be hidden if you look at nearly 90° (up or down). It shouldn't be a big issue for most of you and it's the recommended mode for low end pc.
Full | 2 | The same as "On" with all the bugs fixed, but is a little slower for angle > 45 degree.
The gr_mlook command has been optimized recently. That is why, when you're aiming at an angle of 0, it acts like if gr_mlook was Off, even if gr_mlook is set to On or Full, and thus it's faster. There is something similar with angle less than 45: if you use gr_mlook Full, it act like gr_mlook On.
gr_stats | - | Prints out the memory usage of the hardware renderer.
gr_solvetjoin | bool | Experimental control to disable the Solve T-join problem code. The function tries to combine vertexes that are close together.
gr_polyshape | enum | Controls the polygon generation, and what shape is allowed. The least amount of overdraw usually gives the fastest rendering.
Subsector | 0 | Disables cutting the subsector polygon. The polygon is the shape of the BSP subsector. Has the most overdraw into void areas. |
Fat | 1 | Trims void space from the subsector polygon with segs that cross the entire subsector. Ignores short segs. The floor and ceiling overdraw into void areas.
Trim | 2 | Trims the subsector polygons with the segs. Combines short segs to find cuts across the entire subsector. When a polygon becomes non-convex, then selected vertexes are removed until it is convex. Usually generates smaller polygons than Fat, but there is still some overdraw into void areas where the polygon is forced to be convex.
NotConvex | 3 | Generates polygons with the least overdraw, but some may be non-convex due to the shape and segs of the subsector. The polygons are required to be convex for hardware draw, but some libraries may tolerate drawing non-convex polygons. My nVidia supplied OpenGL library apparantly does. Test at your own risk, but I do not recommend using it.
The default is Trim.
gr_polytile | bool | Enables the polytile code that shares vertexes between poly so as to prevent cracks between polys from forming. This control allows the user to disable this code easily. Default is enabled.

### Effects options

These variables control effects that do not directly affect game play. They are safe to change for your preference.

variable | type | definition
--- | --- | ---
translucency | bool | Enables translucent sprites.
fuzzymode | bool | Enables the Vanilla Doom fuzzy draw for cloaked monsters instead of the newer translucent draw. This is the Fuzzy Shadow control in the Effects menu.
pickupflash | enum | How to notify the user when an item is picked up.
Off | 0 | No pickup flash.
Status | 1 | Flash the status bar in the area where the item is displayed. If the player picks up ammo, the ammo display will flash.
Half | 2 | Half intensity palette flash. Slightly less confusing than the full intensity palette flash.
Vanilla | 3 | The Vanilla Doom palette flash. It is similar enough to the palette flash of being hit to be confusing.

This is the Pickup Flash control in the Effects menu.
splats bool Enables bloodsplats and bullet holes on walls.
maxsplats int Limits the number of splats. Default is 512, maximum is 1024.
bloodtime int Choose how many seconds blood will stay on the floor. In the original Doom the blood stayed no more than 1 second. This can be fun for deathmatches, setting 'bloodtime' to '60', for example, will make the blood drops stay 1 minute on the floor before disappearing. Useful for tracking down your prey :)
spritelim enum Limit the number of sprites drawn each frame, in order to speed up rendering. Close monsters and missiles are given the highest preference, while dead monsters have the lowest preference. When there are too many sprites, the distant sprites are drawn less often so they blink. The limits vary from 128 upto 16384, in steps. Default is 512 drawn sprites.
Few level maps have more than 30 monsters in a room, but there are some unusual maps with hundreds of monsters in view. On a level map with a huge number of monsters, find a value where your graphics bog down, and then reduce it until play is tolerable.
skygen enum The vanilla sky is only 128 high and using freelook it is easy to look higher and lower than the sky coverage. Heretic skies are 200 high. Legacy supports skies that are 240 high.
This currently only affects software draw, as hardware draw (OpenGL) uses a separate behavior for skies.

auto | Automatic, best available.
subst | Select a substitute sky when possible. This currently does not do much as sky substitutions from wads are automatic.
bg_stars | Generate an extended sky with stars replacing the background color everywhere.
extend_stars | Extend the sky. Use background stars.
extend_bg | Extend the sky. A star background is auto-detected.
extend_fill | Generate a sky, extending with random colors selected from the sky texture.
vanilla | Draw the vanilla sky. This does not block the substitution of skies by loaded wads.
stretch | Stretch the vanilla sky to fit 240 high. This is old DoomLegacy behavior, so old wads or old players may prefer it. Usually looks awful.

Default is Auto.
watereffect enum The water effect to draw for water that does not have explicit watereffect, such as water in older wads and generic wads.

colormap | 0 | Uses only the colormap fog, which colors all sectors. Appropriate where the swimmable effect is used to simulate low gravity, and only the colormap fog is wanted.
clear | 1 | The old water default. Appropriate where the swimmable effect is used to simulate low gravity, and no fog is wanted.
cast | 2 | Paint all surfaces with textures. Not implemented yet.
fogfluid | 3 | A fog optimized for use within fluids. Does not have distance effects.
inside | 4 | The old fog effect using color tints. The fog effect is not present within the water, it is only seen when inside looking through side and plane views.
foglite | 5 | A light fog effect, without distance effects. Renders with outside side and plane views, with low alpha.
fogdust | 6 | The normal fog effect, with normal alpha, without distance effects.
fogsheet | 7 | A fog with distance effects. The current implementation uses fog sheets that are automatically added where fog sectors are joined.

Default for water is clear.
fogeffect enum The fog effect to draw for legacy fog that does not have explicit fogeffect.

colormap | 0 | Uses only the colormap fog, which colors all sectors.
clear | 1 | The old water default.
cast | 2 | Paint all surfaces with textures. Not implemented yet.
fogfluid | 3 | A fog optimized for use within fluids. Does not have distance effects.
inside | 4 | The old fog effect using color tints. The fog effect is not present within the water, it is only seen when inside looking through side and plane views.
foglite | 5 | A light fog effect, without distance effects. Renders with outside side and plane views, with low alpha.
fogdust | 6 | The normal fog effect, with normal alpha, without distance effects.
fogsheet | 7 | A fog with distance effects. The current implementation uses fog sheets that are automatically added where fog sectors are joined.

Default for fog is fogdust.
invul_skymap enum Doom had a bug, where invulnerability would colormap everything, except the sky.

Vanilla | 0 | Vanilla effect, sky is not colormapped.
Boom | 1 | Boom effect, sky is colormapped.

Default is Boom.
boomcolormap enum The colormap effect for Boom colormap sectors.

Sector visible | 0 | Legacy sector colormap. The colormap is always visible.
Boom visible | 1 | Boom colormap, but visible when outside sector.
Boom normal | 2 | Boom compatibility. Boom colormap is not visible until walk into sector.
Boom detect | 3 | Detect if Legacy, Boom, or generic wad.

Default is Sector visible.
oof_2s bool Doom generates an oof sound if the player runs into a wall, unless it is a 2-sided wall. This enables the oof sound for 2-sided walls too, as in Boom. Default is Off.

### Lighting options

These variables control coronas and lighting effects. These controls appear in the Lighting Effects menu.

variable | type | definition
--- | --- | ---
corona | enum |
Off | Corona off
Special | Draws special coronas. Intended for those who don't want the common coronas, but don't want to miss out on the wad special effects.
Most | Draws most coronas, selected by distance, specialness, and alpha. Intended for those with CPU limitations, who need to limit draws, or with wads with an extreme number of lamps.
Dim | Dims some of the coronas.
All | Draw all the coronas.
Bright | Brighten some of the coronas.
Old | Draw the coronas using the old alpha field, and no type field.
corona_draw_mode | enum | Software draw corona draw control.
Blend | 0 | Alpha blend
Blend_BG | 1 | Alpha blend with constant background alpha
Additive | 2 | Additive Alpha. Adds to the current pixel.
Additive_BG | 3 | Additive Alpha with background alpha. Background is first faded using background alpha.
Add_Limit | 4 | Additive Alpha, with Limit math. Adds to the current pixel, limiting each color to 255.
coronasize | float | Sets the corona size. In reality, coronas are caused by the dispersion of the light by mist in air. You can adjust the size to get a more realistic effect, or just to see bigger coronas. Default: 1.0

### Sound options

Variables controlling sound and music.

variable | type | definition
--- | --- | ---
soundvolume <0-31> | int | Sound effects volume. There is a control for this in the Sound menu.
musicvolume <0-31> | int | The game music volume (Midi). The game music is embeded in the game IWAD and PWAD. There is a control for this in the Sound menu.
cd_volume <0-31> | int | CD music volume. This is music is from any CD that is in the CD drive, not music from the game. There is a control for this in the Sound Menu.
snd_channels | int | Number of sound channels used. Usually you will choose a value from 8 to 16, which is enough.
stereoreverse | bool | Reverse the the left and right stereo channels. This is necessary if you hear a monster from the right, but then get hit from the left.
surround | bool | Use a software "surround" effect.
precachesound | bool | Enables loading all sounds at the map startup, to eliminate delays in playing sound effects. Disk drive activity to load sounds during play can be annoying.
music_source | enum | Music preference select. A wad may have both MUS and some other music, such as MP3 music. For example phobiata.wad has MP3 music.
MUS | Doom MUS and MIDI music.
Auto | Automatic, MUS, MIDI, MP3, OGG.
MP3 | MP3 music only.
OGG | OGG music only.
snd_opt | enum | This is only present in the Linux X port. Sound Device Preference select. It determines the order that sound ports are tried. If the preferred port is not found, some other port will be used. A selection is only present if the device was compiled into DoomLegacy.
Default | The default device.
Search 1 | Search order 1.
Search 2 | Search order 2.
Search 3 | Search order 3.
OSS | The OSS sound system.
ESD | The Enlightened Sound Daemon.
ALSA | The ALSA sound system.
Jack | The Jack sound system.
PulseAudio | The PulseAudio sound system.
musserv_opt | enum | This is only present in the Linux X port with the separate musserver. Sound Device Preference select for playing Midi music. It determines the order that sound ports are tried. If the preferred port is not found, some other port will be used. A selection is only present if the device was compiled into DoomLegacy. TiMidity and FluidSynth require that their server be running before starting DoomLegacy. This is often started by the operating system. One or more soundfont must also be specified to the server, which determines which instruments are present and how they sound.
Default | The default device.
Search 1 | Search order 1.
Search 2 | Search order 2.
Midi | Any midi synth.
TiMidity | TiMidity synth.
FluidSynth | FluidSynth synth.
Ext Midi | An external Midi device. When a external port is found, such as in Alsa, but there is no actual external midi device, the musserver will use the external port anyway (producing silent music).
Synth | FM or Awe32 synth.
FM Synth | FM Synth such as a SoundBlaster port.
Awe32 Synth | Only works if Awe32 support is compiled into the musserver.
This is the Music Pref. control in the Sound menu (only in Linux X port). For a list of devices: "musserver -l"
musserv_cmd | string | This is only present in the Linux X port with the separate musserver. The command to start the music server. Default value: "musserver".
musserv_arg | string | This is only present in the Linux X port with the separate musserver. The arguments to pass to the music server when it is started. Default value: "-t 20".
sndserv_cmd | string | This is only present in the Linux X port with the separate sound server. The command to start the music server. Default value: "llsndserv".
sndserv_arg | string | This is only present in the Linux X port with the separate sound server. The arguments to pass to the sound server when it is started. Default value: "-quiet".

CDROM Music commands

command | definition
--- | ---
cd on | off | remap | reset | open | info | play <track> | loop <track> | stop | pause | resume | Play audio CDs. The track numbers start at 1. reset: Check for a new cd, read the track info. Use after changing the CD. info: Prints useful info about the CD like how many tracks it has. remap: Remap the CD track played for each level map.

Loading the CDROM is slow. You need to wait until the CDROM is done loading the CDROM before you can even get info on it. If you have multiple CDROM, DoomLegacy will try to use the first. Under Linux this is /dev/cdrom.

SDL cannot control the CDROM music volume. Under SDL the CDROM music volume control has been reduced to an on/off switch, which does PAUSE. SDL 1.2.15 is the end of CDROM support in SDL. SDL 2.x will not support CDROM music.

Playing the CDROM music with loop (repeat the song) requires DoomLegacy to check that the music has stopped. With Linux, and probably some other systems too, this CDROM hardware check blocks execution for about 1/4 second. With previous DoomLegacy versions, this check occurred every 2 seconds. DoomLegacy 1.46.3 checks every 4 seconds, near the expected end of the music, and only when it is set to loop the music.

This CDROM check can be avoided entirely by not using using cd play loop. Using CDROM music play loop in a netgame may get you kicked due to consistency failure, due to the CDROM check blocking play. When loading a new level map, if cd is enabled it will start play loop of the track for that map. Playing a CD using a separate program on your computer may work better, especially during net play.

Normally, the game plays track xx during map MAPxx. With Doom ExMy levels, the track number is 9*x+y. The remap command is useful to choose which cd music is played for each level map. All the level maps must be listed sequentially in the remap command, it always starts from map01. Let's have an example:
cd remap 5 3 1 4 2
At map 1, the game will play track 5 etc. The same track number can be also be repeated.

### Misc options

Variables controlling screenshot, and the endtext.

variable | type | definition
--- | --- | ---
screenshottype | enum | The screenshot file format.
Compact | Targa file, nearest format.
Full | Targa 24 bit format.
PCX | PCX file (DOS only).
When drawing in 8 bit drawmode, the file will be saved in Targa colormap format.
screenshotdir | string | The directory to save screenshots. The default is the current directory.
textout | enum | Text encoding for EndText.
Off | 0 | No EndText output.
Vanilla | 1 | ASCII output encoding, Codepage 437.
UTF8 | 2 | UTF-8 output encoding.