			    DeHackEd v. 2.0
			  By Greg Lewis (Tree)
			 gregory.lewis@umich.edu
		   The premiere Doom.exe hack editor!


  This is a general help file for DeHackEd version 2.0.  For more specific
product information, see the file DEHACKED.TXT.  If the information
contained here is not specific enough, or you want more technical details,
get a copy of the the doom.exe hack specs written by Matt Fell.  They are
available for FTP at infant2.sphs.indiana.edu, in the directory
/pub/doom/wad_edit/doomhack, and are called DEHACKER.ZIP.  And, if you
are more interested in simply finding fun stuff to experiment with,
check out "Fun with DeHackEd" (dhefun??.txt) bundled with the program.  It
was written by Dan Lottero, and includes all sorts of wild things to do!


  This help file is arranged in the following nine sections:

	1.  Command Line Options
	2.  DeHackEd.ini Options
	3.  Patch File Info
	4.  Available Keys
	5.  Thing Editor
	   a. Thing fields
	   b. Bit fields
	6.  Frame Editor
	7.  Ammo Editor
	8.  Sound Editor
	9.  Sprite Editor
       10.  Text Editor

  So, without further ado, here it is!


 1. *** Command Line Options
\------======================

  First, an explanation of command line options.  The full command line
syntax for DeHackEd is:

	dehacked [doompath] [-load <patchname>] [-save <patchname>]

  [doompath] is optional, and specifies a different location for the
doom files, doom.exe and doom.wad, other than the current directory.  

  -load <patchname> will update the doom.exe file with the patch called
<patchname> and return to the DOS prompt--great for batch files!.  And,
conversely, the -save <patchname> option will save the current doom.exe
status to a patch file named <patchname> and return to the DOS prompt.
These options are similar to 'l' and 's' in DeHackEd, although when used
in DeHackEd the 'l' option requires a 'w' after it to actually write the
changes to the doom.exe file.  See section 4 for more info on 'l', 's',
and 'w'.

  Example command line:

	dehacked c:\games\doom -load suprwep4.deh

  This will start DeHackEd, using the doom.exe file found in c:\games\doom,
will update it with the info from the suprwep4.deh patch file, and return
to the DOS prompt.  And of course, just typing a plain 'dehacked' will take
you straight into the DeHackEd main program.


 2. *** DeHackEd.ini Options
\------======================

  Included with DeHackEd 2.0 is a new DeHackEd.ini file which can specify
several parameters for DeHackEd.  They allow you to customize where you
want your patch files located, what your doom files are named, and more.
Note: you must keep a space on both sides of the equal signs for a
parameter to be processed properly.  A summary of the allowable command 
line options follows:

  #     Start comment lines with a pound sign.  Anything after the pound 
	sign is ignored.
  doomexe = <exename>
	This is the name of your doom.exe file, and full path if necessary.
	You can change this easily to determine whether you are working
	with a Doom 1.2 exe or a Doom 1.666 exe.  This doesn't need to be
	included if you are running DeHackEd from the directory that your
	doom.exe file resides in.
  doomwad = <wadname>
	This is the name of your doom.wad file, and full path if necessary.
	This must be a registered wad file, not a shareware file.  This is
	needed for verification that you are really registered, and not
	just trying to fake it.  Once again, if this is in the same 
	directory that DeHackEd is run from you don't need this parameter.
  doompath = <path>
	This is the path from which you want Doom to be run.  This is only
	used when using the 'r'un option from inside DeHackEd.
  doomargs = <Doom parameters>
	These are command-line parameters that are fed to Doom when it's
	run using the 'r'un option from within DeHackEd.  Useful if you
	are using DeHackEd for a custom patch for a WAD you are writing;
	you can simply include a '-file <wadname>' in this line, and
	Doom will load your level every time DeHackEd runs it.
  patchdir = <path>
	This is the directory that DeHackEd will look in for patch files.
	A nifty way of keeping all of your thousands of .DEH files out
	of the Doom main directory.

  The following parameters are all totally optional, and need only be 
used if you are doing some "custom" doom.exe hacking.
  doomver = <0 | 1>
	This is the version of Doom you are hacking.  0 is Doom 1.2 and
	1 is Doom 1.666.  This *must* be included if any of the following 
	options are set.
  doomsize = <size>
	The size of your Doom.exe file.  I've had a few people complain
	that they have a non-standard doom.exe file size, and this may
	fix your problem simply by changing this.  If you get erroneous
	results though, you may have to play with the following params...
  thingoff = <offset>
  soundoff = <offset>
  frameoff = <offset>
  spriteoff = <offset>
  ammooff = <offset>
  weaponoff = <offset>
  textoff = <offset>
	These are the offsets in the doom.exe file for their corresponding
	data chunks.  Read Matt Fell's specs if you don't understand what
	these sections are, they are explained fairly clearly (among the
	rest of the information in the file).  PLAY WITH THESE AT YOUR OWN
	RISK.


 3. *** Patch File Info
\------=================

  This is some more info on patch files, which may help explain any
difficulties you are having with them.

  Patch files save ALL the info on Frames, Ammo, Things, Weapons, Sound, 
Sprites, and Text, NOT just changed data.  Saving only changed data would 
involve complications with just what was 'changed' (don't ask, just trust 
me!).  This way, if several people load a specific patch, you KNOW 
everyone will have the same doom.exe file.

  The patch files that DeHackEd 1.3 created saved only 4 pieces of info:
the Frames, Things, Ammo and Weapons.  If you are editing Doom 1.2, 
DeHackEd 2.0 will only save those pieces of information in order to
create a patch file compatible with DeHackEd 1.3.  

  It is a good idea to save back-up patch files before messing around
with your doom.exe file.  The standard naming convention for back-up 
patches is "normal??.deh", where the ?? are replaced with 12 or 16,
depending on your doom version.  Those files are then also used for
merging patches, as a "clean" patch of your doom.exe file.  For example,
if you are merging in a patch for Doom 1.666, DeHackEd expects to find a
clean patch file called "normal16.deh" in your patch directory.

  If anyone is interested in the actual make-up of the patch files (for
compatibility with your own doom exe editor, or for any other purposes)
please contact me and I'll let you know the format that they are stored
in.


 4. *** Available Keys
\------================

  Available keys are as follows:

  ESC   Exits to DOS.  Or, if you are in an input box, or just about
	*anywhere* in the program for that matter, it will back you
	out to whatever you had previously been doing.  This is certainly
	an improvement over 1.3, as many of you will attest.  :-)

  Enter Edits the current field, if it is an editable field.  To leave an
	editing box if you hit Enter by mistake, simply hit ESC.

  Space Views, plays, or displays the current field, if applicable.  If
	you are on a "frame" field, such as any of the Thing frames, or
	any field in the Frame table, or the Frame fields in the Ammo 
	editor, you can see the frame that you've got highlighted simply 
	by hitting the spacebar.  (Note:  If you are on the "Next Frame"
	field in the Frame editor you WILL see the next frame, not the
	current frame.)  If the frame you are viewing is the first in a
	series of frames, repeatedly pressing the spacebar will cycle 
	through all of the frames.  Escape will exit.  The spacebar will
	also view the full text strings in the Text Editor.  And it will
	also play the sounds when you are in a sound field (currently not
	inplemented yet).

  C     The copy command.  This will copy information from one entry to
	another.  The syntax is fairly basic:  enter the number of the
	entry to copy FROM, and the entry number to copy TO.  A clipboard
	for Things is available as Thing #138 (Thing #104 for Doom 1.2),
	which is just a temporary storage Thing (and is not actually
	present in the Doom.exe file).  Note that the Thing names will
	not change... the Thing name is not actually in the Doom.exe, and 
	is just included for your own benefit.  The Thing # is also only 
	for the convenience of the hacker, and is not in the doom.exe 
	file.  A specific Thing # will always have the same Thing Name, 
	and this cannot be changed.

  D     Change numeric mode to Decimal.  This displays all numbers as
	normal decimal numbers.  'H' will switch to hexidecimal displays,
	which may be helpful sometimes.

  G     Goes to a specific Thing.  If you know exactly which Thing or
	Frame you want to see, jump right to it without bothering to
	arrow or page down.  The Things now have a goto window arranged
	alphabetically by name.  That's so that you don't need to remember
	lots of Thing numbers all the time!

  H     Displays all numbers in the hexidecimal number format.  Useful
	for those true hackers who live in hex their whole lives.  Use
	'D' to return to the normal decimal world.

  J     Jumps to the information in the current field, in it's respec-
	tive editor.  For example, if you are in the Thing editor, and the
	'Death Frame' is highlighted, and you press the 'j' key, you will
	jump to the Frame editor, with the corresponding Frame number high-
	lighted.  A very handy tool for moving around the various editors.
	Generally it'll jump to a "logical" place, if there is one.

  L     Loads a patch file.  You must enter the patch filename, and it
	will replace the current information.  Note that 'w' must still
	be used to make the changes permanent.  You can also do this
	from the command line by typing
		dehacked -load <filename>
	One caveat:  the load feature was just recently changed to
	allow automatic conversion of 1.2 patch files to 1.666 files.
	With the few patches I've tested i have not noticed any problems
	loading 1.2 patch files into 1.666.  However, 1.666 to 1.2 will
	NOT work.

  M     Merges a new patch file into Doom.  The 'l'oad option overwrites
	all information with the information from the new patch file.  
	The 'm'erge option compares the patch file that you specify with
	a "normal" patch file, and only changes data that is *different*
	between the two files.  It will not always give the expected
	results when the new patch file changes something that's already
	changed in the current doom.exe, but it will usually work.  Also,
	you will need to have a "normal" patch file for Doom to compare
	against.  See the section on patch files for more information on
	those patch files.  I have been having a few problems with this
	particular command, and I'm checking into it to see if I can
	pinpoint the problems.  It should be fixed by next release.

  R     Runs Doom.  This option is slightly tempermental, for reasons
	unknown to me.  If you have plenty of memory, try hitting it to see
	if it'll work.  It allows you to quickly test-run Doom, to check out
	the changes you've made (remember to hit 'w' before running!).  
	After Doom finishes, you will be returned to your current place in 
	the editor to continue working.  You can specify command-line
	parameters for Doom, and the directory to run Doom from in the
	DeHackEd.ini file.

  S     Save a patch file.  You must enter the patch filename, and it
	will save all editable material to the patch file.  It saves either
	a 1.2 patch or 1.666 patch depending on what doom.exe you are 
	editing at the time.  You can also do this from the command line 
	by typing
		dehacked -save <filename>

  U     Undo all changes.  This reloads the information straight from the
	doom.exe file, and will return you to your most recent 'w'rite
	of the doom.exe file.

  W     Writes all changes to the doom.exe file.  This step is necessary
	to get any results!

  F2    Thing Editor.  This is the main Thing editor, the default screen in
	DeHackEd 2.0.  See section 5 for more detailed Thing info.

  F3    Frame Table.  Displays Frame information, in a list format.
	See section 6 for more detailed Frame info.

  F4    Ammo/Weapon Editor.  This allows you to edit the ammo and weapon
	amounts and graphics.

  F5    Sound Table.  A jolly good table of all the sounds.  Editing of the
	sounds is included in DeHackEd 2.0.

  F6    Sprite Table.  A handy list of all the sprites, in case someone
	needs it.  Also has recently added editing capabilities.

  F7    Text Editor.  This shows all the text strings in the Doom.exe file.
	You can also edit the strings, a capability new to DeHackEd.

  F8    Thing List.  This is a Table version of the Thing editor.  It shows
	only the most important Thing information, and is meant as a quick-
	reference guide.


 5. *** Thing Editor
\------==============

a.  Thing fields

  This is the first thing you see when you start up DeHackEd.  It is also
  one of the main areas of the program.  Edit Things by highlighting the 
  desired field and hitting Enter.

  Thing Number:      The number of the Thing.  Basically it's just for
	reference, numbered in order according to how the Things are stored 
	in the doom.exe file.  Note: these are different between 1.2 and 
	1.666, because new Things have been added!
  Thing Name:        A short descriptive name for the Thing.  This info
	is NOT stored in the Doom.exe file, and thus you can't edit it, and 
	it will always remain the same.  So a Thing #55 (the rocket launcher
	in Doom 1.2) will always be described as a "Rocket Launcher", even if 
	you change it to something entirely different, like a Cacodemon.
  Thing ID#:         This is the Thing's 'identification number' which is 
	used in level developement (WAD files).  Wherever this number appears 
	in a WAD file, this Thing will appear.
  Hit Points:        How much damage it can sustain.  For all non-living 
	Things, it's generally 1000 (not necessary though).
  Speed:             How fast it can go.  Projectiles have their speed
	multiplied by 65536, but DeHackEd displays projectiles the same way 
	it does normal speeds (so you don't need to wade though large numbers 
	for projectile speeds).  Whether a certain is a projectile or not is
	determined by bit #10, 'Projectile/player'.  If that bit is set, the
	speed is displayed as a Projectile, otherwise it is a "normal" speed.
	Basically though, just ignore it and DeHackEd will take care of it
	for you.  :-)
  Width:             The radius of the Thing.  A narrow Thing is harder 
	to hit!  To fit a Thing through a narrow passageway, you need to 
	have the passage slightly wider than twice it's width.  Thus a 
	passage must be 33 to allow the Marine through, even though his 
	actual radius is 16.
  Height:            Same as width, but it's height.  Duh.  :-)
  Missile Damage:    If it's a projectile, how much damage it does upon 
	"death" (explosion).  Note that Lost Souls have this set to 3.
  Reaction Time:     For monsters, their reaction time.  Lower=quicker to 
	attack, higher=slower to attack.
  Pain Chance:       Chance out of 256 that a monster's action/attack will 
	be interrupted by an injury.  The Lost Soul always will (256), and 
	the Spider Boss very rarely will (40).
  Mass:              Thing's mass.  Set a trooper's to 1 and watch him fly!  
	Note the Cyberdemon has a high mass, and your rockets don't budge 
	him much.
  Bits:              This is the actual value of all of the bits.  Just
	change this one number if you want to set all of the bits at once
	to something.  See also the Bit fields portion of the text, coming
	up in a few pages or so.

  SOUNDS
  Alert:             Sound made when the monster first spots the player,
	or a projectile is launched.  These all point to the sounds in the 
	Sound table.
  Attack:            Sound made during a close attack.
  Pain:              Sound made when the Thing is injured.
  Death:             Sound made when the Thing dies.  For projectiles and 
	barrels, the sound of it's explosion.
  Action:            Sound made when the Thing is just milling around.

  FRAMES
  First Normal:      What an inactive thing looks like, or a monster that's 
	not yet active.  All frame numbers refer to the Frame table.  Only
	the first frame is listed, you will need to refer to that Frame
	entry in the Frame table to find out if it's actually a sequence of
	frames.
  First Moving:      A movable Thing's "first steps."
  Injury:            Frame played for an injured Thing.
  Close Attack:      Attacks that are close (clawing imps).
  Far Attack:        Attacks that are far away (imp winding up for a
			fireball attack).
  Death:             Monster death or barrel/projectile explosion.
  Explode Death:     Exploding death (slop!) for players, troopers,
			imps, and sargeants.
  Respawn:           This is the frame that's shown when the Thing comes
	back to life due to the ArchVile.  This field is only shown for 
	Doom 1.666.


b.  Bit Editor

   0.Gettable Thing:      Something that can be picked up by the player, 
	like an ammo clip.
   1.Obstacle:            Something that can't be walked through.
   2.Shootable Thing:     It will only take damage if this is set.  Note 
	that barrels also have this set.
   3.Total Invisibility:  The Thing just can't be seen, no-how, no-way.  It
	won't even show up with iddt-iddt.  The technical reason for this
	is that it isn't included in the list of objects in the Sector, and
	thus isn't even considered for drawing.
   4.'Automatics':        From Jason Gorski:  "Okay well if you don't want
	your weapons to auto-lock onto something set the automatics to yes."
	Basically Things like PUFF, TFOG, BLUD, and projectiles.
   5.Unknown              ???  If you find out what any of the Unknowns do, 
	please let me know so I can include it in future versions!
   6.In Pain:             Used internally by the doom.exe to determine if a
	monster is in pain or not.
   7.Unknown              ???
   8.Hangs From Ceiling:  For those gory legs & mangled bodies.  Have it set,
	well, if the Thing hangs from the ceiling!
   9.No Gravity:          Used for floating monsters and Things that aren't 
	on the ground.
  10.Proj/players:        Set for projectiles and players... ??
  11.Can pick up items:   This Thing (i.e. the player) can pick up Gettable
	Things.
  12.No Clipping:         Same effect as idspispopd, but also effective for
	monsters.
  13.Unknown              ???
  14.Floating:            For floating monsters, like the Cacodemon and the
	Lost Soul.
  15.Semi-No Clipping:    Kinda like idspispopd, kinda not.  You can't walk
	through walls, or trigger any linedefs, but you can walk over any
	height cliffs.
  16.Projectiles:         Set for projectiles.
  17.Disappearing Weapon: This is used for weapons such as the shotgun that
	the sargeants use, so that it disappears when picked up in a multi-
	player game.  Normal weapons do not have this set, however, because
	they stick around in normal multi-player games when picked up.
  18.Partial Invisibilty: The Spectre effect.
  19.Blood (vs. puffs):   Whether a thing bleeds (bit off) or puffs (bit on)
	when hit.  The barrel is the only default Thing that has this set.
  20.Sliding Helpless:    ???  (Try setting this and bit 7??)
  21.Unknown              ???
  22.Counts for Kill%     This Thing counts as part of the Kill% at the end
	of the level.
  23.Counts for Item%     Just like Kill%, but for Things.
  24.Unknown              ???
  25.Not in Deathmatch:   Things not present in Deathmatch mode, such as keys
	and the normal "Player" starting spots (deathmatch spots are used
	instead).
  26.Color 1              00-greens->greens       01-greens->browns
  27.Color 2              10-greens->indigos      11-greens->dark reds
  28.Unknown             \
  29.Unknown              Perhaps these are unused???
  30.Unknown             /
  31.Unknown            /

 6. *** Frame Editor
\------==============

  This displays the majority of the Frame information.  Each frame has six
  editable fields.  The only two fields that are NOT shown on the screen
  are always 0 in all of the Frames.  Go figure.

  Frame #:           This is the number that is specified in the Thing 
	Frame fields.
  Name:              A lookup done on the Text info in the doom.exe file,
	specified by a reference to the Sprite #, the Sprite Table, and
	the Sprite subnumber.
  Sprite #:          The sprite that is shown for this Frame.
  Sprite Sub #:      The individual "picture" (for lack of a better
	word... I think the technical term is "lump") suffix for this Frame.
	In the Doom.wad, there is (for example) a Sprite called TROO, for the
	trooper.  The sub # specifies which TROO picture to use... TROOA,
	TROOB, TROOC, etc.
  Bright Sprite:     This check box is not actually included in the
	Doom.exe file.  The Sprite subnumber is multiplied by 32768 if the
	Sprite is to always be displayed at it's full brightness.  I've
	just changed that into a check box to make it easier to make a
	Sprite bright, or not-bright.  Sprites that are always displayed
	at their full brightness are Lost Souls, plasma bullets, etc... they
	are always visible no matter what the lighting is.
  Next Frame #:      Which Frame to play next.  You can skip a few shotgun
	frames this way, to make the super-fast ("combat") shotgun.
  Duration:          How long the frame stays on the screen.  Make 'em
	all 1 to make the super fast shotgun *really* be super fast!  Notice
	that the notoriously slow BFG has a value of 20 and 10 for a few of
	its Frames.  (hint hint... =)
  Code pointer:      An offset in the doom.exe file to where it should
	look for the "action" associated with this Frame.  It appears after
	more digging that this value is really useless.  The actual location
	in the code is specified by a relocation table elsewhere in the
	doom.exe, which is referred to instead of the code pointer.


 7. *** Ammo Editor
\------=============

  Weapon Name:       The name of the weapon (not editable)
  Ammo Type:         A pithy description.  This will be 'N/A' when an 
	'unknown' ammo type is given for the Ammo Number.  Ammo type 5 is
	listed as "Unlimited".
  Ammo Number:       0=bullets       3=rockets
		     1=shells        4= ??? (none)
		     2=cells         5=unlimited (fist/chainsaw)
  Max ammo cap:      The starting capacity for the current type of ammo.  
	It's listed on the right side of the slash on the status bar.  
	Backpacks will double this limit automatically.  This will be 'N/A' 
	for unknown ammo types.
  Ammo per item:     How much ammo you get when you pick up a power-up of the 
	current ammo type.  For example, normally the bullet power-up gives 
	you 10 bullets.  This value is multiplied by 5 for the 'large' 
	power-ups, i.e. boxes of rockets, boxes of shells, etc.  Different 
	difficulty modes also change this.  Also 'N/A' for unknown types.
  Bobbing1-3 frame:  Frame numbers for the bobbing weapon.  This is the
	number that Doom refers to in the Frame list for more information.
  Shooting frame:    Frame played when the weapon shoots.
  Firing frame:      Frame that actually shows the "flames" from the
	weapon.


 8. *** Sound Editor
\------==============
	
  Sound Number:      This is the number that's referenced by the Things
	for each sound.
  Text Offset:       The offset into the Text section where the sound 
	name is found.
  Sound Name:        Found by simply checking the Text section at the
	correct offset.
  0 / 1:             ??? Perhaps some complicated sound thingy.   
  Value:             ??? Another unknown sound value, perhaps something 
	dealing with how the sound was sampled.

  Ammo per item:     How much ammo you get when you pick up a power-up of the 
	current ammo type.  For example, normally the bullet power-up gives 


 9. *** Sprite Editor
\------===============

  Sprite Number:     The number in the Frame table that refences this
	Sprite.
  Text Offset:       The offset into the Text section where the Sprite
	name is found.
  Sprite Name:       Also found through a simple lookup in the Text
	section.


10. *** Text Editor
\------=============

  Text Offset:       The offset into the Text section of the current
	Text string.
  Text:              This is the actual text that's located at the
	text offset.

  Some notes are in order on the Text viewing, editing, etc.  First of
all, if the Text is longer than about 60 characters (too long to fit on
one line in the general Text screen) three ellipses are displayed at the
end of the line.  Non-printing characters, such as new-lines, tabs, and
other screwy characters are shown by a tilde symbol in the text (~).  

  If you want to view the actual text, just hit the Spacebar and a window
will pop up with the actual text string in it.  A newline is shown by a
'\n' shown in black (dark grey), tabs by '\t' in black, and so on.  The
text is formatted in basically the same way that it would be on-screen.

  To edit the text, just hit Enter and the view window and an edit window
will pop up.  Enter your new text in the edit window, and hit Escape when
you are done editing.  If you are hitting Escape to cancel the current
editing operation, answer 'n'o when asked if you want your changes saved,
otherwise answer 'y'es and the text will change to your modification.

  Because each text string is variable length in the doom.exe file, you have
a slight lee-way in how long the edited text needs to be.  The minimum and
maximum length for the string you are editing are shown on the top line
of the editing window, along with the current number of character.  
Generally you will have a range of 4 characters that the new string must
fit into.  Typing beyond the maximum number of characters is not allowed,
and stopping short of the minimum is also not allowed.

  The text editor is not exactly a full-fledged version of Wordperfect, so
the only movement key you have is the back-space...  no arrow keys, no
macros, no spell checker, etc. :-)


  That's about it.  Any more question?  Feel free to write me at
gregory.lewis@umich.edu for more information.  Have fun!
