HHE v1.1 By Greg Lewis (Tree) gregl@umich.edu This is a general help file for HHE version 1.1. For more specific product information, see the file HHE.TXT. For important start-up info and instructions, read README.TXT. This help file is arranged in the following sections: 1. A Glossary 2. Patch File Info 3. Command Line Options 4. HHE.INI Options 5. Available Keys 6. Mouse Support 7. Thing Editor a. Thing fields b. Bit fields 8. Frame Editor 9. Ammo Editor 10. Sound Editor 11. Sprite Editor 12. Text Editor So, without further ado, here it is! 1. *** A Glossary \------============ There are a few new terms that I will be using throughout this file, so first off I'll define everything and explain it in simple terms. Thing: A Thing in Heretic is any object that's in the game, such as monsters, the player, items, weapons, and decorations. If some- thing isn't part of the floor, ceiling, or walls, it's a Thing. These are the most complicated objects in the exe, and have the most information stored about them. This information includes what pictures to show onscreen, what sounds are associates with it, it's height, width, speed, etc. Sprite: A Sprite is a collection of all the pictures that belong to one Thing. For instance, there is a Sprite that contains all of the pictures for the Gargoyles, from first activation to gory death. Sprites can be referred to by a 4-letter name (which HHE will display for you on the Sprite editing screen). The Sprite for the Gargoyle is called IMPX, and is Sprite #0. Frame: A Frame is one picture individual picture of a Sprite. For example, there is one Frame that shows the Gargoyle with its hand back, ready to throw a fireball at the player. The most complex Sprites may have 20-25 individual Frames in them, whereas simple Sprites could only have one or two Frames. Frames also contain info about how long the picture should be displayed, and which picture to display after the current one. Frames are named by adding a letter to the end of a Sprite name. The name for the Gargoyle with his arm back is IMPXD, with a Sprite number of 0 and a Sprite sub-number of 3. The code for converting the sub-number to the letter is 0=A, 1=B, 2=C, 3=D, etc. Code Pointer: These are values that tell Heretic where in the exe to go to do some action. The code pointers are actually listed in two places: on the Frame editing screen (right hand column), and on the Pointer editing screen. Changing the values on the Frame editing screen will probably have no effect; to accomplish anything you need to use the Pointer editing screen (F8). Beware that changing these to wrong values could have very unexpected consequences! Weapon: A weapon of the player, and associated info, such as what picture to use for the weapon, and the ammunition that the weapon uses. Sound: A sound that's played at some time. The name is obvious, but other sound values (labelled with descriptive names such as "Special", "Value", and "1 / 2"), are still unknown. Play around with them, and perhaps you'll find something new. 2. *** Patch File Info \------================= This is some more info on patch files, which may help explain any difficulties you are having with them. Patch files are entirely different from WAD files. WAD files can contain level info, sound, and graphics info (stuff normally found in the Heretic WAD file). They are used simply by typing heretic -file at the command line. Patch files, however, contain info from inside the exe file, and cannot be used with the "-file" parameter. HHE is currently the only program that can apply these patches and change the exe file. Patch files save only the information you've modified with HHE, and NOT all the data (as DeHackEd did). They now have an easy-to-understand text format and can be created with any common text editor (if you know what the different field names are). Load the SAMPLE.HHE patch file that came with your copy of HHE into a text editor for full information on the text format. Or, just play around and create your own patch files and look at 'em. :) 3. *** Command Line Options \------====================== Next, an explanation of command line options. All parameters are totally optional; if you don't include anything more than the path HHE will run normally and go to the editing screens. If any options other than just the path are included, HHE will run in 'batch' mode, and not actually enter the editors. The full command line syntax for HHE is: hhe [path] [-reload] [-load ...] [-save ] path is optional, and specifies a different location for the Heretic files, heretic.exe and heretic.wad, and the exe hack file herehack.exe, other than the current directory. If you give a path on the command line it will override the exename and wadname that you give in the HHE.INI file. -reload will return the exe file to its original data. Because the new patch format does not overwrite all data, but only values that need to be changed, it's sometimes necessary to ensure that the exe is back to normal. -load ... will update the exe file with the patches called , , etc and return to the DOS prompt--great for batch files!. Conversely, the -save option will save the current exe data to a patch file named and return to the DOS prompt. These options are similar to 'l' and 's' in HHE, although when used in HHE the 'l' option requires a 'w' after it to actually write the changes to the exe file. See section 5 for more info on 'l'oading and 's'aving. Example command line: hhe c:\games\heretic -load sample.hhe This will start HHE, using the Heretic files found in c:\games\heretic, load in the info from the sample.hhe patch file, and return to the DOS prompt. The command line parameters are processed from left to right, so it's possible to do several things at once. The next example is what I would imagine is the best way to automatically load a patch file from a batch file: hhe -save current.hhe -reload -load newpatch.hhe herehack . . . hhe -reload -load current.hhe delete current.hhe This will save the current state of the exe file, then reset it to the original Heretic data and load the correct your custom patch file. Then herehack is run, with whatever parameters you want. Finally the exe is reset to normal once again and the user's data is restored. 4. *** HHE.INI Options \------====================== Included with HHE 1.1 is an HHE.INI file which can specify several parameters for HHE. They allow you to customize where you want your patch files located, what your Heretic files are named, and more. A summary of the available options follows: # Start comment lines with a pound sign. Anything after the pound sign is ignored. editname = This is the name of the Heretic exe file that you want to edit (and full path if necessary). The standard name is herehack.exe, but you can change it to whatever you want. This doesn't need to be included if you are running HHE from your main Heretic directory. normalname = This is the name of your regular, UNCHANGED heretic.exe file. HHE will never change the data in this file. It's mostly used by HHE to save patches. wadname = This is the name of your heretic.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 HHE is run from you don't need this parameter. pathname = This is the path from which you want Heretic to be run. This is only used when using the 'r'un option from inside HHE. params = These are command-line parameters that are fed to Heretic when it's run using the 'r'un option from within HHE. Useful if you are using HHE for a custom patch for a WAD you are writing; you can simply include a '-file ' in this line, and Heretic will load your level every time HHE runs it. patchdir = This is the directory that HHE will look in for patch files. A nifty way of keeping all of your thousands of .HHE files out of the Heretic main directory. The following parameters are all totally optional, and need only be used if you have a really wierd heretic.exe file. version = 0 This is the version of Heretic you are hacking. Right now the only supported version is 0. size = The size of your heretic.exe file. Mostly for future versions, if any appear. If you do have a different Heretic version from 1.0, you will likely have to play with the following params... thingoff = soundoff = frameoff = spriteoff = ammooff = weaponoff = textoff = codepoff = These are the offsets in the Heretic exe file for their corres- ponding data chunks. PLAY WITH THESE AT YOUR OWN RISK. 5. *** 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. 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, it shows the frame that you've got highlighted. (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. Use the right and left arrows to view different sides of the Thing, if it has more than one different view. Escape will exit. The spacebar will also view the full text strings in the Text Editor and play sounds when you are in a sound field. A The About window. This brings up two windows that shows you what version of HHE you are working with (and some credits), and also a small summary of what Heretic exe you are editing, and how much memory you have free, etc. B Toggles between the two Bit windows on the bottom half of the Thing screen. In Heretic all Things have two different Bit fields (labelled Bits 1 and Bits 2 on the middle-left-hand-side of the Thing screen). This lets you switch between them. 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 #160, which is just a temporary storage Thing (and is not actually present in the Heretic exe file). Note that the Thing names will not change... the Thing name is not actually in the exe file, and is just included for your own benefit. The Thing Number is also only for the conven- ience of the hacker, and is not in the exe file. Any given Thing Number and Thing Name will always be the same. G Goes to a specific item. If you are in the Thing editor and know which Thing you want to see, you can go right to it by picking the name out of a list of names without bothering to page through all the items. When the list of Things appears, you can do a speed- search by typing in the first few letters of the name. Or, another quick alternative is to type in the Thing number. If you are not in the Thing editing screen it also allows you to jump to any object by number (like hopping straight to Frame #927). 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. An extension of ".hhe" will be assuming for the patch files if none is given. A prompt will ask you if you wish to reload the original exe data. When the patch information is loaded, only values that are changed are actually replaced... all of the other data (including any changes you have made) will remain intact. Answer yes to the prompt if you wish to load the patch into a "clean" exe with no other changes. answering no will load the patch and keep any other changes to the exe that have been made. Note that 'w' must still be used to make the changes permanent. You can also do this from the command line by typing hhe -load R Runs Heretic. This option might be tempermental and only flash the screen and refuse to run Heretic (try and find out!). It allows you to quickly test-run Heretic, to check out the changes you've made (remember to hit 'w' before running!). After Heretic finishes you will be returned to your current place in the editor to cont- inue working. You can specify command-line parameters for Heretic and the directory to run Heretic from in the HHE.ini file. S Save a patch file. You must enter the patch filename, and it will save all changes in a text format to the patch file. An extension of ".hhe" is assumed if you don't give one. You can also do this from the command line by typing hhe -save U Undo all changes. This reloads the information straight from the hacked Heretic exe file, and will return you to your most recent 'w'rite of all the data. W Writes all changes to the hacked Heretic exe file. This step is necessary to get any results! Z Reload the ORIGINAL exe data. So if you've been playing around and now all the monsters look like small metal balls, and your Pheonix Rod shoots arrows that look like chickens, hit this key to get back to the real Heretic data. F2 Thing Editor. This is the main Thing editor, the default screen in HHE. See section 7 for more detailed Thing info. F3 Frame Table. Displays Frame information, in a list format. See section 8 for more detailed Frame info. F4 Ammo/Weapon Editor. This allows you to edit the ammo and weapon amounts and graphics. Section 9 talks more about this screen. F5 Sound Table. A jolly good table of all the sounds. Check out section 10 for more Sound table info. F6 Sprite Table. A handy list of all the sprites, in case someone needs it. Section 11 deals with the Sprites. F7 Text Editor. This shows all the text strings in the exe file and lets you edit them. Section 12 has more info. F8 Code Pointer Editor. This allows you to edit the nifty code pointers that are hidden away in Heretic. Caution: not for the faint of heart! F9 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. 6. *** Mouse Info \------============ Some notes on the mouse support... Generally just click places to find out what happens! The new quick-bars on the top and bottom of the screen are there expressly for the mouse users (click on 'em to get help, exit, see the "About" window, or switch editors). Clicking on any of the fields will switch to it, and double-clicking will bring up the standard editing box to let you change the value. Click on the "Thing Name" in the upper left window to Go to any of the Things by name. Clicking on any sound or frame names will play the sound or show the frame for you. Right clicking at any time will act exactly like the Escape key was pressed (except for exiting the program), ie get you out of input boxes, leave the frame viewer, etc. The way it's designed should (hopefully) be intuitive. There is a problem with some mice (restricted to Logitech mice, I think) where the mouse only moves in the top half of the screen. I'm looking into it to see if I can fix the problem. Until then, just remember that you can do anything with the keyboard that you can do with the mouse. 7. *** Thing Editor \------============== a. Thing fields This is the first thing you see when you start up HHE. It is also one of the main areas of the program. Edit Things by highlighting the desired field and hitting Enter, or clicking on it with the mouse. The Player entry is slightly "special" in regards to how much Heretic uses the info in the Player fields. Entries such as Speed and Hit Points are NOT changable through HHE; they are controlled elsewhere in the exe and aren't easily accessible. Most of the rest of the Player entries, however, are used and can be changed normally. 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 Heretic exe file. Thing Name: A short descriptive name for the Thing. This info is NOT stored in the Heretic exe file, and thus you can't edit it, and it will always remain the same. So a Thing #18, a Gasbag, will always be described as a "Gasbag", even if you change it to something entirely different, like a Gargoyle. 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. Heretic stores projectile speeds differently from speeds for normal objects, so you may see some very high speeds show up when you toggle the bit #16, the "Projectile" bit. Basically though, just ignore it and HHE 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 player 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 Maulotaurs have a missile damage of 7, which is probably for their charge attack. 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 usually will (200), and the Maulotaur rarely will (25). Mass: Thing's mass. Set a Knight's to 1 and watch him fly! Note the Maulotaurs have a high mass, and your weapons don't budge them much. Bits 1: These are the actual values of all of the bits. Change Bits 2: these two fields to change all of the bits at once. See also the Bit fields portion of the text, coming up in a few pages (section 6b). 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 gasbags, the sound of its 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: The Frames played for a Thing that's moving around. Injury: Frame played for an injured Thing. Close Attack: Attacks that are close (clawing Gargoyle). Far Attack: Attacks that are far away (Gargoyle winding up for a fireball attack). Death: Monster death or gasbag/projectile explosion. Explode Death: Exploding death (slop!) for players and the weaker monsters. Respawn: This is the Frame that's shown when the Thing dies due to lava or a fire-weapon. For the player it's the cool player- on-knees-and-burning picture. b. Bit Editor Switch between the two different bit fields (Bits 1 and Bits 2) with the 'b' key. The first page of bits is pretty much identical to the bits that were available in Doom. The second page includes some new things, such as teleportability! Bits 1: 0.Gettable Thing: Something that can be picked up by the player, like an ammo item. 1.Obstacle: Something that can't be walked through. 2.Shootable Thing: The Thing will take damage if this is set. Note that gasbags 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 the ravmap cheat. 4.'Automatics': This seems to affect some inherent characteristics of Things. Basically any "temporary" Things have this set, like puffs, sparkles, small pieces of objects, and projectiles. 5.Semi-Deaf Monsters become active if they see you (like normal), or if you fire a weapon AND there is a direct line of sight between you and the monster. Strange. 6.In Pain: Used internally by the Heretic exe to determine if a monster is in pain or not. 7.Unknown 8.Hangs From Ceiling: For those hanging skulls. 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.Travels Over Cliffs: Set for projectiles and players. This bit allows the Thing to travel from one sector to another even when the dropoff height difference is greater than 16 (or 24?). Turn this on for monsters and they will jump off platforms after you. 11.Can pick up items: This Thing (i.e. the player) can pick up Gettable Things. 12.No Clipping: Same effect as the cheat code kitty, but also effective for monsters. 13.Unknown 14.Floating: For floating monsters, like Wizards and Gargyoles. 15.Semi-No Clipping: Kinda like no-clipping, kinda not. You can't walk through walls, or trigger any linedefs, but you can walk over any height cliff in your way. 16.Projectiles: Set for projectiles. Allows the projectile to leave your body. If it is turned off, the projectile explodes as soon as it is fired, because it originates from "inside" your body. 17.Disappearing Item: This is presumably used for items that monsters leave that disappear when crushed under a door. 18.Partial Invisibilty: Makes the Thing see-through. 19.Puffs (vs. bleeds): Whether a Thing bleeds (bit off) or puffs (bit on) when hit. The gasbag has this set by default. 20.Sliding Helpless: ??? 21.Unknown 22.Counts for Kills: This Thing counts as part of the final Kills at the end of the level. 23.Counts for Items: Just like Kills, but for items. 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->yellow 27.Color 2 / 10-greens->red 11-greens->blue 28.Unknown \ 29.Unknown Perhaps these are unused??? 30.Unknown / 31.Unknown / Bits 2: 0.Subject to Inertia: The Thing has some velocity that it is subject to. Usually used for the drops, gobs, and chunks of Things. 1.Blown by Wind: If the Thing is in a windy sector, it will be affected by the wind. 2.Bounces: The Thing will bounce off the ground (once). 3.Goes Through Invis: It has no effect at all on invisible creates. By default the Pheonix Rod PL1 and the Firemace balls have this set... 4.Pushable Up Cliffs: It can be pushed up and over high cliffs. Normally no Things in Heretic have this set, but the bit is still in there... 5.Walks IN Liquids: The Thing is a little bit "submerged" in the water when it is in water. I think all Heretic does is chop off the bottom few rows of the picture. Without this set Heretic shows the Thing like normal, walking on top of the water. 6.Starts on Floor: Determines whether flying creatures start on the ground or in the air. 7.Does Not Teleport: When set, the object will NOT be able to go through teleporters. I can see some VERY interesting uses for teleporting object and custom WADs... =-} 8.Dragon Claw Spikes(?): ??? Set only for the Dragon Claw Spikes... 9.Pushable: The object is pushable (like the gasbags). 10.Only Hits Monsters: Usually for projectiles, the Thing will only explode when hitting a monster (as opposed to a wall). 11.Unknown: 12.Unknown: 13.Particles(?): ??? Set only for the drops, gobs, bits and pieces of Things. Its purpose is unknown right now... 14.Unknown: 15.Varying Damage: The Thing will take damage that's dependant on where it is hit. It will lose a chunk of hit points if it's hit in the middle, less if hit on the edges. 16.Causes Burning Death: The Thing (a projectile usually) will cause a burning death picture to be shown (if there is a Burning Death Frame on the Thing it hits). For example, the PL2 Pheonix Rod, the flamethrower, has this set and causes the player to die in a blaze of glory. 17.Does Not Push Things: The Thing will not push other Things. I.e., set it for the gasbags and they will not push the player around when they explode. 18.Telefrags: When set this bit allows the Thing to teleport even if there is something on the teleport destination (which of course kills the thing on the other end of the teleporter). Leave this bit off and the Thing won't teleport if there's something on the other end. 19.Bobbing: Makes the Thing (usually an item) bob up and down. It looks pretty funny for the monsters... but try setting it for the player and you'll get some very unexpected results! 20-31.Unknown: Unused perhaps? 8. *** Frame Editor \------============== This displays the majority of the Frame information. Each frame has six editable fields (of 8 total that are stored in the exe). The only two fields that are NOT shown on the screen are always 0 in all of the Frames, so I decided it would be pointless to try to squeeze them onscreen also. Frame #: This is the number that is specified in the Thing Frame fields. Name: This found through a slightly complex check to the Sprite table, and from there to the Text section, to find the actual name. Sprite #: The Sprite that this Frame is part of. Sprite Sub #: The suffix to distinguish which particular Frame to look at for the given Sprite (I think the technical term is "lump"). Bright Sprite: This check box determines if a Frame is ALWAYS to be displayed at it's full brightness or not. Some things, such as torches and explosions, are always bright, even if fired into a pitch-black room. Just for your information this isn't really included in the exe file, its just easier to edit this way than the way it appears in the exe. Next Frame #: Which Frame to play next. You can skip a few weapon frames this way, to make the super-fast weapons... Duration: How long the frame stays on the screen. Make 'em all 1 to make a Thing start to move very quickly! (hint hint... the Firemace fires a bit too slowly, doncha think?) Code pointer: An offset in the 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 the Code Pointers that are found on their own separate editing screen (F8). 9. *** 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 7 is listed as "Unlimited". Ammo Number: 0=Cells 3=Runes 7=Unlimited 1=Arrows 4=Orbs 2=Crystals 5=Spheres 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 you only get 10 arrows when you pick up the Ethereal arrows. The larger power-ups, and different difficulty levels also have an effect on this. This is also list as 'N/A' for unknown types. Deselect frame: This is the frame that's shown when another weapon is selected and the current weapon drops off the screen. This is the number that Heretic refers to in the Frame list for more info. Select frame: The frame that's shown when the weapon is selected and is rising onto the screen. Bobbing frame: Frame shown when the weapon is bobbing back and forth as the player walks/runs. Shooting frame: Frame played when the weapon shoots. Firing frame: Another Frame that's played when the weapon fires. 10. *** Sound Editor \------============== Sound Number: This is the number that's referenced by the Things for each sound. Name: This is the name of the sound. A few sounds have a dash in front of their names, but I'm not sure what exactly the purpose of that is. Special: This is 0 for all Sounds except those which have a dash in their name. Why? I have no idea. "Value": Perhaps a relative loudness factor, determining how loud relative sounds are mixed together. 1 / 2: An unknown sound value, perhaps something dealing with what the sound is for. 11. *** 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. 12. *** 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 exe file, you have only 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 position of the character you're on. 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 questions? Find an error in this document? Feel free to write me at gregl@umich.edu about whatever problems you have. Have fun!