                  M.D.E. - "My DOOM Editor"
                    by Patrick J. Steele

Copyright (c) 1994, Patrick J. Steele
Version 1.0
Additional design/input by Steven Spalding and Kevin Plancke

** NEW TO VERSION 1.00 **
-------------------------

     * PWAD support!  MDE will now create a PWAD instead of
     modifying your original DOOM.WAD.  A PWAD is a small
     WAD file with only the information for one level -
     great for uploading to bbs'!
     
     * Enhanced user interface!  Now objects, wall textures
     and floor textures have a "windows-like" listbox from
     which to make your selections.
     
     * The listbox mentioned above has a "preview" option to
     look at the floor/ceiling textures as well as the wall
     textures!
     
     * The floor/ceiling texture display (as well as the new
     wall display) have been greatly speeded up!
     
     * Color-coded objects!  The map is easier to view and
     setup with the addition of color codes for the
     different objects.
     
     * Deaf creatures!  You can now modify the behavior of
     the DOOM creatures.  Deaf creatures will not move until
     they actually see you, while "non-deaf" creatures will
     start hunting you down as soon as they hear all the
     racket you're making!
     
     * Thanks to the new DOOM specs (v1.2) all of the
     Linedef attributes are known, and modifiable, in MDE.
     
     * A "Use Last" button when changing wall textures!
     This button allows you to quickly copy wall textures to
     different walls.
     
     * MDE now has a batch file to load/unload the video
     driver automatically.
     
FASTGRAPH/LIGHT
---------------

This program is using FastGraph/Light, a powerful graphics
library for C/C++, BASIC, PASCAL and FORTRAN.  I highly
recommend it to all programmers looking for a fast graphics
library that supports a *lot* of video cards/modes.
Contact:

                     Ted Gruber Software
                        PO Box 13408
                     Las Vegas, NV 89112
                 Orders/Info (702) 735-1980
                     FAX (702) 735-4603
                     BBS (702) 796-7134

The one drawback is the external driver needed to run
FG/Light applications.  It's included with MDE and it must
be loaded before running MDE.  It takes about 120k of
conventional memory.  The full blown version of FastGraph
does not require this driver (and it has a lot more
features), but it was $150 more than FG/Light ($49).  So, I
hope you have enough memory to run MDE.  I still need to do
more testing to determine the minimum amount needed to run.

LEGAL NOTICE
------------

MDE will only work with the registered version of DOOM.  If
you only have the shareware version, I strongly suggest you
register.  The $46 is well worth it.  Episodes 2 and 3 are
fantastic!

MDE is Copyright(c) 1994 by Patrick J. Steele.  MDE is not
an id Software product and id Software cannot provide any
support or assistance for MDE.  Also, id Software cannot
provide any support for any levels modified by MDE.

THANKS
------

A special thanks goes out to Steven Spalding and Kevin
Plancke for beta testing MDE and providing some really neat
ideas.  Thanks guys!

INSTRUCTIONS
------------

To run MDE, simply enter, "MDE" at the DOS prompt.  The
FastGraph video driver will be installed and MDE will run
(NOTE: The driver will automatically be unloaded after you
exit MDE).  You will be prompted with a selection screen.
You can use the arrow keys to select the episode and level
number you want to edit.  Any other keys will be used as
input into the bottom field where the location of your
DOOM.WAD is located.  You need to include the DOOM.WAD in
the filename.  Example: If you have DOOM installed on the E:
drive in a directory named "DOOM", your path would be:

E:\DOOM\DOOM.WAD

Once you've entered the location of your DOOM.WAD and
selected a map, press <Return> to edit the map.

You will be given an overhead view of the map.  The red dots
are creatures, the blue dots are objects you can pick up or
interact with (ammo, weapons, keys, health, etc.), the
yellow dots are the rest of the miscellaneous items (trees,
candles, dead bodies, etc.) and the green points are
vertexes.  Move the mouse to the edges of the screen and the
map will automatically scroll.

Press the left mouse button while pointing to an object or a
vector to bring up detailed information.

FOR OBJECTS:

     You may change what the object is, the angle it faces,
     what skill levels it will appear on and whether it will
     show up only in network play.
     
     For setting the angle, the following numbers are used:
     
                     9 0
               135    |    45
           180       -+-       0
               225    |    315
                     270
     
     
     The option to set a deaf creature is also available.  A
     deaf creature will not attack you, no matter how much
     noise you're making, unless he can actually see you.  A
     "non-deaf" creature will start moving and searching for
     you once he hears you shooting.  This option is great
     to create an ambush situation.  Place about 5 "non-
     deaf" sergeants around a corner.  Then place a former
     human at the end of the hall leading to that corner.
     The DOOM player will take a few shots at the former
     human, and the guards will growl to life and suddenly,
     the player is faced with 5 angry sergeant blasting away
     at him!

FOR VERTEXES:

     In the DOOM maps, two vertexes form a line (called a
     "linedef" in the WAD file).  A line consists of a
     "from" vertex and a "to" vertex.  When you select a
     vertex, MDE will display a green line that corresponds
     to a linedef.  MDE assumes the vertex you selected was
     the "from" vertex.
     
     NOTE: Some lines are formed by two vertexes at the same
     x,y location.  Example:
     
               1
               |
               |
               |
               2------------4
               |
               |
               |
               3
     
     This map shows a line going from 1 to 2, a line from 2
     to 3, and a line from 2 to 4.  If you select vertex 2,
     MDE will find the first line that uses vertex 2 as the
     "from" vertex.  If the line from 2 to 3 was the first
     one, that line would always be selected.  To tell MDE
     to ignore the first instance of the vertex, hold the
     ALT key down while pressing the left mouse button on a
     vertex.  In this example, the result would be the line
     from 2 to 4 being selected.
     
     Once a line is selected, a dialog box will display
     information for that "linedef".  A sample dialog box is
     show below:
     
          +------------------------------------------------+
          | Attrib |Impass | |MBlock | |2-sided| |BlkSnd | |
          |        |Up-Upeg| |Lo-Upeg| |NoMap  | |StrtMap| |
          |        |Secret |                               |
          |                                                |
          |   Type  000  |+|  |-|    Trigger  000 |+|  |-| |
          |                                                |
          |       |Edit R Side|      |Edit L Side|         |
          +------------------------------------------------+
     
     
     NOTE: The "Edit L Side" button will only be displayed
     if there is a left sidedef (explained later) for this
     line.
     
          "Impass" - This toggle button will make a line
          impassable by the DOOM player.  This is generally
          used along walls and the edge of the DOOM
          playfield.
          
          "MBlock" - When pressed, this toggle button will
          block a monster from passing this line.
          
          "2-sided" - This attribute tells the DOOM engine
          that this line has two sides - so if no wall
          texture is defined, the wall is transparent.  Wall
          textures are discussed later.
          
          "BlkSnd" - When pressed, this toggle button will
          block sound from passing the selected line.
          
          "Up-Upeg" and "Lo-Upeg" - These attributes tell
          the DOOM engine whether the above (upper) and
          below (lower) wall textures (explained later) are
          "pegged" or not.  A pegged texture will move along
          the sector it's defined when the sector moves
          (changes height).  An unpegged texture will not
          move.  It's a difficult thing to explain.  Try and
          look at it graphically:
          
          Imagine the "above" texture being the numbers 1-5
          listed vertically - here's the effect of the wall
          texture on a line that is "unpegged".
          
          |  1  |  |  1  |  |  1  |  |  1  |  |  1  |
          +-----+  |  2  |  |  2  |  |  2  |  |  2  |
                   +-----+  |  3  |  |  3  |  |  3  |
                            +-----+  |  4  |  |  4  |
                                     +-----+  |  5  |
                                              +-----+
          
          It looks "funny".  The wall doesn't actually look
          like it's "moving" down.  If you set the texture
          to be "pegged", the effect will be like this:
          
          |  5  |  |  4  |  |  3  |  |  2  |  |  1  |
          +-----+  |  5  |  |  4  |  |  3  |  |  2  |
                   +-----+  |  5  |  |  4  |  |  3  |
                            +-----+  |  5  |  |  4  |
                                     +-----+  |  5  |
                                              +-----+
          
          See the difference?  The five is always at the
          bottom of the wall.  The "above" texture "moves"
          with the wall.  You will see pegged textures with
          doors, since you want the texture to move up as
          the door opens.
          
          "NoMap" - When this button is pressed, the
          selected line will not show up on the map - even
          when the Computer Map is found.
          
          "StrtMap" - When this button is pressed, the
          selected line will show up on the map at the
          beginning of the level - even if you haven't seen
          the line yet.
          
          "Special" - This button will make the automapper
          draw the selected line as a normal line -
          protecting any secret area until the secret is
          opened.  This option has nothing to do with the
          secret percentage at the end of a level.
          
          "Type" - The primary use of this field is for
          special "trigger" functions (explained later).
          
          "Trigger" - This field will tie a line and a
          sector (or sectors) together, so when this line is
          crossed or the wall this line defines is pushed,
          something will happen in the sector(s) with the
          same trigger number.  That "something" will depend
          on the "Type" field.  For example, the value 35 in
          the Type field will cause a sector to go dark
          (loose all light) when the line is crossed.
          Triggers will be discussed in more detail later.
          
          For the "Type" and "Trigger" fields, click the +/-
          buttons to increase and decrease the values.  Hold
          down the control key while clicking with the mouse
          to change the value by 10.
          
     Clicking on one of the two "Edit Side" buttons will
     bring up information for a sidedef (explained later).
     A sample dialog box for a sidedef is show below:
     
               +-----------------------------+
               | T-above -           |?|     |
               | T-norml STARTAN3    |?|     |
               | T-below -           |?|     |
               |                             |
               | |Edit Sector|     |Restore| |
               | |Use Last   |               |
               +-----------------------------+
               
          "T-above" shows the name of the texture used to
          define the area of a wall "above" a sector where
          there is an adjacent sector with a lower ceiling.
          
          "T-norml" is the name of the normal (eye-level)
          texture used to define the wall image.
     
          "T-below" is the name of the texture used to
          define the area of a wall "below" a sector where
          there is an adjacent sector with a higher floor.
          
          For the 3 texture fields, click the ? button next
          to the texture name to display a list of available
          wall textures.  The 'T' and 'B' keys in the
          listbox allow you to quickly move to the top and
          bottom of the list.  The up and down triangle move
          the list in pages, while the up and down arrows
          move through the selections displayed.  To see
          what a wall texture looks like click on the
          "Preview" button.  When you are done viewing the
          wall, press the right mouse button to continue.
          Select "Ok" to use the selected texture or
          "Cancel" to ignore your selection.
          
          A texture of "-" means there is nothing defined
          for that texture.  See the "DETAILED INFORMATION"
          section below for help on these fields.
     
          "Edit Sector" will bring up detailed info about
          the sector this sidedef surrounds (defines).  You
          may change a sectors' floor/ceiling texture,
          floor/ceiling height, the amount of light in the
          sector, set up special flags for the sector
          (radioactive damage, flickering lights, pulsating
          lights, etc.) and set the trigger number for
          special effects.
          
          "Restore" will restore the texture names to the
          ones first displayed in this dialog box.  If you
          made a mistake in the selection of wall textures,
          press "Restore" to bring the old names back.  Once
          you leave this dialog box, the names are saved in
          memory for the rest of the editing session.
          
          "Use Last" will use names of the textures from the
          last "side" you edited.  This is handy for copying
          a common set of textures across multiple lines.
          
     When you press the "Edit Sector" button, a third dialog
     box will appear with information for that sector.  A
     sample is show below:
     
               +---------------------------------+
               | Ceiling  CEIL3_5     72  +   -  |
               |   Floor FLOOR4_2      0  +   -  |
               |   Light 144  +  -               |
               | Special   0  +  -               |
               | Trigger   0  +  -               |
               +---------------------------------+
          
          "Ceiling" and "Floor" shows the name of the
          texture used on the ceiling and the floor,
          respectively (CEIL3_5 and FLOOR4_2 in this
          example), the ceiling height (72) and the floor
          height (0) and the usual +/- buttons for changing
          the height of the ceiling/floor.  Click on the
          texture name to change the ceiling or floor
          texture.  A listbox will appear allowing you to
          select a new texture.  Since floor and ceiling
          textures are so small, the preview button is
          enabled while you scroll through your selections.
          
          The ranges for the ceiling/floor seem to be from
          512 to -264.  A difference of more than 28 will
          prevent the DOOM player from crossing into a
          higher sector.  The DOOM player may fall any
          distance.
          
          "Light" displays the light level for the sector.
          The ranges are from 0 (very dark!) to 255 (full
          light)
          
          "Special" - set special flags for this sector.  In
          the list below, sectors that cause damage have two
          percentages listed.  The first percentage is the
          damage when playing at skill level 1, the second
          percentage is the damage playing at skill levels 2
          and above.  The current known values for "Special"
          are:
          
               0 - Normal sector
               1 - light level blinks randomly
               2 - light quickly blinks for 0.5 seconds
               3 - light quickly blinks for 1.0 second
               4 - lights pulsate and 10%/20% health loss
               5 - 5%/10% health loss
               7 - 2%/5% health loss (typical green acid)
               8 - light oscillate from 255 to light level
               of adjacent sector
               9 - secret sector (increments the # of
               secrets found)
               10 - unknown
               11 - 10%/20% health loss and takes player out
               of god mode
               12 - blink (down to very dark)
               13 - quick pulsate
               16 - 10%/20% health loss
          
          Values other than those listed can cause DOOM to
          crash with a "UNKNOWN SPECIAL SECTOR" error.
          
          "Trigger" - This will tie a sector and a linedef
          together.  Set this field to the same number as
          the trigger field in a linedef to "connect" the
          sector and linedef.  The number used to connect
          the sector can be any number you want, just make
          it unique.
     
     Click the right mouse button to back out of all of
     these menus.

OBJECT MOVEMENT
---------------

To move an object, select it with the right mouse button.
While holding down the right mouse button, drag the object
where you want it and release the mouse button.

KEYS
----

Press 'W' to write your changes to a PWAD file.  If you
don't press 'W' your changes will not be saved!  MDE will
warn you if you try to exit without saving your changes.
The name of the PWAD will be MDE_ExMy.WAD where 'x' is the
episode # (1-3) and 'y' is the level # (1-9).  Press [ESC]
to exit the program.

To run DOOM with your PWAD file, simply run DOOM with the
following command:

DOOM -file [your wad file]

Example: If you modified episode 2, level 6 and saved the
PWAD (MDE_E2M6.WAD), run DOOM as:

DOOM -file mde_e2m6.wad

DETAILED INFORMATION
--------------------

Here's some more detailed info about MDE.  The moving and
changing of objects is pretty straightforward.  What I'll
explain here is the options you have with the vertexes,
sidedefs and sectors.  If you want to understand more of
what's here, I've included a copy of "The Unofficial DOOM
Specs v1.2".  That's what made this editor possible and it
may explain better what I'm about to describe.

Each line will have at least one side defined, called a
"sidedef", or possibly two.  A line will only have one
sidedef if the DOOM player will never see the other side.
For example, on the first level of episode one, the DOOM
player can turn around 180 degrees and see a door.  There is
no way (except with cheat codes) for the player to be on the
other side of that door, so that line only has one sidedef.

An example of a line with two sidedefs is also on the first
level of episode one.  If you look out the window to the
right, there's the familiar pool of ooze with the combat
(blue) armor.  The lines defining that pool of acid have two
sidedefs, the side that faces "in" the pool of acid, and the
side that faces "out" of the pool.

All of the lines in DOOM have a 'from' vertex and a 'to'
vertex.  As noted earlier, when you select a vertex, MDE
will find a line based on the point you select being the
'from' vertex.  When you select a vertex with the left mouse
button, hold down the mouse button.  The line will be high-
lighted in green so you can see the entire line.  The 'from'
and 'to' vertexes for a line also establish a direction for
the line.  Consider the picture below:

            "left side"            "right side"
     From------------------->To<-----------------From
            "right side"           "left side"

If you were standing with your back to the 'from' vertex and
your head facing the 'to' vertex, you would see that your
right arm is on the "right" side of the line and your left
arm is on the "left" side of the line.

When you release the mouse button, the dialog box for the
line displays.  The button "Edit R Side" allows you to edit
the right side of the line.  The "Edit L Side" button allows
you to edit the left side of the line.  This is cumbersome
at first, but after a while, you'll get used to it.

As noted above, each line has at least one sidedef.  A
collection of sidedefs forms (or "defines/surrounds") a
sector.  A sector is where the floor/ceiling altitude is
defined and where the lighting and special flags (for acid
damage, etc.) are defined.  You may edit the altitude of the
floor and the ceiling, set the light level, and set special
flags for the sector.  You may also tie a line to a sector
with the "Trigger" field.

SIDEDEF TEXTURES
----------------

The three texture names for a sidedef, T-above, T-norml, and
T-below, all have special meaning.  The T-norml level is
easy - it's the "eye-level" texture for the wall.  The above
and below names are a little tricky.

The above texture tells DOOM what to draw "above" a sector,
if the sector's ceiling is lower than an adjacent sector.
Episode 1, Level 1 will give us a good example.

Start on this level, and go the left.  When you stand at the
base of the stairs (leading up to the armor), there are two
columns with some pulsating lights.  This is an example of a
sector with a lower ceiling than an adjacent sector.

At the top of the column is a kind of diamond shaped light.
That is the ceiling texture for that sector.  The sector you
are standing in has a higher ceiling than the column, thus
DOOM needs to know what to draw "above" the column.  If you
look at sidedef1 for each of the 4 sides of the column, T-
above is set to TEKWALL4.

This same reasoning applies to the below texture.  If the
column and gone all the way to the floor, you wouldn't need
a below texture.  However, the floor of the column is
"higher" than the "adjacent" sector (which is the sector you
are standing in).  DOOM needs to know what to draw under the
floor.

TRIGGERS
--------

To get a sector "tied in" to a line, set the "Trigger" field
for the linedef and the sector to the same value (any value
you make up is fine - just make sure it's not in use by some
other trigger).  Once a line and sector are tied together
(by having the same trigger number), you can define what
will happen to the sector when the line is crossed, or a
button along the line is pushed.

The "Type" field of a line will determine what will happen
in the "tied in" sector.  The DOOM specs do an excellent job
of listing all of the values currently known.  Instead of
duplicating the effort, please consult the DOOM specs for
the trigger values.

One note about teleporters (trigger 39 and 97):  Teleporters
*require* a teleport destination object to be in the sector
the trigger is tied to.  You will teleport into the sector
that is "tied in" to the linedef.  If a DOOM player crosses
a line with a type of 39 or 97, DOOM will look for the
sector the line is tied to.  If there is no teleport
destination object in that sector, the teleport will not
work (nothing will happen).  If there is a teleport
destination object, the player will be placed there and will
be facing whatever direction the object is pointed in.

THE END?
--------

Ok, now I need to know what you think.  I need all feedback
- good/bad/wants/needs.  Please leave feedback to me on:

     Software Creations: (508) 368-7036
              User name: Patrick Steele
     
     Internet: patrick.steele@swcbbs.com
     
COMING UP
---------

* Creating maps!  Right now, there are a few editors out
there that let you edit/create levels.  As soon as I get a
hold of some code for the internal structures of the WAD
file that need to be re-created when walls are added/moved,
I'll start work on MDE to allow map creation!

* Because of memory requirements, Episode #2, Level 7 can
not be loaded into MDE.  It's a huge level (almost 200k of
data!)  I'm going to use expanded memory (EMM) in my next
version of MDE to reduce the amount of conventional memory
required.  With EMM, adding objects will be available!

* One of my beta testers, Steve Spalding, suggested some
kind of utility to easily run DOOM with multiple PWAD files
(instead of typing them all in at the command line).  I'm
looking into that.

