summaryrefslogtreecommitdiff
path: root/doc/overview.htm
diff options
context:
space:
mode:
Diffstat (limited to 'doc/overview.htm')
-rw-r--r--doc/overview.htm1164
1 files changed, 1164 insertions, 0 deletions
diff --git a/doc/overview.htm b/doc/overview.htm
new file mode 100644
index 0000000..aeec434
--- /dev/null
+++ b/doc/overview.htm
@@ -0,0 +1,1164 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="vim">
+<title>viDOOM - Free Software DOOM editor</title>
+</head>
+
+<body>
+
+<h1 align="center">viDOOM Overview</h1>
+
+<ul>
+ <li><a href="#INTRODUCTION">Introduction</a></li>
+ <li><a href="#WHY_BOTHER">Why bother?</a></li>
+ <li><a href="#SUPPORTED_SYSTEMS">Supported systems</a></li>
+ <li>Configuration<ul>
+ <li><a href="#ENVIRONMENT">Environment</a></li>
+ <li><a href="#VIDOOM_INI">VIDOOM.INI</a></li>
+ <li><a href="#CONFIG_FILE">Config file</a></li>
+ </ul>
+ </li>
+</ul>
+
+<hr>
+
+<h2><a name="INTRODUCTION"></a>Introduction</h2>
+
+<p>viDOOM is a Free Software DOOM editor. It supports the
+following <a href="http://www.idsoftware.com">id</a> produced
+games: </p>
+
+<ul>
+ <li>Doom</li>
+ <li>The Ultimate Doom</li>
+ <li>Doom 2 - Hell On Earth</li>
+ <li>Final Doom</li>
+</ul>
+
+<p>Note that in accordance with id software's wishes you are only
+allowed to generate edited levels for the game if you have a
+full, registered version of the game.</p>
+
+<p>viDOOM is fully configurable through config files, so it can
+be expanded to accommodate the BOOM and ZDOOM extensions. Well,
+once I've found out the slight difference in format of WAD file
+that seems to accompany them too.</p>
+
+<hr>
+
+<h2><a name="WHY_BOTHER"></a>Why bother?</h2>
+
+<p>Good question. Anyone who has ever used them will know there
+are a number of very good DOOM editors available (links to lots
+of them can be found at <a href="http://www.doomworld.com">Doomworld</a>
+and all good FTP servers). </p>
+
+<p>However, I always felt a bit clumsy using them, and in true
+hacker fashion I decided writing one I could use would be easier
+then reading the instructions for the others. Hence viDOOM.</p>
+
+<p>I reasonably like the way viDOOM works, so I release it on the
+off chance other people may too. </p>
+
+<hr>
+
+<h2><a name="SUPPORTED_SYSTEMS"></a>Supported systems</h2>
+
+<p>As with most Free Software viDOOM is primarily distributed as
+source code. The source is fairly ANSI C compliant, and therefore
+the core of viDOOM should compile on all operating systems. The
+current distribution includes the hardware dependent routines for
+the following platforms: </p>
+
+<ul>
+ <li>Protected-mode 32-bit MSDOS (Windows 9x / MSDOS + DPMI)</li>
+</ul>
+
+<hr>
+
+<h2><a name="ENVIRONMENT"></a>Environment</h2>
+
+<p>If defined in the environment, the value of <b><tt>VIDOOM_DIR</tt></b>
+will be made the current directory as soon as viDOOM starts. This
+is important as the following initialisation files are expected
+to be in the current directory when viDOOM starts.</p>
+
+<p><b>Note:</b><br>
+How this environment is set will differ from system. Basically
+viDOOM just calls the C library <tt>getenv()</tt> function. So,.
+for instance in a Unix type system this could be:</p>
+
+<blockquote>
+ <p><tt>% setenv VIDOOM_DIR $HOME/viDOOM</tt><br>
+ or<br>
+ <tt>% export VIDOOM_DIR=$HOME/viDOOM</tt></p>
+</blockquote>
+
+<p>Whereas in DOS/DJGPP version this could be:</p>
+
+<blockquote>
+ <p><tt>C:\&gt; set VIDOOM_DIR=C:\viDOOM</tt></p>
+</blockquote>
+
+<hr>
+
+<h2><a name="VIDOOM_INI"></a>Initialisation File - VIDOOM.INI</h2>
+
+<p>On starting viDOOM will look for a file in the current
+directory called <b>vidoom.ini</b>. This file tells viDOOM what
+version of DOOM it is expected to be editing, the configuration
+for that version of DOOM and the editor configuration. The
+general format of the INI file is: </p>
+
+<p><tt>[Section]<br>
+identifier=value<br>
+</tt></p>
+
+<p>Blank lines and lines starting with a comment character (#)
+are ignored. The following sections and identifiers are explained
+below.</p>
+
+<ul>
+ <li><a href="#GAME"><tt>[Game]</tt></a></li>
+ <li><a href="#EDITOR"><tt>[Editor]</tt></a></li>
+ <li><a href="#viDOOM"><tt>[viDOOM]</tt></a></li>
+ <li><a href="#CHECK_LINEDEF"><tt>[Check Linedef]</tt></a></li>
+ <li><a href="#NODE_BUILDER"><tt>[Node Builder]</tt></a></li>
+ <li><a href="#ACC"><tt>[ACS]</tt></a></li>
+ <li><a href="#GUI"><tt>[GUI]</tt></a></li>
+ <li><a href="#GAME_NAME"><tt>[</tt><em><tt>Game Name</tt></em><tt>]</tt></a></li>
+</ul>
+
+<p>After reading VIDOOM.INI, then a defined <a
+href="#CONFIG_FILE">config file</a> is also read.</p>
+
+<hr size="1">
+
+<h3><a name="GAME"></a>[Game]</h3>
+
+<p>Controls for the version of DOOM</p>
+
+<table border="1" cellpadding="3">
+ <tr>
+ <td valign="top" nowrap><a name="GAME_TYPE"></a><b><tt>game</tt></b></td>
+ <td valign="top">Use this to say which version of DOOM
+ you will be editing. The following values are allowed: <ul>
+ <li><b>Doom</b></li>
+ <li><b>Ultimate Doom</b></li>
+ <li><b>Doom 2</b></li>
+ <li><b>TNT: Evilution</b></li>
+ <li><b>Plutonia Experiment</b></li>
+ <li><b>ZDoom</b></li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td><a name="GAME_ASK"></a><b>ask</b></td>
+ <td>If set to <b>yes</b> then on starting viDOOM will ask
+ for the game type to edit.</td>
+ </tr>
+</table>
+
+<hr size="1">
+
+<h3><a name="EDITOR"></a>[Editor]</h3>
+
+<p>Global editor configuration</p>
+
+<table border="1" cellpadding="3">
+ <tr>
+ <td valign="top" nowrap><a name="ASK_MIDDLE_ON_2SIDED"></a><b><tt>ask_middle_on_2sided</tt></b></td>
+ <td valign="top">When creating a new sector and the
+ sector has a two-sided boundary asks whether a middle
+ texture should be asked for. Allowable values <b>yes</b>
+ and <b>no</b></td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>auto_block_linedefs</tt></b></td>
+ <td valign="top">When linedef flags are altered and this
+ is set to <b>yes</b>, linedefs that were 2-sided and are
+ now 1-sided have the impassible flags automatically set.<br>
+ Likewise linedefs that were 1-sided and are now 2-sided
+ have the impassible flag automatically cleared.<br>
+ If set to <i>no</i> no action is taken when these events
+ happen. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>bright</tt></b></td>
+ <td valign="top">Describes a gamma value applied to any
+ textures, flats and sprites read in from the DOOM WAD
+ files. Allowable values are any floating point number.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>clear_on_menu</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then once the
+ pop-up menu has been used to modify the selected objects
+ they are automatically unselected. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>clear_on_move</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then once the
+ selected objects have been moved they are automatically
+ unselected. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a
+ name="DEFAULT_SECTOR_LIGHT_ETC"></a><b><tt>default_light_level</tt></b><tt><br>
+ </tt><b><tt>default_floor_height</tt></b><tt><br>
+ </tt><b><tt>default_ceiling_height</tt></b></td>
+ <td valign="top">Describes the default light, floor and
+ ceiling height for created sectors. Note that if a sector
+ is created within another sector, the values for that
+ sector, rather than these defaults, are used.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>default_edit_mode</tt></b></td>
+ <td valign="top">Defines the default edit mode when
+ loading a new map into the editor. Possible values are:<ul>
+ <li><a href="editing.htm#SECTOR_MODE"><b>sector</b></a></li>
+ <li><a href="editing.htm#LINEDEF_MODE"><b>linedef</b></a></li>
+ <li><a href="editing.htm#THING_MODE"><b>thing</b></a></li>
+ <li><a href="editing.htm#VERTEX_MODE"><b>vertex</b></a></li>
+ <li><a href="editing.htm#MULTI_MODE"><b>multi</b></a></li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>default_scale</tt></b></td>
+ <td valign="top">The starting scale used in the editor.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>grid</tt></b></td>
+ <td valign="top">Use this to say whether the grid will be
+ shown on screen while editing. Allowable values are <b>yes</b>
+ and <b>no</b>. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>grid_lock</tt></b></td>
+ <td valign="top">Use this to say whether inserted and
+ moved object in the editor will be snapped on a grid.
+ Allowable values are <b>yes</b> and <b>no</b>. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>grid_size</tt></b></td>
+ <td valign="top">Describes the size of the grid used by
+ the above items. Allowable values are integer values
+ greater than two.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="HOVER_SELECT"></a><b><tt>hover_select</tt></b></td>
+ <td valign="top">When editing object in a DOOM level this
+ alters the way that viDOOM works if the right mouse
+ button is used over an unselected object. The allowable
+ values, and their affects are: <ul>
+ <li><b>none</b> - nothing is done. The right mouse
+ button works as expected.</li>
+ <li><b>add</b> - the object the mouse is over is
+ added to the selected objects before displaying
+ the menu.</li>
+ <li><b>single</b> - the object the mouse is over is
+ made the sole selected object before displaying
+ the menu.</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="INSERT_SELECT"></a><b><tt>insert_select</tt></b></td>
+ <td valign="top">When inserting new objects in a DOOM
+ level this alters the way that viDOOM selects the objects
+ after creation. The allowable values, and their affects
+ are: <ul>
+ <li><b>none</b> - nothing is done. The new object is
+ left unselected.</li>
+ <li><b>add</b> - the new object is added to the
+ selected objects.</li>
+ <li><b>single</b> - the new object is made the sole
+ selected object.</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>linedef_select</tt></b></td>
+ <td valign="top">Defines who many pixels around a LINEDEF
+ the bounding box stretches when selecting a line.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>merge_linedef</tt></b></td>
+ <td valign="top">If you overlay vertexes on top of each
+ other you can merge vertexes. Once these vertexes are
+ merged checks are made to see whether linedefs share
+ these vertexes, and hence overlap. This option controls
+ what happens when these overlapping linedefs are found.
+ The possible values are: <ul>
+ <li><b>always</b> - always merge the overlapping
+ linedefs without any prompting.</li>
+ <li><b>ask</b> - confirms with the user before
+ merging linedefs or not as requested. </li>
+ <li><b>never</b> - never merge overlapping linedefs. </li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>new_2sided_select</tt></b></td>
+ <td valign="top">When linedefs have there flags set so
+ that a new left sidedef is added to it controls how the
+ altered linedefs are selected. Possible values are: <ul>
+ <li><b>select</b> - clears the currently selected
+ linedefs (if any) and selects the linedefs that
+ have new double sides.</li>
+ <li><b>ask</b> - confirms with the user. If the user
+ opts to select the linedefs, the current
+ selection is cleared and the altered linedefs
+ selected.</li>
+ <li><b>never</b> - never select the altered linedefs.
+ Note that a notice is still displayed so that you
+ know new left sidedefs have been created.</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="SECTOR_MOVE"></a><b><tt>sector_move</tt></b></td>
+ <td valign="top">Defines which linedefs are actually
+ moved when moving a sector. Possible values are: <ul>
+ <li><b>all</b> - move all linedefs that border the
+ sector.</li>
+ <li><b>right</b> - move only linedefs that have this
+ sector to their right.</li>
+ <li><b>left</b> - move only linedefs that have this
+ sector to their left.</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="SHOW_FULL_LINEDEF_INFO"></a><b><tt>show_full_linedef_info</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then in the <a
+ href="editing.htm#LINEDEF_DISPLAY">linedef edit display</a>
+ the linedef type will be shown as the full linedef name
+ as defined in the <a href="#LINEDEF_TYPES">config file</a>.
+ If set to <b>no</b> then linedef type will be displayed
+ as a hex value and it's class.<p>This has no effect when
+ editting HEXEN format maps.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>tag_highlight</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then the tag
+ highlighting mode is enabled by default in sector and
+ linedef modes.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>vertex_radius</tt></b></td>
+ <td valign="top">Describes the size of the box around a
+ VERTEX which is used to select the VERTEX while editing.
+ Recommended values are any integer greater than four.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>width</tt></b><tt><br>
+ </tt><b><tt>height</tt></b></td>
+ <td valign="top">Describes the size of the display used
+ by viDOOM. viDOOM expects a resolution of at least
+ 640x480.</td>
+ </tr>
+</table>
+
+<hr size="1">
+
+<h3><a href="#CONFIG_FILE" name="viDOOM"></a>[viDOOM]</h3>
+
+<p>Main menu configuration</p>
+
+<table border="1" cellpadding="3">
+ <tr>
+ <td valign="top" nowrap><b><tt>auto_loadmap</tt></b></td>
+ <td valign="top">Set this to a list of levels to load on
+ startup. The format is to set it to a list of level names
+ seperated by commas. The first level that can be loaded
+ successfully is used. If this is set then <strong>initial_empty_map</strong>
+ is ignored.<p>If empty or not used then no map is auto
+ loaded, e.g.</p>
+ <p><tt># Load the first map, whether we're editing DOOM
+ or DOOM2<br>
+ auto_loadmap=MAP01,E1M1</tt></p>
+ <p><tt># Don't auto load any maps<br>
+ auto_loadmap=</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>initial_empty_map</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then on startup
+ viDOOM will have an empty map, either MAP01 or E1M1,
+ ready for editing. This is ignored if <strong>auto_loadmap</strong>
+ is set.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>load_flats</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then the graphics
+ for the flats will be loaded so they can be selected
+ graphically. If set to <b>no</b> then flats are selected
+ just using their name. <br>
+ This is provided as the graphics reading is not very
+ efficient and can be slow on certain machines. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>load_textures</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then the graphics
+ for the textures will be loaded so they can be selected
+ graphically. If set to <b>no</b> then textures are
+ selected just using their name. <br>
+ This is provided as the graphics reading is not very
+ efficient and can be slow on certain machines. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>load_sprites</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then the graphics
+ for the things will be loaded so they can be selected
+ graphically. If set to <b>no</b> then things are selected
+ just using their name. <br>
+ This is provided as the graphics reading is not very
+ efficient and can be slow on certain machines. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="MAP_CLEAR"></a><b><tt>map_clear_warning</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then a warning is
+ displayed whenever an option is chosen that will replace
+ the currently edited map with another, if the editor has
+ been used since the level's loading/creation. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="MAP_EXIT"></a><b><tt>map_exit_warning</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then a warning is
+ displayed if exit is chosen and the editor option has
+ been used. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="OVERWRITE_WARNING"></a><b><tt>overwrite_warning</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then a warning is
+ displayed if you save a map over a file that already
+ exists. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>show_titlepic</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then the title
+ picture for the version of DOOM you are editing will be
+ displayed on the main title screen. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>sort_flat_names</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then when selecting
+ ceiling or floor flats they will be sorted into
+ alphabetical order. If set to <b>no</b> they are simply
+ in the order they appear in the IWAD file. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>sort_texture_names</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then when selecting
+ wall textures they will be sorted into alphabetical
+ order. If set to <b>no</b> they are simply in the order
+ they appear in the IWAD file. </td>
+ </tr>
+</table>
+
+<hr size="1">
+
+<h3><a name="CHECK_LINEDEF"></a><b>[Check LINEDEF]</b></h3>
+
+<p>This defines how the <b>Check LINEDEF</b> function in the
+editor (see <a href="editing.htm#LINEDEF_KEYS">editing</a> for
+details) operates. Note that part of the configuration for this
+command also occurs in the <a href="#LINEDEF_CHECK_DEFAULT">config
+file</a>. This is required as texture names can be different in
+different versions of DOOM. The following options are definable
+within the INI file:</p>
+
+<table border="1" cellpadding="3">
+ <tr>
+ <td valign="top" nowrap><b><tt>assume_yes</tt></b></td>
+ <td valign="top">If this is set to <b>yes</b> then any
+ time a question would be asked to see if it's OK to
+ remove a texture that viDOOM considers unnecessary then
+ it will be removed without asking. Likewise when asking
+ to add missing textures the texture picklist will appear
+ (with the linedef number and what is to be set in the
+ title) without any prompting.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="CHECK_LINE_1SIDE_LOWER"></a><b><tt>check_1side_lower</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then when a sidedef
+ is attached to a one-sided linedef and there is a lower
+ texture defined viDOOM will ask if it's OK to remove it.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="CHECK_LINE_1SIDE_MIDDLE"></a><b><tt>check_1side_middle</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then when a sidedef
+ is attached to a one-sided linedef and there is no middle
+ texture defined viDOOM will ask if it's OK to define it.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="CHECK_LINE_1SIDE_UPPER"></a><b><tt>check_1side_upper</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then when a sidedef
+ is attached to a one-sided linedef and there is an upper
+ texture defined viDOOM will ask if it's OK to remove it.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="CHECK_LINE_2SIDE_LOWER"></a><b><tt>check_2side_lower</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then when a sidedef
+ is attached to a two-sided linedef which is between two
+ sectors with different floor heights and there is no
+ lower texture defined viDOOM will ask if it's OK to
+ define it.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="CHECK_LINE_2SIDE_MIDDLE"></a><b><tt>check_2side_middle</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then when a sidedef
+ is attached to a two-sided linedef which is between two
+ sectors and there is a middle texture defined viDOOM will
+ ask if it's OK to remove it.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="CHECK_LINE_2SIDE_UPPER"></a><b><tt>check_2side_upper</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then when a sidedef
+ is attached to a two-sided linedef which is between two
+ sectors with different ceiling heights and there is no
+ upper texture defined viDOOM will ask if it's OK to
+ define it.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a
+ name="CHECK_LINE_2SIDE_SAME_SECTOR"></a><b><tt>check_2side_same_sector</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then when a sidedef
+ is attached to a two-sided linedef which is wholly within
+ one sector and there are any textures defined viDOOM will
+ ask if it's OK to remove them.</td>
+ </tr>
+</table>
+
+<hr size="1">
+
+<h3><a name="NODE_BUILDER"></a>[Node Builder]</h3>
+
+<p>Node Builder configuration - used to build nodes for maps
+automatically when saving.</p>
+
+<table border="1" cellpadding="3">
+ <tr>
+ <td valign="top" nowrap><b><tt>always_view_output</tt></b></td>
+ <td valign="top">Normally viDOOM will only show the
+ output from the build command if it fails for some
+ reason. Setting this to <b>yes</b> means any output from
+ the node builder will be displayed regardless.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>command</tt></b></td>
+ <td valign="top">Defines the command used to execute the
+ node builder. e.g.<p><tt>command=c:\bsp\bsp.exe</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>ignore</tt></b></td>
+ <td valign="top">If set, then any saved filename that
+ includes this string will not be passed through the node
+ builder. This is useful so that structures for merging
+ into other maps (see <a href="editing.htm#MERGE_MAP">editing</a>
+ for details) need not be put through the node building
+ process. e.g. if set to<p><tt>ignore=str</tt></p>
+ <p>Then saving a map named <b>MAP01.WAD</b> will be
+ passed through the node builder, whereas <b>WALL_STRUCT.WAD</b>
+ would not be.</p>
+ <p>Another important use for this is to leave a back door
+ where you can save a WAD without it being passed through
+ the node builder if anything goes wrong with trying to
+ build the map.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>infile</tt></b></td>
+ <td valign="top">Defines the format for the infile
+ parameter to the node builder. Any occurrence of the '%'
+ character will be replaced with the full path of the map
+ being saved. e.g.<p><tt>infile=%</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>outfile</tt></b></td>
+ <td valign="top">Defines the format for the outfile
+ parameter to the node builder. Any occurrence of the '%'
+ character will be replaced with the full path of the map
+ being saved. e.g.<p><tt>outfile=-o %</tt></p>
+ <p>Note that if your node builder does not allow the
+ input and output file to be the same then it is
+ permissible to put extra characters <b>after</b> the %
+ that will get tacked onto the end of the name, e.g.</p>
+ <p><tt>outfile=-o %_NEW</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>in_before_out</tt></b></td>
+ <td valign="top">Defines the order of the the arguments
+ to the node builder. If set to <b>yes</b> then the node
+ builder is invoked as:<p><tt>command infile outfile</tt></p>
+ <p>If set to <b>no</b> then the command is built as:</p>
+ <p><tt>command outfile infile</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>use</tt></b></td>
+ <td valign="top">If set to <b>yes</b> then the node
+ builder described above is used on any maps being saved.
+ If set to <b>no</b> then the map is saved and the nodes
+ must be built outside of viDOOM.</td>
+ </tr>
+</table>
+
+<hr size="1">
+
+<h3><a name="ACC"></a>[ACS]</h3>
+
+<p>ACS compiler configuration - used to build BEHAVIOR lumps for
+HEXEN format maps.</p>
+
+<table border="1" cellpadding="3">
+ <tr>
+ <td valign="top" nowrap><a name="ACS_ALWAYS_VIEW"></a><b><tt>always_view_output</tt></b></td>
+ <td valign="top">Normally viDOOM will only show the
+ output from the compiler if it fails for some reason.
+ Setting this to <b>yes</b> means any output from the
+ compiler will be displayed regardless.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>command</tt></b></td>
+ <td valign="top">Defines the command used to execute the
+ acs compiler. e.g.<p><tt>command=c:\doom\acc\acc.exe</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>dir</tt></b></td>
+ <td valign="top">Defines a working directory that will be
+ used for the compilation. This will generally be the same
+ place that the acs header files are stored and viDOOM
+ will change directory to this directory before
+ compilation. e.g.<p><tt>dir=c:\doom\acc\</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>script</tt></b></td>
+ <td valign="top">viDOOM will write an acs script with
+ this name, into the directory defined by <strong>dir</strong>
+ before compilation. e.g.<p><tt>script=vidoom.acs</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>object</tt></b></td>
+ <td valign="top">viDOOM will assume that the acs object
+ created by the compiler will have this name. e.g.<p><tt>script=vidoom.o</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>args</tt></b></td>
+ <td valign="top">Defines the argument list to the ACC
+ compiler. The string <strong>%S</strong> will be replaced
+ by <strong>script</strong>, defined above. The string <strong>%O</strong>
+ will be replaced by <strong>object</strong> defined
+ above. e.g.<p><tt>args=%S %O</tt></p>
+ </td>
+ </tr>
+</table>
+
+<p>&nbsp;</p>
+
+<hr size="1">
+
+<h3><a name="GUI"></a>[GUI]</h3>
+
+<p>GUI configuration. All the values in this section are an RGB
+triplet defined as an hex number, i.e. <tt>0xRRGGBB</tt>. The
+following values can be set from the INI file.</p>
+
+<table border="1" cellpadding="3">
+ <tr>
+ <td valign="top" nowrap><b><tt>gui_hi</tt></b></td>
+ <td valign="top">The brightest colour used to draw the 3D
+ looking interface.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>gui_mid</tt></b></td>
+ <td valign="top">The medium colour used to draw the 3D
+ looking interface.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>gui_lo</tt></b></td>
+ <td valign="top">The darkest colour used to draw the 3D
+ looking interface.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>gui_text</tt></b></td>
+ <td valign="top">The colour of text.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>gui_textshadow</tt></b></td>
+ <td valign="top">The colour of the shadow behind text.
+ This is only really used by viDOOM's own portable GUI
+ routines. If set to the same value as <b>text</b> then no
+ shadows are drawn.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>gui_bold</tt></b></td>
+ <td valign="top">The colour of bold text (used for
+ titles)</td>
+ </tr>
+</table>
+
+<hr size="1">
+
+<h3><a name="GAME_NAME"></a>[<i>Game name</i>]</h3>
+
+<p>One of these sections appears for each possible setting of the
+game variable in the [Game] section. These are:</p>
+
+<ul>
+ <li><tt>[Doom]</tt></li>
+ <li><tt>[Ultimate Doom]</tt></li>
+ <li><tt>[Doom 2]</tt></li>
+ <li><tt>[TNT:Evilution]</tt></li>
+ <li><tt>[Plutonia Experiment]</tt></li>
+ <li><tt>[ZDoom]</tt></li>
+</ul>
+
+<table border="1" cellpadding="3">
+ <tr>
+ <td valign="top" nowrap><b><tt>iwad</tt></b></td>
+ <td valign="top">Defines the path to the IWAD for this
+ game. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="PWAD_DIR"></a><b><tt>pwad_dir</tt></b></td>
+ <td valign="top">Defines the default load/save directory
+ for editing PWAD files. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="LEVEL_STYLE"></a><b><tt>level_style</tt></b></td>
+ <td valign="top">Defines the level naming convention for
+ the game. Allowable values are: <ul>
+ <li><b>Doom</b> - allows level names E1M1 to E3M9</li>
+ <li><b>Ultimate Doom</b> - allows level names E1M1 to
+ E4M9</li>
+ <li><b>Doom 2</b> - allows level names MAP01 to MAP32</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>preload</tt></b></td>
+ <td valign="top">Lists a number of PWAD files to preload
+ on startup. PWAD files are separated by ; and the full
+ path is expected. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>vidoom_config</tt></b></td>
+ <td valign="top">Defines the <a href="#CONFIG_FILE">config
+ file</a> for this version of DOOM. This defines the
+ values used for defining things, linedefs, sectors and so
+ on. <br>
+ viDOOM is currently supplied with <b>doom.cfg</b>, <b>doom2.cfg</b>
+ and <b>zdoom.cfg</b>. </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="MAPINFO_LUMP"></a><b><tt>mapinfo_lump</tt></b></td>
+ <td valign="top">This only applies to the section for <b>[ZDoom]
+ </b>.<p>If this is set to <i>yes</i> then on loading a
+ map from the loaded WAD files, the directory pointed to
+ by <a href="#PWAD_DIR">pwad_dir</a> is searched for <b>MAPINFO.WAD</b>.
+ If found then the MAPINFO lump from the MAPINFO.WAD is
+ read in and can be edited within the editor. If
+ WADINFO.WAD does not exist then an empty MAPINFO lump is
+ created.</p>
+ <p><b>NOTE:</b> On saving the level if there is anything
+ in the mapinfo entered in the editor the MAPINFO.WAD file
+ will be overwritten (or created if it does not exist).
+ This means that any infomation (apart from the edited
+ MAPINFO lump) that was in this WAD file will be lost. It
+ is suggested that nothing goes into MAPINFO.WAD except
+ for the MAPINFO lump.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="MAPINFO_LUMP"></a><b><tt>create_hexen</tt></b></td>
+ <td valign="top">This only applies to the section for <b>[ZDoom]
+ </b>.<p>If this is set to <i>yes</i> then on creating a
+ new map, it will be marked as being in the HEXEN format
+ (ie. having a BEHAVIOR lump and the HEXEN format of
+ THINGS and LINEDEFS). If set to <em>no</em> then the map
+ will be created as a DOOM map.</p>
+ <p>Setting to <em>ask</em> means that you will be asked
+ prior to creation which sort of map you want.</p>
+ </td>
+ </tr>
+</table>
+
+<hr>
+
+<h2><a name="CONFIG_FILE"></a>Config file</h2>
+
+<p>There is two config files supplied with viDOOM, <b>doom.cfg</b>
+and <b>doom2.cfg</b>. Each file is comprised of sections followed
+by the data expected in each section. Each section is defined by
+a line like:</p>
+
+<p><tt>%SECTION_NAME</tt></p>
+
+<p>While the data lines are on individual lines with the pipe (|)
+character used to separate fields, e.g.</p>
+
+<p><tt>Field 1|Field 2</tt></p>
+
+<p>Blank lines and lines starting with a comment character (#)
+are ignored. In addition to this blocks of lines can be forced to
+be ignored by enclosing them with directives introduced with the
+@ charcater. See the <a href="#CONFIG_DIRECTIVES">following
+section</a> for more details.</p>
+
+<p>Note that some sections allow an edit mode to be defined, to
+indicate whether this definition is for DOOM or HEXEN edit mode
+(or both). The currently allowed edit modes are:</p>
+
+<ul>
+ <li>Doom</li>
+ <li>Hexen</li>
+</ul>
+
+<p>If what is being defined applies to more than one mode, these
+can be seperated with commas.</p>
+
+<p>The following sections are defined:</p>
+
+<table border="1" cellpadding="3">
+ <tr>
+ <td valign="top" nowrap><b><tt>%INCLUDE_FILES</tt></b></td>
+ <td valign="top">Defines any other config files to
+ include before processing this one. Simply type the
+ filenames to be included on individual lines.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="THING_CLASSES"></a><b><tt>%THING_CLASSES</tt></b></td>
+ <td valign="top">Defines the classes to group THINGs into
+ in the editor picklists. Each line is in the form
+ &quot;Class Name|Colour&quot;. Note that colour is
+ defined as an hexadecimal number with the most
+ significant byte for RED, the middle byte for BLUE and
+ the least significant byte for GREEN. e.g.<p><tt>Monster|0xff0000</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="LINEDEF_CLASSES"></a><b><tt>%LINEDEF_CLASSES</tt></b></td>
+ <td valign="top">Defines the classes to group LINEDEF
+ types into in the editor picklists. Each line is a class
+ name.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="SECTOR_CLASSES"></a><b><tt>%SECTOR_CLASSES</tt></b></td>
+ <td valign="top">Defines the classes to group SECTOR
+ types into in the editor picklists. Each line is in the
+ form &quot;Edit mode|Class Name&quot;. e.g.<p><tt>Doom,Hexen|Lighting</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="THING_TYPES"></a><b><tt>%THING_TYPES</tt></b></td>
+ <td valign="top">Defines the names and IDs of the THINGs
+ supported by DOOM. Each line is in the form
+ &quot;Class|Name|ID|Radius|Sprite Name&quot;. e.g.<p><tt>Monster|Former
+ Human|3004|20|POSSA1</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="THING_FLAGS"></a><b><tt>%THING_FLAGS</tt></b></td>
+ <td valign="top">Defines the flags used when setting a
+ THINGs flags. Each line is in the form &quot;Edit
+ Mode|Group|Mask1|Mask2|Name|Single flag character&quot;.
+ e.g.<p><tt>Doom,Hexen|0|0x01|0x01|Skill 1 and 2|E</tt></p>
+ <p>The group number indicates masks that should be
+ mutually exclusive. Group zero means that the flag can be
+ toggled independently of any other. Other group numbers
+ mean that only one of that group should be set at a time.</p>
+ <p>The ways the masks work is:</p>
+ <blockquote>
+ <p>To see if a flag is set the flags are ANDed with
+ mask1. If the result equals mask2 then the flag is
+ set.</p>
+ <p>When defining flags all the mask1 values are ORed
+ together and those bits cleared from the flags. Then
+ for any option that has been set mask2 is ORed onto
+ the flags.</p>
+ </blockquote>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="LINEDEF_TYPES"></a><b><tt>%LINEDEF_TYPES</tt></b></td>
+ <td valign="top">Defines the names and IDs of the LINEDEF
+ types supported by DOOM. Each line is in the form
+ &quot;Class|ID|Name&quot;, e.g.<p><tt>Special|48|Scrolling
+ wall </tt></p>
+ <p><b>Note:</b> Please note that the text for the LINEDEF
+ types in the supplied config files is taken directly from
+ the Unofficial Doom Specs (see the <a
+ href="thanks.htm#DOOMSPEC">thanks</a> page for details).
+ Please feel free to change them to something more useful
+ if you prefer.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="LINEDEF_FLAGS"></a><b><tt>%LINEDEF_FLAGS</tt></b></td>
+ <td valign="top">Defines the flags used when setting a
+ LINEDEFs flags. The format for this section is identical
+ to <a href="#THING_FLAGS">THING_FLAGS</a>.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>%LINEDEF_FLAGS_EXTRA</tt></b></td>
+ <td valign="top">Configuration so that viDOOM knows which
+ bits control certain functions. If more that one line
+ appears in this section then the last one is used. The
+ form of the line is &quot;Bit number controlling
+ 2-sided|Bit controlling Impassible|Bit controlling lower
+ unpegged|Bit controlling upper unpegged&quot;. e.g.<p><tt>2|0|3|4</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="LINEDEF_DEFAULTS"></a><b><tt>%LINEDEF_DEFAULTS</tt></b></td>
+ <td valign="top">This section must not appear before
+ %LINEDEF_FLAGS_EXTRA and defines the bit patterns for
+ various linedef styles. These are used in the editor so
+ that defining a type of LINEDEF can be quickly done when
+ creating them. The format of each line is
+ &quot;Name|Flags value&quot;, e.g.<p><tt>2-sided
+ wall|0x47</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="SECTOR_TYPES"></a><b><tt>%SECTOR_TYPES</tt></b></td>
+ <td valign="top">Defines the names and IDs for the
+ different sector types. Each line is in the form
+ &quot;Edit Mode|Class|ID|Long name|Short name&quot;. e.g.<p><tt>Doom|Lights|1|Light
+ random off|Random off</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="SECTOR_STYLES"></a><b><tt>%SECTOR_STYLES</tt></b></td>
+ <td valign="top">Defines styles for painting sectors
+ quickly. The form of each line is
+ &quot;Mode|Name|Upper|Middle|Lower|Floor|Ceiling&quot;.
+ e.g.<p><tt>0x19|Quarry|SP_ROCK1|SP_ROCK1|SP_ROCK1|RROCK09|F_SKY1</tt></p>
+ <p>The mode is a bit significant number where the bits
+ have the following meaning:</p>
+ <ul>
+ <li>Bit 0 - Paint textures on the sidedefs facing
+ into this sector</li>
+ <li>Bit 1 - Paint textures on the sidedefs facing out
+ of this sector</li>
+ <li>Bit 2 - Leave current lower/upper settings</li>
+ <li>Bit 3 - Set upper unpegged if an upper texture is
+ painted</li>
+ <li>Bit 4 - Set lower unpegged if a lower texture is
+ painted</li>
+ </ul>
+ <p>If neither bits 2, 3 or 4 are set it is assumed that
+ lower/upper unpegged will be cleared on painting those
+ textures.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="EMPTY_TEXTURE_NAME"></a><b><tt>%EMPTY_TEXTURE_NAME</tt></b></td>
+ <td valign="top">Simply defines the empty texture name
+ used by DOOM. This will generally just be the -
+ character, e.g.<p><tt>%EMPTY_TEXTURE_NAME<br>
+ -</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="NORMAL_TYPES"></a><b><tt>%NORMAL_TYPES</tt></b></td>
+ <td valign="top">Defines the values that define the
+ normal linedefs and sectors. The form of the single line
+ of data is &quot;Id for normal linedef|Id for normal
+ sector&quot;. In all current versions of Doom this is
+ zero, e.g.<p><tt>%NORMAL_TYPES<br>
+ 0|0</tt></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="LINEDEF_CHECK_DEFAULT"></a><b><tt>%LINEDEF_CHECK_DEFAULT</tt></b></td>
+ <td valign="top">Provides an optional default texture to
+ use when a texture is requested when checking linedefs.
+ If this value is defined to be the same as
+ EMPTY_TEXTURE_NAME then the user is prompted for a
+ texture to use, otherwise this texture is used instead,
+ e.g.<p><tt>%LINEDEF_CHECK_DEFAULT<br>
+ ASHWALL</tt></p>
+ <p>See <a href="editing.htm#LINEDEF_KEYS">editing</a> for
+ details on the check linedef operation.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="LINEDEF_GEN_BITMASKS"></a><b><tt>%LINEDEF_GEN_BITMASKS</tt></b></td>
+ <td valign="top">This defines the bitmasks used to
+ represent generalised LINEDEF types (these were
+ introduced by <a href="thanks.htm#BOOM">BOOM</a>).<p>This
+ section is a bit more complex than most of the others as
+ the format of the data is not fixed from line to line.
+ Each set starts with the class name for the bitmask.
+ Format for this line is:</p>
+ <p><tt>class name|no of fields</tt></p>
+ <p>After this follows <em>no of fields</em> repetitions
+ of the following:</p>
+ <p><tt>field name|shorthand name|value</tt></p>
+ <p>e.g.</p>
+ <p><tt>%LINEDEF_GEN_BITMASKS<br>
+ Speed|4<br>
+ Slow|Slow|0<br>
+ Normal|Norm|1<br>
+ Fast|Fast|2<br>
+ Turbo|Turb|3</tt></p>
+ <p>Remember that value will be shifted left a specified
+ amount when used in the <a href="#LINEDEF_GEN_TYPES">LINEDEF_GEN_TYPES</a>
+ section and so they should be defined relative to bit 0.
+ Also note that inside the editor all the values
+ associated with a bitmask are ORed together to create a
+ mask that can extract that information from a generalised
+ linedef. Following all this can follow another class, and
+ so on. Also remember that blank lines and comments are
+ OK, so that sections can be readably split using white
+ space.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="LINEDEF_GEN_TYPES"></a><b><tt>%LINEDEF_GEN_TYPES</tt></b></td>
+ <td valign="top">This defines the groupings of
+ LINEDEF_GEN_BITMASKS to make up different generalised
+ LINEDEF types.<p>This section is a bit more complex than
+ most of the others as the format of<br>
+ the data is not fixed from line to line. Each set starts
+ with the class name describing the name of this type of
+ generalised linedef, the number of different bit patterns
+ defined in the class, the low and high values that the
+ type occupies and a mask used when generating the value.
+ Format for this line is:</p>
+ <p><tt>class name|low value|high value|mask|no of
+ bit-field classes</tt></p>
+ <p>After this follows <em>no of bit-fields </em>repetitions
+ of the following:</p>
+ <p><tt>bit-field name|shift</tt></p>
+ <p>e.g.</p>
+ <p><tt>Locked Door|0x3800|0x3bff|0x3800|5<br>
+ Trigger|0<br>
+ Speed|3<br>
+ Locked door kind|5<br>
+ Opens with|6<br>
+ Number of keys|9</tt></p>
+ <p>The shift defines how much the bitmask is shifted to
+ the left to generate the actual values stored in the
+ linedef type field. Note that along with these bitmask
+ values the mask field is also ORed onto the result to
+ create the entire linedef type value. Following all this
+ can follow another class, and so on. Also remember that
+ blank lines and comments are OK, so that sections can be
+ readably split using white space.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="SECTOR_GEN_BITMASKS"></a><b><tt>%SECTOR_GEN_BITMASKS</tt></b></td>
+ <td valign="top">This works in exactly the same way as <a
+ href="#LINEDEF_GEN_BITMASKS">LINEDEF_GEN_BITMASKS</a>,
+ but is used to define the generalised bitmasks used by a
+ SECTOR.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="SECTOR_GEN_BITMASKS"></a><b><tt>%SECTOR_GEN_TYPES</tt></b></td>
+ <td valign="top">This works in exactly the same way as <a
+ href="#LINEDEF_GEN_TYPES">SECTOR_GEN_BITMASKS</a>, but is
+ used to define the generalised types used by a SECTOR.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a
+ name="HEXEN_ACTION_SPECIAL_CLASSES"></a><b><tt>%HEXEN_ACTION_SPECIAL_CLASSES</tt></b></td>
+ <td valign="top">Defines the classes to group action
+ special types into in the editor picklists. Each line is
+ a class name.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><a name="HEXEN_ACTION_SPECIALS"></a><b><tt>%HEXEN_ACTION_SPECIALS</tt></b></td>
+ <td valign="top">Defines the HEXEN action specials. Each
+ line is of the form &quot;Class
+ Name|Id|Name|arg0,arg1,arg2,arg3,arg4&quot;. Note that
+ not all the argument names need be filled in. e.g.<p><tt>Normal|0|No
+ action|<br>
+ Polyobject|1|Polyobj_StartLine|po,mirror,sound<br>
+ Lighting|116|Light_Strobe|tag,upper,lower,u-tics,l-tics</tt></p>
+ <p>Any arg name that is &quot;tag&quot; is used to work
+ out what sector the special is referring to. This is so
+ that tag highlighting (see <a href="editing.htm">editing</a>
+ for details) still works in HEXEN mode.</p>
+ <p>Note that unfortunately this does not apply to THINGs
+ yet.</p>
+ </td>
+ </tr>
+</table>
+
+<hr size="1">
+
+<h3><a name="CONFIG_DIRECTIVES"></a>Config file directives</h3>
+
+<p>In the config files blocks of lines can be included or
+excluded by surrounding them by enclosing them with directives
+introduced with the @ charcater, e.g.:</p>
+
+<p><tt>@DOOM_LEVEL_STYLE<br>
+%SECTOR_STYLES<br>
+&lt;data&gt;<br>
+@END DOOM_LEVEL_STYLE</tt></p>
+
+<p>As you can see a directive is terminated by putting the same
+directive, beginning with END.</p>
+
+<p>The main purporse of these is to stop SECTOR_STYLES and
+LINEDEF_CHECK_DEFAULT being defined inappropriately (Doom and
+Doom 2 have differing texture names, etc), and also to allow one
+single ZDOOM configuration file to be defined, regardless of
+whether you are using the Doom or Doom 2 IWAD files with it.</p>
+
+<p>The following directives are currently supported:</p>
+
+<table border="1" cellpadding="3">
+ <tr>
+ <td valign="top" nowrap><b><tt>@DOOM_LEVEL_STYLE</tt></b></td>
+ <td valign="top">Includes the lines up to the next <strong><tt>@END
+ DOOM_LEVEL_STYLE</tt></strong> if the <a
+ href="#LEVEL_STYLE">level_style</a> for this game is
+ defined as either <strong>Doom</strong> or <strong>Ultimate
+ Doom</strong>.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>@DOOM_1_LEVEL_STYLE</tt></b></td>
+ <td valign="top">Includes the lines up to the next <strong><tt>@END
+ DOOM_1_LEVEL_STYLE</tt></strong> if the <a
+ href="#LEVEL_STYLE">level_style</a> for this game is
+ defined as <strong>Doom</strong>.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>@ULT_DOOM_LEVEL_STYLE</tt></b></td>
+ <td valign="top">Includes the lines up to the next <strong><tt>@END
+ ULT_DOOM_LEVEL_STYLE</tt></strong> if the <a
+ href="#LEVEL_STYLE">level_style</a> for this game is
+ defined as <strong>Ultimate Doom</strong>.</td>
+ </tr>
+ <tr>
+ <td valign="top" nowrap><b><tt>@DOOM_2_LEVEL_STYLE</tt></b></td>
+ <td valign="top">Includes the lines up to the next <strong><tt>@END
+ DOOM_2_LEVEL_STYLE</tt></strong> if the <a
+ href="#LEVEL_STYLE">level_style</a> for this game is
+ defined as <strong>Doom 2</strong>.</td>
+ </tr>
+</table>
+
+<hr>
+
+<p><a href="index.htm">Back to index</a></p>
+
+<p><tt>$Id$</tt></p>
+</body>
+</html>