DEUTEX/DEUSF 2.9 November 1994 WAD composition tool for DOOM Copyright (c) Olivier Montanuy 1994 (montanuy@dmi.ens.fr) Manual Edited by Kevin McGrail (74107.1254@compuserve.com) ------------------------ Data Utility License ------------------------- DOOM(tm) is a trademark of Id Software, Inc. The DOOM characters and the Id Software logo are trademarks of Id Software, Inc. DOOM Copyright (c) 1993. Id Software Inc. All rights reserved. This utility product is not a product of Id Software, Inc. and has not been approved by Id Software, Inc. Id Software will not provide technical support for this product. The purchaser of this utility product may not distribute for money or other consideration any software data created and/or modified by the use of this utility product. ----------------------------------------------------------------------- ****************************** FEATURES ******************************* ------------ DeuTex ------------ DeuTex stands for DEU's Texture Companion. DEU is a DOOM level editor by Brendon Wyber and Raphael Quinet, and DeuTex was originally derived from the code of DEU 5.21. DeuTex uses various contributions for particular file formats. DEUTEX Features: - Reverse engineer existing PWADs. - Compose your own wall textures, by reusing DOOM patches or adding your own patches as .BMP or .GIF files. - Load sounds as .WAV, PC sounds as text (don't laugh!) and Music as .MUS format. - Add your own floors (still quite tricky. see manual). - Add your own sprites (a bit tricky. see manual). - Simple WAD creation directives from a text file. - Simple directory structure (for the resources). - Work in batch mode (like a compiler). - Compatible with other level editors (like DEU). - Merge a PWAD into the main IWAD, recreating the WAD directory, so that ANY or ALL kinds of FLATS can be defined, while distributing only the changed ones in the PWAD. - Extract graphics, bitmaps and lumps out of your favorite PWAD, for contemplation or reuse. (WITH WAD AUTHOR AGREEMENT ONLY!) - Check your PWAD for errors in TEXTURE definitions. - Create animated walls with (almost) any sequence of pictures. - Create a non repeating sky texture. page i ------------- DEUSF ------------- DeuSF stands for DEU Sprite and Flats. DEU is a DOOM level editor by Brendon Wyber and Raphael Quinet. (Heck, I know the DeuSF name is lame, but it's short.) DeuSF is inspired from DMADDS by Bernd Kreimeier, but is an alternative to it. DeuSF will enable you to distribute PWADS with only the SPRITES and/or FLATS that you wish to replace. There are some caveats here, so read the manual! DeuSF will work with PWADs composed for DMADDS, but DeuSF's preferred PWAD composer is of course DeuTex. DEUSF Features: - Recreate a complete sprite and flat PWAD from a partial sprite or flat PWAD and the main WAD of DOOM. WARNING: These programs have been used with DOOM2, but I cannot be sure that all the functions will work perfectly with DOOM2. The sprite names VILE[ VILE\ VILE] are not valid DOS file names, and are replaced by VIL@A VIL@B VIL@C if and only if used for file names. ***************************** DISCLAIMER ***************************** I cannot held be liable for damages consecutive to the use of this program. I did my best to avoid any such occurrence, and use only very basic commands. However, it is impossible to state that these will work for all hardware and software configurations. Legalese: Read the license information at the end of this manual. DeuTex/DeuSF are freeware and Copyright (c) O.Montanuy 1994. DeuSF can be freely distributed. DeuTex cannot be distributed for *any* commercial purpose, with the sole exception of Compuserve download charges. ***************************** WHAT'S NEW? ***************************** FUTURE (DeuTex 3.0) - Color Quantization, allowing TGA/PPM support. - VOC sounds. - Loading of Dehacked patches in a clean fashion (IF ALLOWED BY ID). - Second Visual Basic shell (still under progress.) New in version 2.9: - DeuSF -sprite bug corrected. - New directory listing for sprites, music, sounds. Verbose. - Some other bug corrections I'm not listing.(shame prevents) - Sources now compile under Alpha and SGiX. (well, err...) - Data Utility license executed: no more string handling functions. Sorry, this is not allowed by ID software. Use DeHacked. New in version 2.8: - Small BMP bug corrected. - Visual Basic shell version 1.2 page ii New in version 2.7: - Bad news for those who didn't register DOOM. I have received mail from John Romero which kindly requests that DeuTex work only for the registered version of DOOM. And when the Lord speaks... - A Visual Basic shell for DeuTex. version 1.0 beta. New in version 2.6: - Unix version available (SUN SPARC, little endian processor). - OS/2 and Linux version by Mark Mathews and Per Allansson. - DeuSF supports viewpoints not available in DOOM.WAD. - Removal of some bugs and restrictions of DeuTex and DeuSF. - Verbose and Non-Verbose mode. - Function to determine unused data in a WAD. - Improvement of the user manual (just joking...). - Converts all sounds to 11025 samples/second. Lacking in version 2.6: - MIDI support. If anyone can understand the code of Joachim... New in version 2.2: - Extension to -merge. You can now change the number of viewpoints of a sprite. DOOM wants either one view point (ex: COLUA0) or eight viewpoints (ex: COLUA1 COLUA2A8 COLUA3A7 COLUA4A6 COLUA5). These are mutually exclusive. DEUTEX will delete those viewpoints you do not want, but take care to provide all the necessary viewpoints, or else DOOM will lockup. - Extension to -extract. When extracting sound, you can now tell DEUTEX to extract the whole entry, beyond the declared sound length. This is necessary for some PWADs, who cheat with the sound entry length. I dunno why. (I believe it's due to a feature of DMAUD). - Extension to -make. When loading a sound, DEUTEX now converts to 11025 sample/s. Better not rely too much on this, and use a real sound utility. This is only for convenience. - DEUSF can now change the number of viewpoints of a sprite as well. DEUSF will delete those viewpoints you do not want, but take care to provide all the necessary viewpoints, or else DOOM will lockup. - Some bug corrections. Nothing critical :-) ************************** CONVIVIALITY ****************************** DeuTex and DeuSF have NO human interface. I will seriously frown upon complaints about the lack of human interface. DeuTex and it's companion DeuSF are MEANT to be run from BATCH files. Think of them as PWAD compilers. You write your batch file once, and run the batch to re- create your PWAD, each time you modify an entry. *********************************************************************** page iii *************************** Known problems **************************** - DeuTex makes limited checks on your PWAD. I check only texture consistency, and coherency of S_START/S_END, F_START/F_END. Any suggestions? - BMP 24bit color quantization is slow. I have a quite fast quantizer, but it's a bit lossy, and needs *some* init time. Not implemented in this version. - Entry type identification does not always work with every PWAD. No general solution to this problem, only best effort. Void entries are saved as LUMPS. Sprites and Flats are missed if conventions are not respected. (files generated by hand or by WACKER-beta7) - GIF format defaults to GIF87. - BMP format is a bit hacked. My painting tools accept it, but Visual Basic refuses it. If this happens, load the file with a good program, overwrite it with a save from that program, and then it will work. :-) - WAVE (.WAV) and AUDIO (.AU) file format are hacked. Might not *always* work correctly. No one ever sent me the specs! If you have the specs, my mailbox is waiting for your kind contribution! - No MIDI support. I dunno how to write the code, but I'm looking at the code of Just_Joe (that I don't understand at all). - Levels must be complete before DeuTex will insert them in a PWAD. This means: nodes, reject, blockmap and such must exist. - DeuSF does NOT test that all required sprite viewpoints are available when changing viewpoints. DOOM will lock up if you forget one of the sprite viewpoints. - If the -app command is interrupted, the PWAD file becomes bigger due to appended waste data, but it is still operational. - DeuSF says stupid things if no command is given. - Source is NOT included. not yet. *LIMITATIONS of DOOM - Sprites in PWADs only work if you don't reuse existing sprites. Use DeuSF or DMADDS if you want to replace sprites. Actually, DeuTex -merge will also work. (and better!) - Flats don't work in PWADs. Use DeuSF or DMADDS if you want to replace Flats. Deutex -merge will also work. (and better!) page iv ******************************* Contents ***************************** Data Utility License i Features i Disclaimer ii What's New? ii Conviviality iii Known Problems iv Chapter 1 OVERVIEW 1 A) What is DeuTex? 1 B) Installation 1 C) Directories and DeuTex 3 D) What do I need? 4 E) What do I do? 4 F) What is DeuSF for? 4 G) What are the Palettes For? 5 Chapter 2 DIRECTORY STRUCTURE 6 A) \Levels 7 B) \Lumps 8 C) \Textures 9 D) \Sounds 10 E \Graphics 10 F) \Sprites 11 G) \Flats 11 H) \Patches 12 Chapter 3 DEUTEX COMMANDS 13 A) Complete Command Reference 13 B) Help Commands 13 C) Optional Commands 13 D) Commands to Compose or Decompose WADS 14 E) Commands for merging PWADS into the Main IWAD 15 Chapter 4 DEUSF COMMANDS 17 A) Summary 17 B) Complete Command Reference 18 C) Help Commands 18 D) Optional Commands 18 E) Mandatory Commands 19 Chapter 5 FORMATS 20 A) The WAD Creation Directive (WADINFO.TXT) 20 B) The Texture Definition File (MYTEXT.TXT) 23 page v Chapter 6 WORKING WITH WADS 27 INTRODUCTION 27 A) How to Decompose a PWAD 27 B) How to Create a PWAD with new TEXTURES 28 C) How to Create a PWAD with new SPRITES and FLATS 28 D) How to Create a PWAD with new SOUNDS 29 Chapter 7 TEST-ME or What's inside TRINITY.WAD? 30 A) About Test-Me 30 B) Listing the Directory 30 C) Decomposing TRINITY.WAD 30 D) Recomposing TRINITY.WAD as TRINIDAD.WAD 31 E) Customizing TRINITY.WAD Chapter 8 VBDEUTEX 32 Chapter 9 NECESSARY STUFF 33 A) License Agreement 33 B) Legal Stuff 33 C) Thanx 35 D) Where to get DeuTex/DeuSF 37 E) Final Words 37 APPENDICES I) Switch Textures in DOOM.WAD 38 II) Animated Wall Textures in DOOM.WAD 42 III) Sound Names for DOOM 44 A) Sounds found in BOTH DOOM I and DOOM II 44 B) Sounds found ONLY in DOOM II 46 AFTERWORD Trinity.wad - How I Made It by Steve McCrea 48 page vi CHAPTER 1 ****************************** OVERVIEW ******************************* This manual has a lot of trees in it. This chapter will give you a view of the forest. DeuTex and DeuSF are powerful programs that will let you do almost anything you can imagine in composing or manipulating PWADS. Notice the word composing. Deutex is an Orchestra Conductor. It can perform whatever music you write for it brilliantly, but you must supply the musicians. A PWAD consists of many parts. DeuTex coordinates those parts to give you the PWAD you desire, but it doesn't create them. With DeuTex you have access to all the resources in the DOOM or DOOM II IWADS. Since it does so many things, it might seem a little confusing at first glance. Don't worry. If you are familiar with DOOM (read Matt Fell's DOOM specs and Hank Leukart's DOOMFAQ), then all you need to learn about DeuTex is it's organization. This organization is the reason for all the directories involved, and everything is actually pretty simple once it's explained. The DOOM and DOOM II WADs provide a framework. Your PWAD modifies the framework in various ways. For DeuTex, you put each type of change (sounds,textures, etc.) into it's own subdirectory. When you're ready to test, you run a batch file that takes all your modifications out of the directories and creates a PWAD from them. A. WHAT IS DEUTEX? DeuTex is a PWAD compiler. It allows you to organize ALL the resources you modify, and group them into your PWAD in a single step. This eliminates the need for running a different program for each type of editing you want to do (DMAUD, DMGRAPH, DMADDS, etc). DeuTex is NOT a map editor. Your final map with nodes, reject and blockmap already calculated is just another resource to DeuTex. If you don't redefine or create textures, flats sounds, etc. in your PWAD, you don't need DeuTex. If you redefine LOTS of stuff, you'll wonder how you got along without it. If you've worked with wads before, you know how many times you have to go in and change something! With DeuTex, you just edit the resource you want to change, throw it back in it's subdirectory, and run the batch file to put everything together again. B. INSTALLATION DeuTex comes in zipped format. Naturally, you need a copy of PKUNZIP (v2.04G) to unzip it. If you don't have one, go get it! It's probably available the same place you got DeuTex. The file name is DEUTEX.ZIP or something like it. Depending on where you got it, the file name may differ, and there may be some changes due to different versions, but overall this manual should cover pretty much everything you want to know about it. Different versions of DEUTEX contain different numbers of files. There are 28 files in the biggest one I know of. This manual contains all the text files from various versions, and thus makes them unnecessary. Whatever version you have, you should unzip it with the PKUNZIP -d option to retain the directory structure of the files. If you are upgrading from a previous version, don't unzip the new version in the same place as the old one. PKUNZIP will complain about creating directories that already exist. page 1 You don't have to make a directory for DEUTEX itself, since it will be created when you unzip. Just copy the zip file to whatever directory you want to start from. When unzipped, DEUTEX.ZIP will still be there, but all the other files will have been placed in an assortment of subdirectories. Type: PKUNZIP -d DEUTEX.ZIP The -d tells PKUNZIP to keep the directory structure in the ZIP file. If you put your PKZIP files in a directory on your path, you won't need to type the path statement above, or ever again for that matter (when you unzip files, that is). If everything goes as planned, DEUTEX.ZIP will blow up into something like the following structure (the example shown is the version with 28 files mentioned above): NOTE: \msdos may be \linux,\unix or \os2 depending on your version. C:\ -------- deutex.zip |_ \DEUTEX\ ------- file_id.diz | readme.txt |_ | \MSDOS\*-- deusf.exe | deutex.exe | deutex.pif | vbdeutex.exe | vbdeutex.txt |_ | \TEST-ME\ --- test-me.txt | trinity.bat | trinity.cmd |_ \MANUAL\ ------- deusf.txt | deutex.txt | license.txt | summary.txt | thanks.txt |_ | \EASY\ --- decompos.txt | sound.txt | sprites.txt | texture.txt |_ \ADVANCED\ ------- format.gif | format.txt | midi2mus.exe | soundlis.txt | trinity.txt | warning.txt |_ \PALETTE\ ------- doompal.pal doompal.ppm readme.txt 17 of the 28 files listed above are text files that are incorporated in this manual. You can delete them all. If you don't have a bulletin board fetish, you don't need file_id.diz either. Do what you like with DEUTEX.ZIP. Put it on a floppy in case you ever have to reinstall. page 2 After deleting the text files, do the following: Leave DeuTex\test-Me alone, when you do this demo, you'll want it to be in its own directory. Copy all the other remaining files to \DeuTex. Delete all the other directories except test-me. Now copy this manual to \DEUTEX, and let's look at what we have: C:\_ \DEUTEX\ ------------------- deusf.exe | deutex.exe | deutex.pif | deutxman.txt | doompal.pal | doompal.ppm | format.gif | midi2mus.exe | vbdeutex.exe |_ \TEST-ME\ --------- trinity.bat trinity.cmd Ahhh! That's better. You'll probably get rid of format.gif after you see the ascii art masterpiece gracing this manual, and after you do test-me and understand it, that's history, too! So now DeuTex looks like it might be manageable after all. C. DIRECTORIES AND DeuTex If this section's about directories, then what were we just talking about? Well, one reason it's a good thing to get DeuTex pared down to size on installation is that when you use it, there is a directory structure involved, and remembering one is easier than two, right? Chapter 2 tells you all about the directories DeuTex uses, but this section will give you the general picture. I'm going to use an imaginary cakemaking machine to explain DeuTex's directories (I know, I know, it's stupid! ). To make cake with this machine, you put your flour in one, container, raisins in another, sugar another, milk, icing, walnuts, chocolate, eggs, etc. All your best stuff, each in it's own place. Then you flip the switch, and the machine thumps and smokes, and voila! Cake! DeuTex works in the same way . You put your map in one box, sounds in another, textures, patches, graphics, lumps, sprites and flats all in their own boxes. If you don't want raisins today, leave the sprites box empty. When all is in place, flip the switch (DeuTex -make, in a batch file preferably), DeuTex thumps and smokes for a little while, and voila! PWAD! page 3 D. WHAT DO I NEED? ************************** User Requirements ************************* ATTENTION: DeuTex is not completely trivial to use. It requires a fully functional processing unit, with a least 10000 meg of available neurons, some basic DOS and DOOM specs dynamic libraries and at least 1 or 2 hours of spare processing time, at a minimum 80% attention rate. You have been warned. SUGGESTION: If you use DeuTex, try New Wad Tool, too. The two tools combine very well together under DOS. (NWT is not available for other O/S). ************************ Hardware Requirements *********************** This program is an ordinary DOS executable, compiled in a HUGE memory model, with 386 instructions. It does not make use of a math copro- cessor. It should run with about 500k of free base memory, or less. It might not run under a 286. It was tested on a Compaq LITE 4/33c and an IBM Thinkpad 755c. Unix, Linux, OS/2, SGiX and Alpha versions are also available. E. WHAT DO I DO? Please read this Manual before asking questions. My time on the net is limited. Bug reports ARE appreciated IF they come with the files you were using when the bug occurred, and a full description of it. Read and be familiar with all the DOOM literature you can. Especially DOOMSPECS 1.3 by Matt Fell. Become familiar with the various editors you need to create the resources used in this program. DeuTex does not edit things. It puts the things YOU edit together. When the foregoing is done, you take all your cool stuff. You put it in DeuTex's boxes. You give DeuTex the directions on what to DO with your stuff. You run DeuTex. That's All, Folks. F. WHAT IS DEUSF FOR? DeuSF is a program to help overcome some of DOOM's limitations, and still be able to distribute a reasonable sized PWAD. With SPRITES and FLATS, you have to replace EVERYTHING in order for DOOM to work right. This makes for a big PWAD, and it's not really legal to take DOOM's Sprites or Flats, put them in your PWAD, and then distribute them (kinda splitting hairs, I know). So DeuSF allows you to replace as few sprites and flats as you desire, and distribute IT with your PWAD. With the appropriate batch file, it will change things at the USER's site to enable your PWAD to play, without stepping on toes, or asking people to download multi megabyte single level PWADS! page 4 G. WHAT ARE THE PALETTES FOR? These are the color palettes used by DOOM. If you edit or create any graphics (Patches, sprites, etc.) in your favorite graphics program, the colors are liable to be different from the ones used in DOOM. When they are inserted in a PWAD, they need to be 'quantized', which is a fancy word for color-matched. Although this sounds simple, it can actually be quite involved. DeuTex has the capability, but design of a good quantizer was not the highest priority for the type of program DeuTex is. With this in mind, if you have any edited graphics you want to insert with DeuTex, you should be aware of the following: Avoid 24bit BMP format! 24bit BMP color quantization is slow. I have a quite fast quantizer, but it's a bit lossy, and needs *some* init time. Therefore, it's not implemented in this version. Use 8bit (256 color) and have the color quantization done by a serious program. If you don't quantize the colors, DeuTex will, but it's slow, and doesn't provide any dithering, so it's lame, too. The enclosed color palettes are in the format of two good graphics programs. Use them to quantize your pictures, before you feed them to DeuTex. doompal.pal is in the format used by PAINTSHOP PRO v2, a popular shareware graphics program with excellent color conversion capabilities. To convert with doompal.pal in PAINT SHOP PRO: 1) load the file you want to convert 2) in the color menu, select: load palette browse to find doompal.pal and select it 3) save the file as a bitmap (.BMP) If you want to make a .PBM (portable bitmap), use ppmquant on your picture, with doompal.ppm as the reference for colors. You know another method? Just tell me! page 5 CHAPTER 2 ************************* DIRECTORY STRUCTURE ************************* First: You can enable DeuTex/DeuSF to locate your REGISTERED doom or doom 2 files by creating an environmental variable DOOMWADDIR that points to your DOOM path like: set DOOMWADDIR= d:\doom (in autoexec.bat under DOS) setenv DOOMWADDIR ~/doom (in .tcshrc under Linux/Unix) This is more important for the LINUX version, since with DOS the command DeuTex -doom will achieve the same result. In DOS, it's possible to get an 'out of environment space' error. If this occurs, use DOS Help for the SHELL command to find out how to increase your environment space. DeuTex uses the following directory structure to store DOOM entries. First create a directory (call it MYWADIR or whatever) for your wad. Make sure DeuTex is on your path, or put a copy of it in MYWADIR. Put a copy of the wad you are working on (MYWAD.WAD) in MYWADIR. Type: DeuTex -xtract mywad.wad DeuTex will automatically create the appropriate subdirectories and put all the WAD'S entries in the proper place. It will also create a file named WADINFO.TXT in MYWADIR. If your wad is a bare map level with no additions yet, you should get something like: \MYWADIR\--------mywad.wad | wadinfo.txt | DeuTex.exe (optional, if not on your path) |_ \LEVELS\------ExMx.wad Note that DeuTex will not OVERWRITE any existing files. In the example above, if you type DeuTex -xtract AGAIN, you will get an error message telling you the files already exist. You have to delete wadinfo.txt and ExMx.wad (or move them somewhere else) for xtract to work again. If you lose something you wanted to keep, don't blame DeuTex, it's innocent! Now type : DeuTex <-doom doom directory> -textures DeuTex will read the textures from DOOM.WAD or DOOM2.WAD, list them in a file called TEXTURE1.TXT (and TEXTURE2.TXT for DOOM 1) and store them in a directory called TEXTURES, which it will create if it doesn't exist. NOTE: The <-doom doom directory> command is optional. See Chapter 3 for a complete description of when you should use it. Your working directory should now look like this: \MYWADIR\-----mywad.wad | wadinfo.txt | DeuTex (optional) |_ | \LEVELS\----ExMx.wad |_ \TEXTURES\---texture1.txt texture2.txt page 6 If your wad had any other resources (sprites, flats, sounds, etc.) in it and you used DeuTex -xtract, it would extract those resources, too. Then it would create the proper directory and store them in it. If you want to add something to your wad, put it in the proper subdirectory (create it if it's not there), and tell wadinfo.txt about it. Chapter 5 FORMATS describes wadinfo.txt in detail. Then type: DeuTex -make wadinfo.txt mywad.wad DeuTex will read wadinfo.txt and go get all the resources it asks for from the directories. Then it will create mywad.wad from them. Note that if you create a wad from the above example, it won't be any different than what you started out with! You need to put some ingredients into the mix before you see any results. THAT's what the other directories are for. Again note that DeuTex won't overwrite mywad.wad if it exists. Since most of the stuff you'll do with DeuTex will be from a batch file, have it handle your housekeeping whatever way you like. Something like the following works pretty well: del mywad.wad DeuTex -make wadinfo.txt mywad.wad copy DOOM\WADS\mywad.wad mywad.bak copy mywad.wad DOOM\WADS\mywad.wad This way, if you find out you've really screwed things up when you test your wad, there's always a copy of the previous version to use. DEUTEX SUBDIRECTORIES: A. \LEVELS 'Bare' PWADS go here! A bare PWAD is one that you have edited and constructed the nodes, reject, and blockmap. The PWAD will then contain only the following 11 entries in IT'S directory: ExMx(MAPxx), THINGS, LINEDEFS, SIDEDEFS, VERTEXES, SEGS, SSECTORS, NODES, SECTORS, REJECT, and BLOCKMAP. BEWARE: BLOCKMAP REJECT SSECTOR SEGS are not optional! they must have been generated by your level editor (along with BSP, IDBSP, REJECT, RMB, whatever). THE FILES PUT HERE MUST BE DECLARED IN THE 'LEVELS' SECTION OF (WADINFO.TXT). ALL FILES MUST BE IN THE FORM ExMx.WAD OR MAPxx.WAD. Suppose you want your PWAD to consist of two levels, E1M2 and E3M4. Name the two (bare) levels E1M2.WAD and E2M4.WAD, and put them here. Then edit the LEVELS section of WADINFO.TXT to read: Begin: LEVELS E1M2 E3M4 End: LEVELS This tells DeuTex to look in the LEVELS\ subdirectory for E1M2.WAD and E3M4.WAD. page 7 B. \LUMPS LUMPS are raw data for DOOM with the extension .LMP. If you have edited or created any of them for your PWAD, put them here. The following files are the LMPs used by DOOM. You can insert something else if you like, and DOOM will ignore it. It's a mystery why anyone would do this, but WAD builders are a mysterious bunch! *********************** LUMPS recognized by DOOM ********************** PLAYPAL.LMP Color PALETTES (14 of them consisting of 256 RGB triplets each - 768 bytes/palette). The first one contains the normal DOOM colors. The others temporarily 'tint' the screen colors for different events in DOOM. (Item pickup, Hurt and Berserk Reds, Radsuit Green etc...) COLORMAP.LMP Color MAPS. There are 34 of these,consisting of 256 bytes each. These are NOT RGB triplets. They map whatever PLAYPAL currently being displayed by DOOM to darker colors corresponding to the light level in a sector. These mapped colors are what you see on the screen. The first map corresponds to a light level of 247-255, and doesn't change the display at all. The 32nd map corresponds to a light level of 0-7 and maps almost all colors to the darkest one in the presently used PLAYPAL. Map 32 makes everything black and white for 'invulnerability'. Map 33 is all zeros. ENDDOOM.LMP Text displayed when leaving DOOM. Use A program like TED or ENDOOMER to edit this text. (DO NOT REMOVE THE ID COPYRIGHT!) DEMO1.LMP / Demos recorded by DOOM. DEMO2.LMP < e.g. DOOM -record DEMO2 -file MYWAD.WAD DEMO3.LMP \ Then move DEMO2.LMP here, and that's all! DMXGUS.LMP (DOOM) / Text file remapping MIDI instruments DMXGUSC.LMP (DOOM II) \ for the Gravis Ultra Sound card. GENMIDI Instrument mapping for GENMIDI compatible cards. *********************************************************************** Suppose you have edited ENDOOM.LMP and recorded a new DEMO1.LMP for your PWAD. Just put copies of them here, and declare them in the LUMPS section of WADINFO.TXT like this: Begin: LUMPS ENDOOM DEMO1 End: LUMPS and DeuTex will look here for ENDOOM.LMP and DEMO1.LMP page 8 C. \TEXTURES This subdirectory contains a text file(s) describing the texture changes you want in your PWAD (Chapter 5 describes texture definition files). Your file can be given any name you want (except TEXTURE1.TXT or TEXTURE2.TXT). This name (without extension) is then entered in the TEXTURES section of WADINFO.TXT. FILES PUT HERE HAVE THE EXTENSION (.TXT). THE TITLE OF ANY FILE PUT HERE MUST BE DECLARED IN THE TEXTURES SECTION OF WADINFO.TXT. The file names TEXTURE1.TXT and TEXTURE2.TXT are reserved. Due to an amazing bug (in DOOM?), if there are any new or redefined textures in in a PWAD, DOOM no longer looks at it's existing TEXTURE1 list. If you use ANY new textures, TEXTURE1.TXT must be here or DOOM will crash. Also, TEXTURE1.TXT in this subdirectory should ALWAYS contain ALL the UNCHANGED TEXTURE1 definitions. DeuTex defines all new and modified textures in TEXTURE1. TEXTURE2 is redefined only if needed. This way, it works with both DOOM1 and DOOM2 (TEXTURE2 does not exist in DOOM2). DeuTex automatically looks here for TEXTURE1.TXT and TEXTURE2.TXT, so you don't need to declare them in WADINFO.TXT. This is because the order of declaration seems critical. When DeuTex sees TEXTURE1.TXT here, it uses it to REPLACE the default TEXTURE1.TXT in the main DOOM.WAD. It then tacks on any other texture definition files you have put here. If you delete texture entries in the TEXTURE1.TXT or TEXTURE2.TXT file, make sure that you redefine them somewhere. If they are never defined, DOOM will halt when it looks for such a texture. EXAMPLES: If you want to add ONLY new textures: - Run DeuTex -textures to get the textures. - Leave TEXTURE1.TXT here. - Delete TEXTURE2.TXT. (if you leave it, if will be loaded. No harm done but your PWAD will be about 8K bigger) - Put your definition file here (e.g. MYTEXT.TXT), and declare MYTEXT in the TEXTURES section of (WADINFO.TXT). If you want to redefine textures in TEXTURE1: - Run DeuTex -textures to get the textures. - Leave TEXTURE1.TXT here. - Delete TEXTURE2.TXT. (if you leave it, if will be loaded. No harm done but your PWAD will be about 8K bigger) - Cut the textures to be redefined from TEXTURE1.TXT and paste them into MYTEXT.TXT. Edit them or change them as you wish. - Declare MYTEXT in the TEXTURES section of WADINFO.TXT. page 9 If you want to redefine old textures (of TEXTURE2): - Run DeuTex -textures to get the textures. - Leave TEXTURE1.TXT here. - Leave TEXTURE2.TXT here. - Cut the textures to redefine out of TEXTURE2.TXT and put them in MYTEXT.TXT. Edit and change them as you wish. - Declare MYTEXT in the TEXTURES section of WADINFO.TXT. APPENDICES I and II contain lists of the animated and switch textures from DOOM.WAD (Not the new ones from DOOM II, sorry. Use DeuTex to make your own list). Copy the portion you want to edit into MYTEXT.TXT. It's a little easier than hunting through the entire TEXTUREx.TXT files. D. \SOUNDS Put your new sound files here in the correct format. They must have the same name as the sound you want to replace (Appendix IV contains a list of the sound names used in DOOM and DOOM II). Put the sound NAME (no extension) in the SOUNDS section of WADINFO.TXT. DeuTex uses the following formats for DOOM sound files: MUSIC: [D_xxxxxx.MUS] MUS format (RAW format, which can be created from MIDI files with MIDI2MUS.EXE, provided by ddt). SOUNDCARD SOUND EFFECTS: [DSxxxxxx.WAV] Windows WAVE file (.WAV). Use a converter if you prefer .AU. Preferably use 11025 sample/second for your recording. PC-SPEAKER: [DPxxxxxx.TXT] Text files (.TXT) with numbers 0-255 WARNING: DeuTex assumes that any file name beginning with: 'D_' is music. 'DS' is soundcard sound effect. 'DP' is PC speaker sound effect. E. \GRAPHICS For DOOM pictures other than SPRITES, FLATS or TEXTURES. Put the changed graphic FILE here in .BMP or .GIF format, and enter the NAME (without extension) in the GRAPHICS section of WADINFO.TXT. Suppose you have created new TITLEPIC.BMP and VICTORY2.BMP graphics. Put the files here and just declare them in the GRAPHICS part, like: Begin: GRAPHICS TITLEPIC VICTORY2 End: GRAPHICS This tells DeuTex to look here for TITLEPIC.BMP (or .GIF) and VICTORY2.BMP (or .GIF). page 10 ************ Some examples of graphic entries in DOOM.WAD ************* HELP1 The HELP screen for DOOM 1.666. HELP2 Second HELP screen for DOOM 1.666. HELP The HELP screen for DOOM 2. TITLEPIC The title pic for Doom (320 x 200). CREDIT The credits for DOOM (Don't touch!). VICTORY2 The background of the victory scenes. STCFNxx The fonts for DOOM. STxxxxx Description of the status bar. M_xxxxx Description of the menus. You can read Matt Fell's DOOMSPEC for other entries, or extract them for yourself with DeuTex -graphic -xtract DOOM.WAD. F. \SPRITES Put your new sprites here in (.BMP) or (.GIF) format. WARNING: DOOM WILL LOCK UP IF YOU ATTEMPT TO REPLACE ONLY SOME OF THE EXISTING SPRITES! Either replace all the sprites with DEUTEX -iwad -make or replace only some of the sprites and use DEUSF -add, DEUSF -append or DEUTEX -merge. Suppose you want to insert SPOSA1.GIF and TROOB2.BMP as new sprites. Put the files here, and then declare them in the SPRITES section of WADINFO.TXT, like: Begin: SPRITES SPOSA1 TROOB2 End: SPRITES This tells DeuTex to look here for SPOSA1.BMP (then SPOSA1.GIF) and TROOB2.BMP. G. \FLATS For new floors and ceilings as 64x64 (.BMP) or (.GIF) files. WARNING: TO MAKE USE OF YOUR NEW FLATS, YOU MUST MERGE YOUR PWAD WITH DOOM.WAD OR USE DEUSF TO REGENERATE ALL THE FLATS OF THE MAIN IWAD INTO YOUR PWAD. Sorry, but this is a limitation of DOOM, not of DeuTex. FLATS inserted here will not crash DOOM when the PWAD is run because I don't use the regular F_START F_END delimiters that confuse DOOM. Your PWAD *WILL* fail when it references those FLATS, so heed the warning above. Suppose you want to insert MUDDY.BMP and HATCH.BMP as new Flats. Put the FILES here, and declare them (no extension) in the FLATS section of WADINFO.TXT, like: Begin: FLATS MUDDY HATCH End: FLATS This tells DeuTex to look here for MUDDY.BMP and HATCH.BMP, BUT, SEE WARNING ABOVE! page 11 H. \PATCHES Put any new PATCHES here as (.BMP) or (.GIF) files. DeuTex will load any .BMP or .GIF files it finds here. They don't have to be part of a redefined texture in MYTEXT.TXT. If you want the little man in the danger symbol to be a little woman, just edit the patch, and throw it in here. You don't need to redefine all the textures that contain it. Note that WADINFO.TXT contains no PATCHES section. The texture definition file in the \TEXTURES directory of describes where PATCHES go in your new textures. When DeuTex reads WADINFO.TXT, it finds the name of your texture definition file in the TEXTURES section (e.g. MYTEXT). It then looks for MYTEXT.TXT in the \TEXTURES subdirectory. It looks here for any PATCHES mentioned in MYTEXT.TXT. NOTE: If you declare a NEW or MODIFIED patch in MYTEXT.TXT, there MUST be a corresponding .BMP or .GIF file here. EXAMPLE: Suppose you want to create a new TEXTURE called MYDOOR, which contains two new PATCHES called WOODEN0 and KNOB0, and a modified WARNA0 patch. The new TEXTURE also contains the existing EXIT1 patch. FIRST: Put WOODEN0.BMP, KNOB0.BMP, and WARNA0.BMP here. THEN: Define your new TEXTURE in MYTEXT.TXT as shown below: Begin: TEXTURES MYDOOR 256 128 # a 256x128 wall with ... * WOODEN0 0 0 # a 256x128 background * KNOB0 64 100 # and a small knob at (64,100) * WARNA0 128 12 # a lite at top/center * EXIT1 128 32 # the word exit in the center End: TEXTURES The asterisks tell DeuTex to look here for PATCHES called WOODEN0.BMP, KNOB0.BMP, WARNA0.BMP and EXIT1.BMP. Note that WOODEN0 had better be 256x128 or bigger, otherwise there will be at least one void column, and DOOM will complain and stop. If an existing PATCH is called for, and no entry by that name exists here, the old patch will be used. NOTE: DeuTex SHOULD automatically look here for ALL patches mentioned in MYTEXT.TXT. Sometimes it fails to replace patches that already exist in DOOM.WAD (e.g. WARNA0 above). Then the patch will be displayed as the old patch even though you meant to change it. If this happens, put the unrecognized patch in the GRAPHICS\ subdirectory, and declare it explicitly in the GRAPHICS section of WADINFO.TXT. page 12 CHAPTER 3 *************************** DeuTex Commands *************************** A. COMPLETE COMMAND REFERENCE I am lying: It's not complete, but those commands not mentioned here are for the Visual Basic Shell, and you'll never use them. Commands with an '*' are not implemented in the VB version. I forgot them. All optional commands must appear before non-optional ones or else they will be ignored. The Command Line Format is: DEUTEX <-optional cmd.> ,..., <-non-optional cmd.>,...,etc. B. HELP COMMANDS -help This one won't help you a lot, but it will give you the parameters. -syntax Prints a short listing of the format of WAD creation directives (wadinfo.txt). See the FORMATS section of this manual for a more complete explanation. C. OPTIONAL COMMANDS -doom Use this command to indicate the directory containing DOOM.WAD and DOOM.EXE or DOOM2.WAD and DOOM2.EXE. If this command is not used, DeuTex looks first in the current directory for DOOM. Then it looks in the current directory for DOOM2. Then it looks in the root directory of the current drive for a directory called DOOM, and finally looks in the root directory of the current drive for a directory called DOOM2. The first DOOM it finds is used. EXAMPLE: DEUTEX -doom C:\GAMES\DOOM -dir DEFAULT IS: CURRENT DIRECTORY. This defines the working directory, into which you or DeuTex will put the WAD creation directives (WADINFO.TXT). All subdirectories containing PWAD parts will branch from here. The completely assembled PWAD will also reside here. -deu* Use this if you want DeuTex to add 64K of junk at the end of your PWAD. Why? To compensate for a bug in DEU 5.21, that makes it sometimes crash when viewing pictures. -rgb* When you include GIF or BMP with DeuTex, the color CYAN (R=0 G=255 B=255) is assumed to be transparent. You can specify here an alternate color to represent transparency. (Only the pixel of EXACTLY that color will be transparent). page 13 -bmp File format to use when EXTRACTING pictures. DeuTex will -gif recognize either one when STORING pictures in a PWAD. The DOS version defaults to .BMP; the UNIX version defaults to .GIF. Avoid the 24bit BMP format! Use 8bit (256 color) and have the color quantization done by a serious program. Mine works if you need it, but it's lame. See "What are the Palettes For?" in Chapter 1. -wave File format to use when EXTRACTING sounds (DeuTex will -au recognize either one when INSERTING sounds). The DOS version defaults to .WAV; the UNIX version defaults to .AU. -fullsnd* If the real size of the sound entry is larger than the declared sound length, -fullsnd enables you to extract the complete sound entry. -level These tell DeuTex to select sprite, patch, sounds, etc ... -lump when composing/decomposing/merging PWADS. These commands -sound can be combined. By default, all entries are selected. -graphic -sprite -patch -flat -iwad To be used with -make, this command makes an IWAD instead of a PWAD. This is necessary if you are building a PWAD which contains all the sprites or all the flats. Enables you to rebuild DOOM.WAD if really needed. D. COMMANDS TO COMPOSE OR DECOMPOSE PWADS -wadir Directory list, with entry identification. Exact entry identification is sometimes impossible in a PWAD. In that case, SPRITES, FLATS or PATCHES might be reported as GRAPHICS. -xtract -extract Will extract lumps, graphics, floors, patches, sprites, sounds, levels from a WAD and put them into a subdirectory of the with the same name. Also lists any texture entries of the wad in a file called TEXTURE1.TXT, which it puts in a subdirectory called \TEXTURES. If a given subdirectory does not exist, it will be created. Also creates the file WADINFO.TXT in the working directory. The working directory is the directory the command is entered from unless -dir is used to specify one. See the chapter on FORMATS for a description of WADINFO.TXT and TEXTURE1.TXT. This command will not overwrite already existing entries. It will complain and stop instead. page 14 -textures Lists the textures contained in DOOM.WAD or DOOM2.WAD into text files, TEXTURE1.TXT and TEXTURE2.TXT (TEXTURE2.TXT does not exist in DOOM2). The files are deposited in a subdirectory called TEXTURES. If \TEXTURES does not exist, it will be created. This command will not overwrite TEXTURE1.TXT or TEXTURE2.TXT if they are already present. -make -build -create Reads WADINFO.TXT and uses it to compose MYOWN.WAD from the files in the subdirectories. See FORMATS for a description of WADINFO.TXT. MYOWN.WAD will be created in the current directory. If it already exists, it WON'T be overwritten, so it must be deleted to create a new version. This command replaces DMGRAPH, DMMUS, DMTEX and DMAUD. (DMAUD recognises more formats than .WAV and .AU, but it doesn't work with DOOM v1.666 or DOOM2). -check Will look for any textures defined in MYOWN.WAD which contain void columns that would crash DOOM. Use this after modifying textures (Similar to the way you use checks in DEU). -unused Checks for unused bytes in a PWAD. Reports all the unused zones, total number of byte wasted, and the repartition depending on size of wasted areas. E. COMMANDS FOR MERGING PWADs INTO THE MAIN IWAD -merge Will put the entries of MYOWN.WAD into the main DOOM.WAD file, thereby removing all restrictions DOOM puts on PWADS. This is much safer and much cleaner than inserting or restoring entries with DMGRAPH or such, but your IWAD IS modified. Usually used for SPRITES and FLATS. -restore Will restore DOOM.WAD and the merged MYOWN.WAD. To be used after the -merge command, to undo the job. Files are reconstructed using information stored in the IWAD at the time the -merge is done. page 15 NOTE ON SAFETY: - ONLY 8 BYTES of DOOM.WAD are modified (but the PWAD file size increases about 32K...) - If all else fails, you can restore your IWAD by hand. - MYOWN.WAD is put INTACT into DOOM.WAD. It can then be deleted since -restore recreates it. This is barely a modification at all! - Only about 32k of additional disk space are needed. How does it work? - Restoration information is added at the end of the IWAD. - Then the PWAD is pasted intact at the end of the IWAD. - The IWAD directory is rebuilt (about 32K) and appended. - The pointer to the DOOM directory is modified (8 bytes). I did my best to make this command the safest possible. I have tested this command thoroughly and believe it can be trusted. Be aware, however, that the resulting IWAD might not work with DOOM if the included PWAD does not respect some conventions about SPRITES and FLATS. If this happens, the files are still safe, just -restore them. The conventions a PWAD must follow are: -There must be F_START or FF_START before the first flat. -There must be S_START or SS_START before the first sprite. Sorry, but there is NO OTHER WAY if we want to be able to add new sprites and flats that are unreferenced in DOOM.WAD. page 16 CHAPTER 4 *************************** DeuSF Commands **************************** A. SUMMARY: DeuSF is an improved replacement for DMADDS. It adapts to all versions of DOOM, requires a less perverted PWAD structure and appends to a PWAD rather than generating a new PWAD (thereby saving space). DeuSF will work with PWADs composed for DMADDS, and should work for ones composed for DMADDF. Of course, the PREFERRED PWAD composer for DeuSF is DeuTex! The code for DeuSF is 80% the same as that of DeuTex. The DeuSF -app command is just a modified version of the amazing DeuTex -merge command (the ONLY command that removes ALL PWAD limitations :->) DeuSF need only be applied to PWADS that contain: -some sprites to replace those of DOOM.WAD. -some flats to replace those of DOOM.WAD. DeuSF need NOT be used if: - the PWAD contains *all* the sprites of DOOM.WAD - the PWAD contains *all* the flats of DOOM.WAD - the PWAD contains sprites which are not referenced in DOOM.EXE. (a DeHacked patch is needed to have them work) DeuSF can only be used on PWADs that respect a precise format: - Sprites are identified only if comprised between: S_START or SS_START and S_END or SS_END -Flats (floor/ceilings) are identified only if they occur between: F_START or FF_START and F_END or FF_END If this format is NOT respected, DeuSF fails to identify entries correctly. This is because in IWAD and PWAD entries there is nothing internal to a Sprite or Flat that identifies it as such. This format is generated by DeuTex automatically, and is compatible with DMADDS. DeuSF is meant to be distributed with your PWAD, so it has no restrictions on distribution (Unlike DeuTex, see License Section). This lets you send DeuSF with your PWAD, along with a batch file like the one in the following example. Your PWAD contains new sprites and flats, but not all of them. Your batch file might read: DeuSF -app mywad.wad DOOM -file mywad.wad -warp x x DeuSF -res mywad.wad The first command appends the necessary Sprites and Flats. The second command plays the wad. The last command restores everything to where it was. This kind of PWAD should PREFERABLY be built with DeuTex. page 17 An example of DeuSF usage on ALIENDOOM 1.0: DeuSF -doom c:\doom -sprite -add ALIENGFX.WAD ALINGRFX.WAD or, even better: DeuSF -doom c:\doom -sprite -app ALIENGFX.WAD You *should* take the time to evaluate this tool even if you're not convinced at all. Trust that this time won't be wasted. Note: version 1.0 of NewWadTool is not as powerful as DeuSF for inserting sprites and flats. This should improve in future versions, eventually achieving full compatibility between the two tools. B. COMPLETE COMMAND REFERENCE: All optional commands must appear before non-optional ones or else they will be ignored. Command Line Format: DeuSF ,...,,...,etc. C. HELP COMMANDS -help Lists these parameters. -format Displays a summary of the format conventions a PWAD must follow so that DeuSF can recognize Sprites and Flats properly. -wadir Scrolls the entries in the PWAD directory down the screen, along with what type DeuSF thinks each entry is (sprite, flat, graphic, etc.). For a PWAD with many entries, you may want to pipe this command (i.e. DeuSF -wadir | more) to ease readability. Used to check if DeuSF recognises all the entries correctly, for instance when there is a problem with -app or -add. D. OPTIONAL COMMANDS -doom Use this command to indicate the directory containing the DOOM.WAD and DOOM.EXE you want to use. See the description in the DeuTex command reference for default information. For example: DeuSF -doom C:\GAMES\DOOM -sprite Use with -add or -app, to add only sprites or only flats. -flat Default for -add and -app is to add both. page 18 E. MANDATORY COMMANDS (one of the following will always be used) -add Will create a new file, ALLSF.WAD, containing all the sprites and flats of DOOM.WAD together with those contained in MYOWN.WAD. -app Will append to MYOWN.WAD only those sprites of DOOM which are not redefined. This saves disk space, compared to -add command. -res Restores a PWAD which had been modified with -app command. Quite safe. page 19 CHAPTER 5 ******************************* FORMATS ******************************* ---------------------------- A) The WAD Creation Directive WADINFO.TXT ---------------------------- The creation directive file is used by the DeuTex -make command to compile a PWAD containing all of the desired enhancements. It is automatically generated by the -xtract command and placed in the working directory (e.g. MYWAD\). You can rename this file whatever you like, and reference it when you use the -make or -merge commands. The file lists most of the entries which will be present in the PWAD file (with the exception of PATCHES and PNAMES, see note below). It contains 6 sections: LEVELS LUMPS TEXTURES SOUNDS GRAPHICS FLATS. They are in the same order as found in DOOM.WAD and DOOM2.WAD. The sections MUST appear in this order. Those not in the right order will be ignored without warning. All sections are optional, and may be deleted provided the remaining sections are in the correct sequence. NOTE: There is no PATCHES section. PATCH loading is automatic. No PNAMES entry is defined. PNAMES creation is automatic. TEXTURE1 and TEXTURE2 are reserved TEXTURE names. TEXTURE1 must be present if *any* texture is redefined. TEXTURE2 does not have to be present if no registered (DOOM1) texture is redefined. If it is, no harm done, but your PWAD will be about 8K larger. ************************ WADINFO.TXT ***************************** # # Lines beginning with '#' are comments. # An asterisk after an entry means set equal to preceding entry # # The LEVELS section define the DOOM1 levels and DOOM2 maps. # Begin: LEVELS E1M2 #DeuTex will look for LEVELS\E1M2.WAD MAP04 #DeuTex will look for LEVELS\MAP04.WAD End: LEVELS # # E1M2.WAD must contain all the 11 entries that define a level. # meaning the NODES, BLOCKMAP and REJECT must have been built. # # if E1M2.WAD contains one level, it will be selected. # if E1M2.WAD contains many levels, the one named 'E1M2' will be # selected. # # The LUMPS section defines the lumps of raw data for DOOM. # Begin: LUMPS ENDOOM #DeuTex will look for LUMPS\ENDOOM.LMP DEMO1 #DeuTex will look for LUMPS\DEMO1.LMP End: LUMPS # # See Directory Structure - LUMPS\ for a precise description of all # these entries. Apart from the DEMO or possibly ENDOOM, there is no # real need to mess with them. DEMOs can be recorded by DOOM. # page 20 # The TEXTURES section defines the new textures. # # Begin: TEXTURES #DeuTex will first load MYWADIR\TEXTURES\TEXTURE1.TXT MYWALLS #DeuTex will look for MYWADIR\TEXTURES\MYWALLS.TXT #DeuTex will now look for MYWADIR|TEXTURES\TEXTURE2.TXT End: TEXTURES # # In the example above, if DeuTex does not find # MYWADIR\TEXTURES\TEXTURE1.TXT, it is not loaded, the normal TEXTURE1 # textures from DOOM will not be present, and your PWAD will crash. # Therefore, if you REDEFINE or CREATE ANY texture (from TEXTURE1 *OR* # TEXTURE2), TEXTURE1.TXT (with the redefined entry removed) MUST be # present. It must ALWAYS be loaded first. Must be a bug... # # TEXTURE2 is optional. Redefine it only if you need to modify one of # the DOOM1 registered textures. DOOM2 does not contain a TEXTURE2 # entry. If it's here when it's not needed, it will be loaded. # This won't hurt your PWAD, except to make it 8K fatter. # # The SOUNDS section defines MUSIC, PCSOUNDS and WAVE SOUNDS # Begin: SOUNDS D_E2M3 #DeuTex will look for SOUNDS\D_E2M3.MUS. It #must be present or your wad will make DOOM #stop and your computer lock up. #this is the music of Episode2 Mission3 D_E3M4 * #sets D_E3M4 music to be equal to D_E2M3 D_MAP01 * #set D_MAP01 music to be equal to D_E2M3 DSSLOP #DeuTex will look for SOUNDS\DSSLOP.WAV or .AU #this is a WAVE sound, meant for sound cards. DPSLOP #DeuTex will look for SOUNDS\DPSLOP.TXT #this is a PC speaker sound. End: SOUNDS # # MUS format can be obtained from MIDI with MIDI2MUS, or converted # back to MIDI by MUS2MIDI (by just_joe). These are separate utilities. # This is not a feature of DeuTex because I have no knowledge of MIDI. # # The WAV and AU format were hacked. DeuTex can't read compressed data. # # The format PC-speaker sound is a list of integers (range 1-255). # Must represent the inverse of frequency or something. I dunno. # # # The GRAPHICS section defines all the fixed pictures. # (Not sprites, patches, or flats) # Begin: GRAPHICS WIMAP1 #DeuTex will load GRAPHICS\WIMAP1.BMP STHURT1 23 45 #DeuTex will load GRAPHICS\STHURT1.BMP #and set the insertion point to 23,45 STHURT2 * #DeuTex will set STHURT2 equal to STHURT1 End: Graphics # # Fixed pictures include: opening screen, texts (!), menus, # status bar, ending pictures ... # You can only use names already defined in DOOM. Otherwise DOOM will # ignore them. (you'll be warned :-) # # page 21 # This section declares the SPRITES. # Begin: SPRITES BOSSB1 #DeuTex will load SPRITES\BOSSB1.BMP or .GIF #and calculate insertion point by itself BOSSA1 10 20 #DeuTex will load SPRITES\BOSSA1.BMP or .GIF #and set the insertion point to 10,20 BOSSA2A8 * #DeuTex will set BOSSA2A8 equal to BOSSA1 End: SPRITES # # If you redefine ALL sprites, use the -iwad option. # Otherwise, you'll have to use DeuSF to rebuild a complete sprite PWAD # each time the WAD is played. This is because of a limitation of DOOM # which still has not been removed (ask ID software about it). # # # Don't declare your patches. # A patch, say xxxx, will automatically be loaded into the PWAD from # the file PATCHES\xxxx.BMP (or .GIF) if: # # - 'xxxx' is referenced in one of the TEXTURE files, as a patch. # - 'xxxx' exists as a patch in the original DOOM, and the file # PATCHES\xxxx.BMP (or .GIF) exists. (replacement of existing patch) # # # # The FLATS section declares the Floors and Ceilings # Begin: FLATS GRASS #DeuTex will load FLATS\GRASS.BMP (or .GIF) HERBE * #DeuTex will set HERBE to be equal to GRASS End: FLATS # # You can define new Flat names, or redefine existing flats, # but unless you redefine the complete list of FLATS, and use # the -iwad option, you'll have to rebuild the complete FLAT # list with DEUSF each time you want to use the PWAD. # # # WAD creation directives end here. # page 22 ----------------------------------- B. The Texture Definitions Text File TEXTURES\MYTEXT.TXT ----------------------------------- Some Notes on TEXTURE definitions: - READ the DOOM SPECS by Matt Fell. - You can create textures for transparent walls (see DeuTex Commands -rgb), but make sure that they're composed of one patch only, or else you'll get the Medusa Effect. - Avoid using a texture of height less than 128 on a wall with a height greater than that of the texture (Tutti Frutti effect). - READ the DOOM SPECS by Matt Fell. - Texture widths should be rounded to the next power of 2. (8,16,64,128,256,512,1024 are usable) - The patches composing textures shall not be more than 320 wide. - DOOM will ignore heights above 128. - READ the DOOM SPECS by Matt Fell. - You can create a non repeating sky texture: Define the SKY1 (or SKY2, or SKY3) entry as a 1024x128 area and place patches so as to cover it all. Note that the patches will appear horizontally inverted. 0=east, 256=north, 512=west, 768=south. - Make sure all textures are completely covered by patches. Otherwise, DOOM will puke (void column error). - You can create animated walls with (almost) any sequence of pictures. No known limit in the number of frames (27 is OK!). The way to do this is: Redefine one of DOOM's existing animated walls(beginning and end), and add any extra entries between them in the TEXTURE list. - READ the DOOM SPE.... Well, you get the picture >;-{]> Once you have created a new PWAD, check it with the -check command. DeuTex will complain if: - Any texture width is NOT a power of 2 (2,4,8,16,32,64,128,etc). (DOOM will round to the next lower power of 2) - Any texture height is greater than 128. (DOOM ignore everything above 128) - Any texture is not completely covered by patches. (DOOM exit with a void column error) A texture entry consists of: (TEXTURE NAME) (WIDTH) (HEIGHT) (*) (PATCH1) (X offset)(Y offset) (*) (PATCH2) (X offset)(Y offset) (*) (PATCH3) (X offset)(Y offset) . . . . . . . . . . . . (*) (PATCHn) (X offset)(Y offset) page 23 Texture Names are 8 characters or less. Width and Height are in pixels. An asterisk identifies the following word as a PNAME. Patch Names are 8 characters or less. X and Y offsets are pixel measurements. Offsets are measured from upper-left corner (0,0). X = positive. Offset patch to the right. X = negative. Offset patch to the left. Y = positive. Offset patch down. Y = negative. Offset patch up. The following figure is a feeble attempt to illustrate this: _______________________ | | ^ | PATCH 1 | | | Both x and y | Y | have negative | | | offsets. _______|_v_______________________________________ | | | ^ | ^ | | | | TEXTURE | | | | | | | | | | | Y | | | | | | | | |_______________|_______| | | H | __v_______________________ | E <----- X ----->| | | | I | | PATCH 2: | | G | | Both x and y have | | H |<------- X ------->| positive offsets. | | T | | | | | | | | | | | | | | | | |__________________________| | | | | | |_________________________________________________| v <-------------------- WIDTH ---------------------> TEXTURE DEFINITION SHOWING PATCH OFFSETS page 24 Texture Definition File Example ***************************** MYTEXT.TXT ****************************** # # Anything following a '#' is ignored (comment). # # An asterisk '*' at the beginning of a line indicates a PATCH. # # Begin: TEXTURES # # ASHWALL is a texture 64 pixels wide, and 128 pixels high. # It contains only one patch, W104_1, with no offset. # ASHWALL 64 128 * W104_1 0 0 # # BIGDOOR7 is a texture of size 256x128 (X size, Y size) # composed of two patches, W105_1 and W105_1 # respectively placed at offset -4,-4 and offset 124, -4 # BIGDOOR7 256 128 * W105_1 -4 -4 * W105_1 124 -4 # # FLOWER is a new texture (didn't exist in DOOM.WAD). # It is composed of an old patch. # FLOWER 32 128 * TP5_1 0 0 # # BLODGR2 redefines the old BLODGR2 texture to be composed of # the new patch BIRDY # BLODGR2 34 128 * BIRDY 0 0 # # new texture HADDOCK, composed of new and old ones # HADDOCK 64 128 * FISH1 0 0 * BIGFISH 23 44 * TP5_1 0 0 # # example of wall animation # # Start with the first entry of an existing animation (FIREBLU1) # Insert additional entries as needed for your animation (ZZZ...) # End with the closing entry of the existing animation (FIREBLU2) # When FIREBLU1 is used in your PWAD, it will have your animation! # Notice that the example uses sprites as PATCHES. DOOM don't # know and DOOM don't care! # FIREBLU1 128 128 #First frame is a redefined * WALL62_1 0 0 #DOOM animated texture. These * BOSSA1 83 47 #are called in the DOOM.EXE. * GOR2A0 20 -70 # page 25 # ZZZA 128 128 #Frame 2 inserted. * WALL62_1 0 0 * BOSSB1 75 47 * GOR2A0 20 -50 ZZZB 128 128 #Frame 3 inserted. * WALL62_1 0 0 * BOSSC1 71 47 * GOR2A0 20 -35 ZZZC 128 128 #Frame 4 inserted. * WALL62_1 0 0 * BOSSD1 61 47 * GOR2A0 20 -25 ZZZD 128 128 #Frame 5 inserted. * WALL62_1 0 0 * BOSSF1 47 47 * GOR2A0 20 -20 ZZZE 128 128 #Frame 6 inserted. * WALL62_1 0 0 * BOSSE8 54 47 * GOR2A0 20 -17 ZZZF 128 128 #Frame 7 inserted. * WALL62_1 0 0 * BOSSE7 68 47 * GOR2A0 20 -16 ZZZG 128 128 #Frame 8 inserted. * WALL62_1 0 0 * BOSSE6 64 47 * GOR2A0 20 -17 ZZZH 128 128 #Frame 9 inserted. * WALL62_1 0 0 * BOSSF5 60 47 * GOR2A0 20 -20 ZZZI 128 128 #Frame 10 inserted. * WALL62_1 0 0 * BOSSF4 63 47 * GOR2A0 20 -25 ZZZJ 128 128 #Frame 11 inserted. * WALL62_1 0 0 * BOSSD2D8 64 47 * GOR2A0 20 35 ZZZK 128 128 #Frame 12 inserted. * WALL62_1 0 0 * BOSSB1 68 47 * GOR2A0 20 -50 ZZZL 128 128 #Frame 13 inserted. * WALL62_1 0 0 * BOSSC1 70 47 * GOR2A0 20 -70 FIREBLU2 128 128 #Fourteenth Frame is an * WALL62_1 0 0 #edited FIREBLU2, which is * BOSSB1 73 47 #the last frame of the * GOR2A0 20 -64 #DOOM animated texture. # # End of example ############################################ End: TEXTURES # # # file ends here. bye! page 26 CHAPTER 6 ************************** WORKING WITH WADS ************************** INTRODUCTION Read the DOOM SPECS: Sorry. This is still unavoidable. NOTE: In the discussion that follows, remember to avoid the following common mistakes: Hall of Mirrors with new textures: Care has been taken to ensure that DeuTex loads the old TEXTURE1 textures before adding new textures. However, it is still a good idea to: First, create your level. Then, build the nodes and reject. Then add the new textures. I don't do this myself, and it still works, but leonardc@halcyon.com has reported this error. It seems to be a problem with node builders, but I'm quite confused... Tutti Frutti and Medusa Effect: See the DOOM specs, and the FORMATS chapter. Doom reports a void column and exits: Use DeuTex -check on you PWAD before running DOOM. It will tell which textures still have void columns. Other bugs: Mail me a description of the bug, together with your configuration file. Don't expect a quick answer, though. ----------------------- A. How to decompose a PWAD ----------------------- First check that all the entries are identified correctly: DEUTEX -wadir NEWBIE.WAD This will list the directory. To extract all the entries: DEUTEX -xtract NEWBIE.WAD The whole directory structure is extracted, and WADINFO.TXT is created. To extract only a part of the directory; sounds, for instance: DEUTEX -sound -xtract NEWBIE.WAD Only the sound directory is created. NOTE: Some PWAD creators declare PATCHES, FLATS and SPRITES outside of the normal boundaries. In that case, DeuTex may not identify them correctly, and they'll end up in another directory (under a wrong format). I'm sorry about this, but there is *nothing* I can do. page 27 Once you have decomposed a PWAD, you can rebuild it with: DEUTEX -make WADINFO.TXT NEWBIE.WAD WADINFO.TXT was automatically created in the first steps (cool, no?). NOTE: DEUTEX puts a signature at the beginning of each PWAD created, to identify the DEUTEX version that was used. -------------------------------------- B. How to create a PWAD with new TEXTURES -------------------------------------- First list the textures of DOOM: DEUTEX -texture Then look at .\TEXTURES\TEXTURE1.TXT and .\TEXTURES\TEXTURE2.TXT. To create a new texture, declare it in .\TEXTURES\MYTEXT.TXT. MYTEXT.TXT can be any name *except* TEXTURE1 or 2. See the chapter on FORMATS for a more precise definition. If you want to redefine a TEXTURE1 or TEXTURE2 entry, remove it from TEXTURE1.TXT or TEXTURE2.TXT and put it in MYTEXT.TXT. If you don't redefine textures from TEXTURE2.TXT, delete that file. For compatibility with DOOM2, TEXTURE2.TXT should not exist. Declare MYTEXT in the TEXTURES section of WADINFO.TXT: DEUTEX -make WADINFO.TXT NEWBIE.WAD Check your PWAD for texture errors: DEUTEX -check NEWBIE.WAD Note: TEXTURE1.TXT and TEXTURE2.TXT are auto-loaded if they exist, because DOOM prefers to have it's old textures listed first (I dunno why). DeuTex takes care of that. ----------------------------------------------- C. How to create a PWAD with new SPRITES and FLATS ----------------------------------------------- BEWARE: Sprite replacement is tricky. One false move and DOOM will lock up. Check your work often. Put your sprite files in \SPRITES in .GIF or .BMP format. Put your flat files in \FLATS in .GIF or .BMP format. Declare your sprite NAMES in the SPRITES section of WADINFO.TXT. Declare your flat NAMES in the FLATS section of WADINFO.TXT. Use only the NAME in WADINFO.TXT, without the .GIF or .BMP extension. If you want to replace *ALL* of the sprites and flats in DOOM (crazy): DEUTEX -iwad -make WADINFO.TXT NEWBIE.WAD NEWBIE.WAD will be directly usable by DOOM. page 28 To replace *SOME* of the sprites and flats in DOOM (better): DEUTEX -make WADINFO.TXT NEWBIE.WAD This NEWBIE.WAD will be much smaller and easier to distribute. BUT: This NEWBIE.WAD will cause DOOM to lock up when it starts!(bad) So, if you want to replace only *SOME* of the sprites and flats in DOOM, you have 3 choices: DEUTEX -merge NEWBIE.WAD Modifies DOOM.WAD. (Safe and fast) DEUSF -append NEWBIE.WAD Modifies NEWBIE.WAD. (Safer, still fast, but wastes space) DEUSF -add NEWBIE.WAD NEWBIE2.WAD Creates NEWBIE2.WAD. (Safest, but more space wasted.) NOTE: The steps above are performed at the end users' site (preferably from a batch file supplied with your PWAD). This means the user must have DeuSF, which can be distributed freely with your PWAD, or DeuTex, which has some restrictions. See the License Agreement at the end of this manual for the restrictions on distributing DeuTex. If you are adding only sprites, use the -sprite command to avoid inheriting the flats too: DEUSF -sprite -app NEWBIE.WAD Alternatively, use the -flat command to add only flats without inheriting the sprites: DEUSF -flats -add NEWBIE.WAD NEWBIE2.WAD ---------------------------------- D. How to create PWAD with new SOUNDS ---------------------------------- First put your sound files in the .\SOUNDS directory. Then, declare the sound NAMES in the SOUNDS section of WADINFO.TXT. See APPENDIX IV for a listing of the sound names recognized by DOOM. DEUTEX -make WADINFO.TXT NEWBIE.WAD Sound effects: [DSxxxxxx.WAV or DSxxxxxx.AU] Must be in WAV or AUDIO format (SUN). Make sure the format is *not* compressed and does *not* contain comments. My code is pretty basic, because I never had the specs of those formats. Hacked! PC speaker sounds: [DPxxxxxx.TXT] Text files containing a list of numbers from 1-255. Music: [D_xxxxxx.MUS] Must be in MUS format. Convert MIDI files to MUS files by using the enclosed MIDI2MUS.EXE (thanks to -dtt-> of ID software). page 29 CHAPTER 7 *************** TEST-ME or What's inside TRINITY.WAD? ***************** ------------- A) About TEST-ME ------------- Do you want to have a quick overview of some of the capacities of DeuTex before deciding if it's worth the trouble? This file is for you: It will list the contents of TRINITY.WAD (with identifications). It will decompose and then recompose TRINITY.WAD. All this in only 3 trivial DeuTex commands. Requirements: - You must have TRINITY.WAD, the great PWAD by Steve McCrea. (available on infant2.sphs.edu as TRINITY2.ZIP and in the Compuserve GAMERS FORUM LIB 8 as TRINTY.ZIP) - Doom must be in the \DOOM directory (\DOOM2 could work too) - TRINITY.WAD must be in the current directory. - You must have *some* room left on your disk :-) - You must be running DOS 5.0 or higher. - You must NOT reuse contents of TRINITY.WAD without crediting Steven McCrea. Description of the file, DEMO.BAT: ---------------------- B) Listing the directory ---------------------- rem ***DeuTex*** deutex -doom \doom -wadir TRINITY.WAD ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ (a) (b) (a)---> This tells DeuTex that DOOM.WAD and DOOM.EXE are in the \DOOM directory. OPTIONAL. (b)---> This tells DeuTex to list the directory of TRINITY.WAD reporting the entry types. Types *could* be wrong, but not with Trinity. ------------------------ C) Decomposing TRINITY.WAD: ------------------------ rem ***DeuTex*** deutex -doom \DOOM -dir . -xtract TRINITY.WAD ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ (a) (b) (c) (a)---> The same as before. (b)---> This tells DeuTex that it must store the result in the directory '.' (which is the current directory). You could skip (b), since '.' is the default, or you could specify another directory, like -dir TEST. (c)---> This tells DeuTex to search for entries in TRINITY.WAD. page 30 ---------------------------------------- D) Recomposing TRINITY.WAD as TRINIDAD.WAD: ---------------------------------------- rem ***DeuTex**** deutex -doom \doom -dir . -make WADINFO.TXT TRINIDAD.WAD ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ (a) (b) (c) (d) (a)---> The same as before. (b)---> The same as before. (c)---> This tells DeuTex to create a new PWAD, from the creation directives contained in WADINFO.TXT. (d)---> This is the name of the created PWAD. ------------------------ E) Customizing TRINITY.WAD: ------------------------ You can edit WADINFO.TXT, the format is pretty simple to guess. (see the FORMATS chapter for a precise definition of this format) - You can put anything you want on a line that begins with a #, because # means 'comments'. - Don't touch any lines with Begin: or End: (they are delimiters). - The lines between Begin: and End: describe a section. Begin: SOUNDS D_E1M1 End: SOUNDS This tells DeuTex to go into the SOUNDS subdirectory and get a file called D_E1M1.MUS, which is the music of TRINITY.WAD. You might wish to delete this D_E1M1 if your soundcard crashes while playing trinity. You can add your own music, for Episode 1 Mission 2 by editing: Begin: SOUNDS D_E1M1 D_E1M2 End: SOUNDS Of course, the file D_E1M2.MUS must exist... You can generate it from D_E1M2.MID (MIDI format) by using MIDI2MUS. BEWARE: DeuTex is NOT fool proof yet. It should not crash your computer, but the generated PWAD may crash DOOM if you make mistakes. I'm very sorry for this, but I have more urgent optimizations to do than foolproofing. However, the PWAD generated here should not crash DOOM, if you use the real TRINITY.WAD as a basis. page 31 CHAPTER 8 ************************** VisualBasic Shell ************************** ------------------------------------- Vbdeutex.exe This is the windows shell for DeuTex. 1.2 Alpha test version. ------------------------------------- Enjoy & Criticize but don't Complain. DeuTex 3.0 should contain a better version. VbDeutex and deutex.pif must be in the same directory. DeuTex.ini contains default info. Edit DeuTex.pif to suit your needs. DeuTex.pif calls deutex.exe and to work correctly: - It must exit once finished. - It must run in background. - It must not run full screen. Note that deutex.pif will be minimized on startup. VB DeuTex is provided as is with no manual! (I can't compile Windoze Help, for lack of skill :-)) You'll have to guess it all or suffer a terrible frustration. I'm not gonna waste time on this. It should be intuitive enough. BEWARE: Behavior cannot entirely be predicted. Don't forget you are running MS-Windows, and thus keep an eye on the reset button. I don't feel at all responsible if everything goes wrong. I wrote some code, but you can't expect a Microsoft product to execute it correctly. WINDOZE SUCKS! SOMEONE PUT BILL GATES IN DOOM! page 32 CHAPTER 9 *************************** NECESSARY STUFF *************************** ------------------------------ A. DeuTex/DeuSF License Agreement ------------------------------ DeuTex/DeuSF is copyright (c) Olivier Montanuy 1994. The GIF code was from a source (c) David Koblas. DeuTex code was originally derived from DEU5.21 by Brendon Wyber and Raphael Quinet. DeuSF is inspired from DMADDS by Bernd Kreimeier DeuTex/DeuSF is a Freeware set of tools. DeuTex is Freeware but NOT public domain. DeuSF can be freely distributed with PWADS as part of their install. Here are the restrictions on the usage of DeuTex: - You shall not use these tools to extract or insert copyrighted material in DOOM IWADs and PWADs. You are especially not allowed to use them to build any 'shareware' DOOM version. - You are not allowed to modify or reverse engineer these tools. (sources will be available to you if I feel you can be trusted) - You cannot distribute these tools commercially without my written consent. This includes all kind of non free distribution (shareware, charging for uploads, or selling it on any kind of media). *Compuserve is allowed to distribute DeuTex/DeuSF without restrictions* - Anything you build with this tool shall be free for everyone, unless you get written permission from me. - DeuTex must be distributed with all the files in this package, including DeuSF, the manual and this license. Only DeuSF can be distributed separately, for reasons mentioned above. - I will accept no liability for any damage consecutive to the use of this program. Remember it is freeware. There is no evil intent anywhere in the source of this program but I can't guess what the compilers might have hacked out of it, or how your system will feel about it. ----------- B. Legal Stuff ----------- *********************************************************************** * I have no relations with ID software (except as a registered user) * * They don't care about this program, and certainly never will! * * I have good relations with Raphael Quinet and Brendon Wyber. I * * also have good relations with Steve McCrea. They CANNOT be * * expected to answer questions about this program. They will get * * poor if THEY receive questions about MY program. * * * * so please: * * Direct all comments to me, don't bother them. * * * *********************************************************************** page 33 Why is DeuTex Copyrighted? It's so that I can make the following requirement, which would be impossible with Public Domain status: YOU ARE NOT ALLOWED TO MAKE ANY MODIFICATIONS TO THIS PROGRAM OR TO THE INCLUDED FILES. ALL THE FILES INCLUDED IN THIS PACKAGE SHALL BE RELEASED TOGETHER. If you want modifications, ask me, I'll do my best. Later on I'll release the source, when stabilized. USE AT YOUR OWN RISK. NO LIABILITY IS ACCEPTED. It runs under DOS, so behavior is unpredictable . YOU ARE NOT ALLOWED TO MAKE ANY KIND OF PERSONAL PROFIT BY SELLING, RENTING, LEASING, OR USING THIS PROGRAM, WITHOUT MY EXPLICIT WRITTEN CONSENT. If you are interested in distributing it on a CD or any other media, contact me first. I should accept, provided: - you keep the price low, for maximum availability. - you send me a free copy. SPECIAL EXCEPTION: CompuServe is allowed to charge normal upload fees to distribute this program, provided I receive (by e-mail) a monthly report of the total number of said uploads. * All right folks, it was a shame, but it had to be stated somewhere... page 34 ------ C. THANKS ------ First, thanks to you for taking the time to evaluate DeuTex/DeuSF. I know my program is not trivial to use, and might be tricky to understand, but I really think it's worth the trouble. DeuTex/DeuSF would not have existed without the help of these people: Steve McCrea Author of TRINITY.WAD and DOOMTEX. Raphael Quinet Examples of GIF and DEU code. (quinet@montefiore.ulg.ac.be) Elias Papavassilopoulos Doom technical information. (ep104@cus.cam.ac.uk) Matt Fell Doom specs version 1.3 (matt.burnet@acebbs.com) Keith Wilkins Creator of Wacker, a texture (spike@nectech.demon.co.uk) composer. Try it! Tom Neff Doom technical information. (tneff) Bern Kreimeier Original DMADDS/DMADDF idea. (bernd@nero.uni-bonn.de) Dewi Morgan Unashamed flattery that lead me to (D.Morgan@bradford.ac.uk) create DeuSF from DeuTex code. ID software For the DEUTEX/DeuSF test bench, also (help@idsoftware.com) known as 'DOOM'. Special Thanx to: Per Allansson DeuTex Linux version. (c91peral@und.ida.liu.se) Mark Mathews DeuTex OS/2 port. (mark.mathews@channel1.com) page 35 -------------- THANKS (cont.) -------------- Thanks to all of you who reported bugs and proposed correction or generally supported my efforts: Leonard Czajka leonardc@halcyon.halcyon.com Herve.Benvel Herve.Benvel@inria.fr Paolo Hutchison paolo@netcom.com M. Kernaghan mkernagh@julian.uwo.ca Thierry Vermat vermat@evol10.univ-lyon1.fr Jeremy Blackman ranma@eskimo.com Jason Mezzacca 72510.3424@compuserve.com C. Gasparo cgasparo@cymbal.aix.calpoly.edu Finally: Thanks to Justin Fisher for letting me use DeuTex and DeuSF on a new install for Alien-TC (despite all the small mistakes I made). Finally - part 2 (No really, this is it! Trust me!): Olivier told me to put myself in the thanks section, so, thanks to me: Kevin McGrail, novice Manual Editor. 74107.1254@compuserve.com Thanks for thanking me, Olivier, but this one made the thanks section split into two pages. *I* figured it was too long already! . You sure are a grateful guy! Thank YOU for a great utility. SHAMES DeuSF would not have existed if there was not a stupid bug in the DOOM code for loading FLATS and SPRITES, that locks up DOOM when you try to replace existing entries. page 36 ------------------------- D. Where to get DeuTex/DeuSF ------------------------- DeuTex/DeuSF are meant to be available by anonymous FTP on Internet sites: the same as of that of DEU. infant2.sphs.indiana.edu,ftp.luth.se,iglou.com,... /pub/doom/deu /pub/doom/wad_edit/misc DeuTex/DeuSF are available on Compuserve, by special request of Dr. Sleep. GAMERS FORUM LIB 8 ACTION GAME AIDS [CIS:GAMERS] PC WORLD FORUM LIB 22 The DOOM ROOM [CIS:PWOFORUM] DeuTex/DeuSF can be available on any free of charge BBS. Though a freeware tool, DeuTex cannot be distributed by shareware vendors without my written agreement. DeuSF can be freely distributed, because it is meant to help install some PWADs, and thus is not subject to any restrictions. You might also want to try: DOOMTEX by Steve McCrea A list of tools to generate textures. It's not exactly user friendly, but successfully used for TRINITY.WAD. For hackers only :-) I *do* hope you'll find DeuTex a bit easier to use, but Steve was a pioneer in the area of texture editing! WACKER by Keith Wilkins A graphic texture editor. I could not test it, but it should be good. It would be a good idea to use it in combination with DeuTex. ----------- E. FINAL WORDS (AT LAST) ----------- Thanx for using DeuTex. I wasted long hours on it, so I could hope it will be of use. Though in fact I just wanted to program *something that works*, It's a kind of moral crisis that I had to atone in an orgy of programmation. Such things happen when you spend too much time dealing with norms and specifications... Olivier Montanuy, E-Mail: montanuy@lannion.cnet.fr Work time mailbox montanuy@dmi.ens.fr Leisure time mailbox montanuy@idsoftware.com Dream time mailbox Address: Manoir de Keringant, St Quay Perros, 22700 Perros Guirec, FRANCE This is in Bretagne (Brittany), the westernmost part of France. Phone: +33 96482047 (time: UTC+1) modem: 1 bit of usable information per second (vocal emulation) page 37 APPENDIX I Here is a listing of the switch textures for DOOM.WAD Begin: TEXTURES # SW1BRCOM 128 128 * WALL62_1 0 0 * SW1S0 48 72 SW1BRN1 64 128 * WALL02_2 0 56 * WALL02_2 0 0 * SW3S0 16 75 SW1BRN2 64 128 * WALL02_2 0 56 * WALL02_2 0 0 * SW4S0 20 79 SW1BRNGN 64 128 * WALL62_2 0 0 * SW4S0 20 80 SW1BROWN 128 128 * WALL62_1 0 0 * SW3S1 48 72 SW1COMM 64 72 * W13_1 0 0 * SW1S0 15 18 SW1COMP 64 128 * COMP03_4 0 64 * COMP04_5 0 0 * COMP03_4 32 64 * SW2S0 16 72 SW1DIRT 64 128 * WALL00_7 32 0 * WALL00_6 16 0 * SW1S0 16 20 * WALL00_6 0 -16 * WALL00_7 48 0 SW1EXIT 32 72 * W32_4 0 0 * SW2S0 0 16 * W33_8 0 64 SW1GRAY 64 128 * W31_1 0 0 * W31_1 0 64 * SW2S0 16 70 SW1GRAY1 64 128 * W31_1 0 64 * W31_1 0 0 * SW4S0 19 79 SW1METAL 64 128 * WALL03_7 0 0 * WALL03_7 0 64 * SW4S0 20 68 SW1PIPE 128 128 * TP2_2 0 0 * SW3S0 48 76 SW1SLAD 64 128 * WLA128_1 0 0 * WARNB0 24 73 page 38 SW1STARG 128 128 * SW19_3 64 0 * SW19_4 0 0 * SW3S0 48 76 SW1STON1 64 128 * W28_8 0 64 * W28_8 0 0 * SW1S0 16 78 SW1STON2 64 128 * W28_5 0 0 * W28_8 0 64 * WARNB0 24 73 SW1STONE 64 128 * WALL01_1 0 0 * WALL01_2 16 0 * WALL01_3 32 0 * WALL01_4 48 0 * WALL01_1 0 72 * WALL01_2 16 72 * WALL01_3 32 72 * WALL01_4 48 72 * W33_8 0 64 * W33_8 0 120 * SW1S0 16 72 SW1STRTN 64 128 * SW12_4 0 0 * SW12_5 32 0 * SW1S0 16 72 SW2BRCOM 128 128 * WALL62_1 0 0 * SW1S1 48 72 SW2BRN1 64 128 * STEP07 32 72 * STEP07 0 72 * WALL02_2 0 56 * WALL02_2 0 0 * SW3S1 16 75 SW2BRN2 64 128 * WALL02_2 0 56 * WALL02_2 0 0 * SW4S1 20 79 SW2BRNGN 64 128 * WALL62_2 0 0 * SW4S1 20 80 SW2BROWN 128 128 * WALL62_1 0 0 * SW3S0 48 72 SW2COMM 64 72 * W13_1 0 0 * SW1S1 15 18 SW2COMP 64 128 * COMP03_4 0 64 * COMP04_5 0 0 * COMP03_4 32 64 * SW2S1 16 72 SW2DIRT 64 128 * WALL00_8 48 0 * WALL00_7 32 0 * WALL00_6 16 0 * WALL00_5 0 -1 * SW1S1 16 20 page 39 SW2EXIT 32 72 * W32_4 0 0 * SW2S1 0 16 * W33_8 0 64 SW2GRAY 64 128 * W31_1 0 0 * W31_1 0 64 * SW2S1 16 70 SW2GRAY1 64 128 * W31_1 0 64 * W31_1 0 0 * SW4S1 19 79 SW2METAL 64 128 * WALL03_7 0 0 * WALL03_7 0 64 * SW4S1 20 68 SW2PIPE 128 128 * TP2_2 0 0 * SW3S1 48 76 SW2SLAD 64 128 * WLA128_1 0 0 * WARNA0 24 73 SW2STARG 128 128 * SW19_3 64 0 * SW19_4 0 0 * SW3S1 48 76 SW2STON1 64 128 * W28_8 0 64 * W28_8 0 0 * SW1S1 16 78 SW2STON2 64 128 * W28_8 0 64 * WARNA0 24 73 * W28_5 0 0 SW2STONE 64 128 * WALL01_1 0 0 * WALL01_2 16 0 * WALL01_3 32 0 * WALL01_4 48 0 * WALL01_1 0 72 * WALL01_2 16 72 * WALL01_3 32 72 * WALL01_4 48 72 * W33_8 0 64 * W33_8 0 120 * SW1S1 16 72 SW2STRTN 64 128 * SW12_4 0 0 * SW12_5 32 0 * SW1S1 16 72 # SW1BLUE 64 128 * COMP03_1 0 0 * COMP03_2 0 64 * SW2_7 14 66 SW1CMT 64 128 * WALL54_1 -42 0 * SW3S1 16 72 SW1GARG 64 128 * WALL47_2 0 0 * WALL42_6 12 62 page 40 SW1GSTON 64 128 * WALL48_2 0 0 * SW2_7 13 67 SW1HOT 64 128 * WALL49_1 0 0 * SW2_7 12 66 SW1LION 64 128 * WALL47_2 0 0 * WALL42_5 11 62 SW1SATYR 64 128 * WALL47_2 0 0 * WALL42_1 12 62 SW1SKIN 64 128 * HELL6_3 0 0 * SW2_5 0 59 SW1VINE 64 128 * WALL00_1 0 -16 * W106_1 0 0 * SW4S0 20 84 SW1WOOD 64 128 * WALL40_2 -64 0 * SW2_7 14 66 SW2BLUE 64 128 * COMP03_1 0 0 * COMP03_2 0 64 * SW2_8 14 66 SW2CMT 64 128 * WALL54_1 -42 0 * SW3S0 16 72 SW2GARG 64 128 * WALL47_2 0 0 * WALL47_5 12 62 SW2GSTON 64 128 * WALL48_2 0 0 * SW2_8 13 67 SW2HOT 64 128 * WALL49_1 0 0 * SW2_8 12 66 SW2LION 64 128 * WALL47_2 0 0 * WALL47_4 11 62 SW2SATYR 64 128 * WALL47_2 0 0 * WALL47_3 12 62 SW2SKIN 64 128 * HELL6_3 0 0 * SW2_6 0 59 SW2VINE 64 128 * WALL00_1 0 -16 * W106_1 0 0 * SW4S1 20 84 SW2WOOD 64 128 * WALL40_2 -64 0 * SW2_8 14 66 # End: TEXTURES # #The End page 41 APPENDIX II This is a listing of the animated walls in DOOM.WAD Begin: TEXTURES SLADRIP1 64 128 * WALL57_2 0 0 SLADRIP2 64 128 * WALL57_3 0 0 SLADRIP3 64 128 * WALL57_4 0 0 SLADWALL 64 128 * WLA128_1 0 0 # BLODGR1 32 128 * TP5_1 0 0 BLODGR2 32 128 * TP5_2 0 0 BLODGR3 32 128 * TP5_3 0 0 BLODGR4 32 128 * TP5_4 0 0 # BLODRIP1 32 128 * RP2_1 0 0 BLODRIP2 32 128 * RP2_2 0 0 BLODRIP3 32 128 * RP2_3 0 0 BLODRIP4 32 128 * RP2_4 0 0 # FIREBLU1 128 128 * W65B_1 0 0 FIREBLU2 128 128 * W65B_2 0 0 # FIRELAV2 128 128 * W73A_2 0 0 FIRELAV3 128 128 * W73B_1 0 0 FIRELAVA 128 128 * W73A_1 0 0 # FIREMAG1 128 128 * W74A_1 0 0 FIREMAG2 128 128 * W74A_2 0 0 FIREMAG3 128 128 * W74B_1 0 0 # FIREWALA 128 112 * WALL23_1 0 0 FIREWALB 128 112 * WALL23_2 0 0 FIREWALL 128 112 * WALL22_1 0 0 # GSTFONT1 64 128 * WALL58_1 0 0 page 42 GSTFONT2 64 128 * WALL58_2 0 0 GSTFONT3 64 128 * WALL58_3 0 0 # ROCKRED1 128 128 * WALL64_2 0 0 ROCKRED2 128 128 * W64B_1 0 0 ROCKRED3 128 128 * W64B_2 0 0 # # End: TEXTURES # #The End page 43 APPENDIX III Listing of Sound Names for DOOM I and II *Ripped off from DMGRAPH by Bill Neisius* Then corrected and expanded to include DOOM II sounds for this manual. DeuTex uses sound names rather than the artificial sound numbers used in DMGRAPH. NOTE: An asterisk '*' means sound is used for multiple functions. _____________________________________________ A) SOUNDS FOUND IN BOTH DOOM I and DOOM II _____________________________________________ Weapons DSPISTOL* Pistol firing DSSGCOCK* Shotgun cocking DSSHOTGN Shotgun firing (followed by cock) DSSAWUP Chainsaw start DSSAWIDL Chainsaw idle DSSAWFUL Chainsaw with trigger pulled DSSAWHIT Chainsaw hitting monster DSRLAUNC Rocket Launcher firing DSBAREXP* Rocket exploding DSFIRSHT Fireballs shot or passing DSFIRXPL* Fireball hitting object DSPUNCH Player punching DSPLASMA Plasma Gun firing DSFIRXPL* Plasma Round hitting object DSBFG BFG9000 firing DSRXPLOD BFG9000 round exploding Objects DSPSTART Floor/Lift starting DSPSTOP Floor/Lift stops (Clunk) DSSTNMOV Stairs/ceilings moving DSDOROPN Mechanical Door opening DSDORCLS Mechanical Door closing DSBDOPN Fast Door Open DSBDCLS Fast Door Close DSSWTCHN* Switch 'thunk' sound DSSWTCHX Switch 'pop' sound DSTELEPT Player/Monster teleport DSSLOP GUTS/SLOP (What the name says) DSITMBK Item Return in MultiPlayer DSBAREXP* Barrel explosion Player DSSKLDTH Player Push on wall DSNOWAY Player blocked by wall DSOOF Player hitting ground DSWPNUP Weapon pickup DSITEMUP Item pickup DSGETPOW Power up sound (Soul Sphere, etc.) DSPLPAIN Player injured DSPLDETH Player dying scream DSPDIEHI Player higher dying scream page 44 Former Humans DSPOSACT Former Human nearby breathing DSPOSIT1 Former Human sees Player DSPOSIT2 Former Human sees Player DSPOSIT3 Former Human sees Player DSPOPAIN* Former Human injured DSPODTH1 Former Human Death Moan DSPODTH2 Former Human Death Moan DSPODTH3 Former Human Death Yell Imps DSBGACT Imps nearby oinking DSBGSIT1 Imp sees Player DSBGSIT2 Imp sees Player DSCLAW* Imp clawing Player DSPOPAIN* Imp injured DSBGDTH1 Imp dying DSBGDTH2 Imp dying Demons/Spectres DSSGTSIT Demon/Spectre sees Player DSDMACT* Demon/Spectre nearby DSSGTATK Demon/Spectre chomping Player DSDMPAIN* Demon/Spectre injured DSSGTDTH Demon/Spectre dying Cacodemons DSCACSIT Cacodemon sees player DSDMACT* Cacodemon nearby DSDMPAIN* Cacodemon injured DSCACDTH Cacodemon dying Barons of Hell DSBRSSIT Baron sees Player DSDMACT* Baron nearby DSCLAW* Baron clawing Player DSDMPAIN* Baron injured DSBRSDTH Baron dying Lost Souls DSSKLATK Lost Soul attacking DSDMACT* Lost Soul nearby DSDMPAIN* Lost Soul injured DSFIRXPL* Lost Soul dying Spider Demon DSSPISIT Spider Demon sees Player DSMETAL Spider Demon walking DSSPIDTH Spider Demon dying page 45 Cyber Demon DSCYBSIT Cyber Demon sees Player DSHOOF Cyber Demon walking DSCYBDTH Cyber Demon dying Miscellaneous DSPISTOL* Menu selections DSPISTOL* Kills, Items, Secrets & Time at end of level screen DSSWTCHN* Esc to main menu DSBAREXP* Level finished explosion at end of level screen DSSGCOCK* Proceed to next level at end of level screen DSTINK "TINK" To Chat in Modem Play ___________________________________ B) SOUNDS FOUND ONLY in DOOM II ___________________________________ Weapons DSDBOPN Open Super Shotgun DSDBCLS Close Super Shotgun DSDBLOAD Reload Super Shotgun DSDSHTGN Fire Super Shotgun Revenant DSSKESIT Revenant sees Player DSSKEACT Revenant nearby DSSKEATK Revenant fires missile DSSKESWG Revenant swings at player DSSKEPCH Revenant punches player DSSKEDTH Revenant dying Mancubis DSMANSIT Mancubis sees Player DSMANATK Mancubis attacks DSMNPAIN Mancubis injured DSMANDTH Mancubis dying Pain Elemental DSPESIT Pain Elemental sees Player DSPEPAIN Pain Elemental injured DSPEDTH Pain Elemental dying Baby Spider DSBSPSIT Baby Spider sees Player DSBSPWLK Baby Spider walking DSBSPACT Baby Spider nearby DSBSPDTH Baby Spider dying page 46 Hell Knight DSKNTSIT Hell Knight sees Player DSDMACT* Hell Knight nearby DSCLAW* Hell Knight clawing Player DSDMPAIN* Hell Knight injured DSKNTDTH Hell Knight dying Arch-Vile DSVILSIT Arch Vile sees Player DSVILACT Arch Vile nearby DSVILATK Arch Vile attacks DSFLAMST Arch-Vile shoots Flame? DSFLAME Arch Vile's Flame arrives DSVIPAIN Arch Vile injured DSVILDTH Arch Vile dying Final Boss DSBOSSIT Final Boss sees Player DSBOSPIT Final Boss spits Cube DSBOSCUB Final Boss Cube lands and expands DSBOSPN Final Boss injured DSBOSDTH Final Boss dying Wolfenstein DSSSSIT Wolfenstein SS sees player. 'Schultstaffel'-'SS' DSSSDTH Wolfenstein SS dying. 'mein lieben' -'My Life!' DSKEENPN Commander Keen injured DSKEENDT Commander Keen dying Unknown DSRADIO Phone sound? Modem play? page 47 AFTERWORD TRINITY.WAD: HOW I MADE IT. For lost drunken men who no longer know where they are, but DO care. (Cell #2) Steve McCrea <> ----------------------------------------------------------------------- This information is published with DeuTex with permission from Steve McCrea This file is a bit obsolete. Get the last version directly from Steve McCrea. Examples are taken from DOOMTEX, which was used for TRINITY.WAD. To convert doomtex format to DeuTex format, simply add a '*' and a space before each PATCH name (not wall names). Here is an example: -------- doomtex: -------- DOORCRST 128 128 door11_1 4 0 door11_1 124 0 door11_1 -116 0 pcrest4 46 37 ------- DeuTex: ------- DOORCRST 128 128 * door11_1 4 0 * door11_1 124 0 * door11_1 -116 0 * pcrest4 46 37 Case is not significant for DeuTex, but it was for doomtex. ----------------------------------------------------------------------- I am writing this article in response to numerous inquiries about the techniques used in the creation of Trinity, and in particular a direct request from Ian Mapleson. It is in no way intended as a textbook approach, and I accept no responsibility for any time wasted as a result of following the procedures documented here. I may stray from the subject matter from time to time, as I said to the producer last week... Although titled "How I Made It", this may not be strictly true. I leave it as an exercise to the reader to determine which bits have been glossed over for clarity. page 48 LEVEL DESIGN As with all design, it is important to have the right tools and be familiar with them. I restricted myself unnecessarily at this early stage by only downloading DEU. I think this was a big mistake. The other editors out there may well have some great features I missed out on totally. I know, for instance, that at least one of the others supports auto stair construction. But since I didn't get the others, I don't know what else is available to speed design. My recommendation for those starting out in WAD design is to get them all, find out which does what best and then mix and match. You may find yourself using one for most of the layout and then just switching quickly to another to do some trick or other. Hopefully you won't get too confused! Before I started on Trinity, I had designed a few mini-levels in DEU. The first was just one room, then I did a couple of Wolfenstein levels, and so on. This got all the big mistakes out of the way, such as overlaying lines and vertices, splitting sectors wrongly, and losing work because DEU crashed. Then I laid out the courts in Trinity from memory, and ran about in Doom checking that the scale felt right. Initially there was an area surrounding the college but I dropped it because it was going to be boring, and the map was huge anyway. I left most walls the standard texture, and only added things like wood for gates. Having satisfied the sense of scale, I put in most of the rooms and passages, and added rough doors. SCANNING PHOTOGRAPHS About this time, I realized that it would be doing the college an injustice to use the standard Doom textures. I decided to scan some photographs of the college and put them in, so I borrowed Peter Morgan's (thanks Pete) camera on a sunny day and wandered over to Trinity. I tried to make the photographs I took clear from obstruction, shadow free and square to the viewer, i.e., with as little distortion as possible. I then scanned standard sized 6"x4" prints at on average 150dpi with Bill Milne's (thanks Bill) color scanner. I used Adobe PhotoShop on Bill's Mac to straighten the images and crop off what I was sure I didn't need, but I DIDN'T change the resolution or convert from 24 bit color and I DIDN'T crop right up to the edges of what I wanted. This was AFTER the test run on the Wren library, the southern upper wall of the southwest courtyard (NOTE: Apologies to those who know Trinity: yes, I have rotated the college 90 degrees!), when I scaled the image to 64x256 and saved it as an 8 bit GIF. If you look carefully at the texture in the level, you will see that it is now 128 wide, scaled from 64! Yech. I wasn't going to make that mistake again, although I couldn't be bothered to rescan the Wren library. When I was pretty sure what size I wanted for graphics, I COPIED the images, cropped, scaled, tinted, smoothed, converted to GIF, and so on. Some graphics didn't tile very well, and I either touched them up to tile properly (e.g., stone) or mirrored one half (e.g., the windows on the outside of the dining hall). There are three hand drawn graphics in Trinity: the sky, plaster, and the burgundy wood paneling. Again I started with a 24 bit palette, and used the pencil and airbrush tools before blending, motion blurring, tinting etc. to produce the final image. Several edit cycles were required to get something that I was (sort of) happy with in Doom. page 49 TALL WALLS The standard Doom texture is a maximum of 128 pixels high, and on walls higher than this the texture repeats vertically. Clearly I didn't want this in Trinity, so I use a couple of tricks to avoid it. On walls with void space behind (no sector behind) a sector is added with floor and ceiling heights chosen to divide the wall into sections less than 128 high. (Notice that I say _less_ than 128 high. Initially you might think, as I did, that 128 high would be perfect. However, if there is a substantial color change from top to bottom of a texture then, as in Trinity, glitches appear on the walls at the dividing lines due to round off in the vertical texture mapping.) _____________ / added \ / sector \ --------------------- tall wall ----------------- top of wall | upper texture | ----------------- ceiling of added sector +----> normal texture ----------------- floor of added sector lower texture ----------------- bottom of wall Textures are applied as shown. The line between the sectors is marked as 2S/Im/So in DEU, i.e., two sided, impassable, and blocks sound. The blocks sound bit is to reduce the size of the REJECT data. See the unofficial specs for details. The impassable bit is to prevent you or monsters going into the sector (I had this problem with skulls initially. It was disturbing to find skulls appearing from nowhere!). The normal texture must be a single patch or the Medusa effect (looks like snakes and you turn to stone) will occur. In Doom, each texture is constructed from one or more graphics patches. The texture definition contains no image data, just the size of the texture, and a list of patches and their position in the texture. The _patch_ definition contains the image data. For walls which already had sectors behind them (e.g., above a doorway) non-repeating tall textures are achieved by "stepping" the wall. A separate sector is required for each step. In side view, ------- ceiling | |<-- top texture | - | |<-- middle texture | --------- doorway ------------------- floor This is not as neat as the other method because the ceiling texture of the sector between the top and middle textures will always be visible, and must be chosen to minimize breaking up the look of the wall. It is also harder to add because the sector should clearly be very thin (in Trinity they are 2 units thick) and this is very fiddly work away from the autogrid. page 50 GRAPHICS ADDITION Initially I just replaced patches in single patch textures. I hacked around with DMGRAPH to make it convert a GIF directly to a patch. Then I used a program I had previously written for sound lumps to make a PWAD of patches with names the same as the names of patches in single patch textures. These then replaced the same-named patches when the PWAD is included using -file. However a better solution was necessary as (a) I was running out of single patch textures, and (b) I needed some user defined multipatch textures. So I wrote a program to convert the texture definition entries in the main Doom WAD to an ASCII format, and another which recreated the binary definition entries from the ASCII format. The big advantage of this method was that it allowed the creation of NEW textures with sensible names like "stone" and "plaster". A typical definition of a new texture "doorcrst", a 128x128 texture with three old patches and one new: DOORCRST 128 128 door11_1 4 0 door11_1 124 0 door11_1 -116 0 pcrest4 46 37 For textures to repeat properly when the length is greater than the width of the texture, the width should be a power of two. For some reason, the "aastinky" texture in Doom is 24 units wide. The last eight columns of the graphic will never be seen (but they're not very exciting anyway). The first released version of Trinity had redefined switch textures, so that when the switch was encountered later in the standard levels, it looked really bad. In the second version I fixed this by setting the switches into walls so that only the switch part of the texture was visible. This is _highly_ recommended for levels which may be grouped into PWAD episodes. old switch texture | v x--------x <-- thin sector with 'metal' textures -----x---x--------x---x----- ^ ^ wall | | +------------+------ new switch surround page 51 Actually it's just occurred to me that there is a neater, if more memory hungry, way to do this seamlessly. Widen the switch texture and put the new switch on the right of the old one, then when using your new switch offset the texture by the appropriate amount. As long as no other levels use a repeated switch on a wall, then this is perfect. For example, say you wanted a new switch pair, you could tack them on the right of the SW1BRN1 and SW2BRN1 switch pair. The original definition of SW1BRN1 is SW1BRN1 64 128 wall02_2 0 56 wall02_2 0 0 sw3s0 16 75 which you redefine to be SW1BRN1 256 128 wall02_2 192 56 wall02_2 192 0 wall02_2 64 56 wall02_2 64 0 wall02_2 0 56 wall02_2 0 0 sw3s0 16 75 pplast 96 0 pplast 160 0 sw3s0 144 75 The old switch is still at offset 0. The new switch is at offset 128. Note the repetition of the wall patch. This allows for roundoff error in the texture mapping engine, which expects similar texture to be just to the left and just to the right of the texture being drawn. Don't forget to define the other switch position SW2BRN1 similarly! This technique allows for a large number of different switch designs to be used in a PWAD. Not that I'm condoning the use of a large number of switches in PWADs - in fact, some of the best PWADs are totally ruined by switches everywhere. (No Return01s, I mean names, mentioned. Speaking of which, which I'm not of course, did you know that there are two graphics added to Return to Phobos? Switches! Both of them! Good grief, Michael! _Beautiful_ WAD, but...) Note: remember to make the textures a power of two wide if you want to allow for roundoff. The programs I mention in this section are available as a zip dmtex10c.zip at infant2. Alternatively you could try deutex by Olivier Montanuy which is easier to use, and will be supported and updated. page 52 THE "ANIMATION" If you haven't seen Trinity.WAD, I recommend you look at it before reading this section as it contains a massive spoiler. However if you haven't seen Trinity you probably aren't reading this document (?!?), so... Several people have asked how the cyberdemon movie is done. I have even heard it described as "voodoo magic"! Nothing could be further from the truth. It is actually very simple. To quote Matt Fell in the unofficial Doom specs 1.3, "It is possible to change the walls and floors that are animated, like the green blocks with a sewer-like grate that's spewing green slime (SLADRIPx). The game engine sets up as many as 8 animation cycles for walls based on the entries in the TEXTURE resources, and up to 5 based on what's between F_START and F_END. The entries in FirstTexture and LastTexture, below, and all the entries between them (in the order that they occur in a TEXTURE list), are linked. If one of them is called by a sidedef, that sidedef will change texture to the next in the cycle about 5 times a second, going back to First after Last. Note that the entries between First and Last need not be the same in number as in the original, nor do they have to follow the same naming pattern, though that would probably be wise. E.g. one could set up ROCKRED1, ROCKREDA, ROCKREDB, ROCKREDC, ROCKREDD, ROCKREDE, ROCKRED3 for a 7-frame animated wall!" Hence the movie in Trinity is defined in the ASCII texture file as a series of textures SLADRIP1, MOVIE01, MOVIE02, ..., MOVIE98, SLADRIP3. The important thing is the order in which the textures are listed. The Doom EXE contains the names of the FirstTextures and LastTextures so it isn't possible to have additional animation cycles in a PWAD. And because the sprites and the Doom logo have the same format as patches, they are just listed as if they were patches. For example, a frame of the movie is defined MOVIE08 256 128 pblak 0 0 pblak 64 0 pblak 128 0 pblak 192 0 t 67 40 r 86 40 i 106 40 n 124 40 i 144 40 t 162 40 y 181 40 m_doom 67 50 cybre7 -20 20 playf3f7 198 64 where "pblak" is a totally black patch, and t, r, i, n, and y are the characters. Initially, the movie used the character set in the game but this caused crashes (for a reason I won't go into now) so after consulting ID, I included the character set again in the PWAD with new names. page 53 The technique described in the Graphics Addition section for adding new switches can also be applied to new animated textures. Just make the new animation length a multiple of the old length, and put the old animation at the left of the textures. Don't forget to satisfy the roundoff errors! You could squeeze twenty or more thin animations into a large texture! THE SKY You may not have noticed, but the sky in the latest version of Trinity doesn't repeat anywhere around the horizon. (Thanks to Olivier Montanuy, author of DeuTex, for teaching me this trick.) This is done by defining a sky texture (SKY1, SKY2, or SKY3 depending on the episode) which is 1024x128 in size, and pasting patches into it so that 0=East, 256=North, 512=West, and 768=South. Note that this means that the textures are left/right mirrored! I can't think of any way to make the sky texture animated. However you could fake twin skies by only allowing the player to see half the sky during one part of a level, and then later only allowing him to see the other half! A crap example would be bright blue skies -> red skies+mushroom cloud. It's probably a good idea to disorient the player in between with, for example, a teleport, so he doesn't catch on to the trick too quickly. CONCLUSION In this document I have outlined some techniques which can be used to seemingly extend the Doom engine. The use of these inevitably slows down Doom and so should be used sparingly, unless you _really_ need (well, really _want_, anyway) the effect. If you're about to start your first big WAD, collect together as many tools as you can, and read all the documentation you can find, particularly the Unofficial specs. Good luck! page 54