Doom Legacy Editing Guide
Keywords: Doom, Legacy, documentation, editing guide

# Doom Legacy 1.45 Editing Guide

- User's Guide
- Map Editing
- Tutorial
- 3D Floors Tutorial
- FraggleScript
- Getting started
- Reference manual

- Editing Specs
- Linedef Types
- Thing Types
- Palettes, Colormaps and Textures
- Sprites and Skins
- Voodoo Dolls
- legacy.wad contents
- Editing Links
- Boom Reference

This is a documentation of the new editing features in Legacy. These features should be in Doom Legacy version 1.43 and up.

Doom Legacy supports most Boom editing features discussed in the Boom Reference.

These editing documents are also fairly lightweight and straight forward, if you would like a more comprehensive version, please visit the Doom Legacy Wiki.

## Linedef Types

Range | Use
--- | ---
0 – 141 | Original Doom and Doom2 linedef types
142 – 269 | Boom extensions
272 – 306 | Legacy extensions

### Legacy Linedef extensions

LINEDEF type | Effect
--- | ---
FraggleScript triggers See FS getting started and FS reference manual.
272 | Start FS script (tagnumber), WR
273 | Start FS script (tagnumber), WR, 1-sided
274 | Start FS script (tagnumber), W1
275 | Start FS script (tagnumber), W1, 1-sided
276 | Start FS script (tagnumber), SR
277 | Start FS script (tagnumber), S1
278 | Start FS script (tagnumber), GR
279 | Start FS script (tagnumber), G1
Translucency maps
284 – 288 | Software translucency These linedefs each apply a different translucency map to the middle texture. The corresponding translucency maps are stored in legacy.wad. 284 — TRANSMED: Brightens everything behind the line. Turns things kinda green though. 285 — TRANSMOR: Less brightness with a lot less green. 286 — TRANSHI: Darkens a little with no green tint. 287 — TRANSFIR: Brightens but with no green tint. 288 — TRANSFX1: Selective translucency. Only certain colors are translucent.
Colormaps and water
280 | Water — Boom style Creates swimmable water in all tagged sectors, with colormap transfer like Boom 242. Similar to the Boom 242 deep water type but swimmable (using the Legacy swimming code). It operates more like water than 242 does, but does not have ripples like types 301 and 304. Unlike type 242, this type will not make the actual floor or ceiling into invisible barriers. The water is only shown if it is above the target sector's floor; otherwise, the regular floor is rendered. When water is rendered, the properties for the top of the water "plane" and the bottom, are both taken from the control sector's floor. The lightlevel of the water is controlled by the target sector's lightlevel unless the target sector has been also tagged to a "Transfer floor properties" linedef, in which case, the water will have the transferred lightlevel. It also uses the sidedef1 upper, lower, and middle textures as colormaps in the targeted sector. * It will also create a low fake ceiling if the control ceiling is lower than the target ceiling (this is usually not desired).
282 | Generate colormap This type sets the colormap of all tagged sectors like described below, without changing the floor/ceiling or light values. This is nice for putting colored lighting in many different sectors of different floor/ceiling heights:
Texture | Value | Effect
--- | --- | ---
upper | #rrggbba | 6 hex chars giving the color value in RGB format of the colormap mask, 1 alphanumeric char (a-z) denoting the amount of the colormap mask.
middle | #abbcc | a = boolean value (0 or 1) denoting if this particular colormap should be treated like fog (i.e. equal application of colormap to all walls, etc.) bb = numerical value (0-32) of the colormap at which the fade begins cc = numerical value (1-33) of the colormap at which the destination color will be reached. (not yet supported in hardware mode)
lower | #rrggbb | 6 hex chars denoting the color the colormap will fade to. (not yet supported in hardware mode)
Hex color values can be found via paint program or web editor. There are tons of colors to choose from but here are some to get you started: #FF0000 #009900 #0099FF #FFFF00 #6600CC #FF6600
283 | Fog sheet Displays a 128 high transparent dark fog texture as the middle texture. This can be used to make a better fog effect by patching up the "holes" in fog sectors. Because you often will not want this effect on both sides of the line, this linedef will only affect sides with a middle texture.
3D floors
281 | Solid 3D floor with shadow Creates a solid 3D floor in all tagged sectors. It creates a floor, as a solid slab with thickness, that can be walked on and under.
289 | Solid 3D floor without shadow Creates a solid 3D floor in all tagged sectors, same as type 281, but without changing the lighting under the floor slab. The floor does not cast a shadow, so the light below the slab is the same as above. It puts a floor, as a solid slab with thickness, that can be walked on and under, inside all tagged sectors.
300 | Solid translucent 3D floor Creates a solid translucent 3D floor in all tagged sectors, same as type 281, but translucent, and without changing the lighting under the floor slab. It creates a floor, as a solid slab with thickness, that can be walked on and under. Sidedef1 upper texture: #nnn nnn = 3 digit number (0..255) that encodes for the translucent effect alpha. If it is empty then alpha is 128.
301 | Translucent 3D water Creates translucent 3D water in all tagged sectors. Set the control sector ceiling to the water top level, and the floor to the floor level (or below). Since 1.44 Alpha 4 it allows selectable fog effects with alpha. Before that only alpha was selectable and it was drawn clear. Sidedef1 upper texture: #nnnF nnn = 3 digit number (0..255) that encodes for the translucent effect alpha. If it is empty then alpha is 127. F = fog effect selection, as in linedef 302. The default is clear ('A').
304 | Opaque water Creates a 3D fluid, that is not translucent on the surface. The control sector is sidedef1 of the linedef. Since 1.44 Alpha 4 it allows selectable fog effects with alpha, and rendering of low visibility transluceny. Before that it did not have translucent effect, did not have alpha, and it was drawn clear, with the upper texture as normal. The default is the old transparent effect. Sidedef1 upper texture: #nnnF nnn = 3 digit number (0..255) that encodes for the translucent effect alpha inside the opaque water. If it is empty then alpha is 190. It does not affect the surfaces. An low visibility alpha of 127..255 is recommended for opaque water. F = fog effect selection, as in linedef 302. The default is clear ('A').
302 | 3D fog Creates 3D fog (using control sector's colormap) in all tagged sectors. The middle texture is used for the fog effect. It is sampled for color, texture, and transparent pattern, generating a fog texture by blending and blurring. The fog effect generated is slightly different for each drawing mode, with the RGBA 32 bit drawing being the reference and the others approximating that as close as possible. Because the fog modes will be improved in the future, it is not recommended to rely too heavily on the exact rendering in the current version. Sidedef1 upper texture: #nnnF nnn = 3 digit number (0..255) that encodes for the translucent effect alpha. If it is empty then alpha is 110. F = fog effect selection. The default is fogdust ('F').
Letter | Effect
--- | ---
A | "Clear": No fog. The old water default. This is useful where the swimmable effect is used to simulate low gravity, and no fog is wanted.
B | "Cast": Paint all surfaces with textures. Not implemented yet.
C | "Colormap": Uses only the colormap fog (which only colors all sectors). This is useful where the swimmable effect is used to simulate low gravity, and only the colormap fog is wanted.
D | "Inside": Only render inside side and plane views. The old fog effect. Has the same light effect as 303, but also tints anything seen through any of the edges, top, or bottom, like a translucent. Because the fog effect is not present within the fog itself, it helps to add some fog sheet linedefs (283).
E | "Fog Lite": Renders with outside side and plane views, with low alpha. This will be a light fog effect, without distance effects.
F | "Fog Dust": The normal fog effect, with normal alpha, without distance effects. The user can add fog sheets in the wad to augment it. This is the fog default.
G | "Fog Sheet": A fog with distance effects. The current implementation use fog sheets that are automatically added where fog sectors are joined.
H | "Fog Fluid": A fog optimized for use within fluids. Does not have distance effects.
303 | Ceiling light Creates a 3D light below the control sector's ceiling height, in all tagged sectors. Does the 3D light and colormap of a 3D floor, without the floor.
305 | Double light effect Creates a 3D light similar to 303, except that the light is only affects the area between the control sector ceiling height, and the control sector floor height. Does the 3D light and colormap of a 3D floor, without the floor. The control sector light and colormap are used with-in the control sector floor and ceiling heights.
306 | Invisible floor Creates a 3D invisible floor, or slab in each tagged sector. The floor can be walked on, and will stop weapons, but does not affect light nor colormaps.
Instant z movement
290 | Instant lower floor
291 | Instant raise ceiling

### New Linedef Flags

- Legacy has 2 slightly newer Line Flags.
- These flags can usually be found in your map editor by selecting a linedef property.
- And then enabling it via Flags check box.

Linedef Flag | Effect
--- | ---
512 = 0x200 | Passthru: This flag when set allows a push or switch linedef trigger to pass the push action thru it to ones within range behind it. - Boom
1024 = 0x400 | Alltrigger: This flag, when set, will allow all things to activate a W* line, with the exception of flying blood. :) This includes all generalized types that are W*.

## Thing Types

Legacy supports up to 64 deathmatch starts. For compatibility with the existing maps, Legacy will use the player starts if all the deathmatch starts in a map are occupied. If all the player starts are occupied (including extended ones), then a dm start chosen randomly will be used.. and players might get stuck together, but this will happen normally only at the beginning of games with maps with few dm starts.

The Doom map format refers to different types of THINGs (a.k.a. mapthings, map objects, mobjs) by unsigned 16-bit codes, known as DoomEd numbers. Doom and Heretic use different numberings, with the number ranges overlapping in some places. The situation has been made even more complicated by the different Doom source ports introducing their own, often conflicting, special THING types.

Legacy tries to honor the most common "new" thing types, especially those introduced by Boom and SMMU.

THING type | description | origin
--- | --- | ---
4001-4028 | Playerstarts for players 5-32. | JDS group
5001, 5002 | Point push and pull effects | Boom
5003 | Camera location | SMMU
5004 | Path node | SMMU

## Palettes, Colormaps and Textures

Doom Legacy consists of several new graphic and patch resources as well as supporting different variations of modifying them, view the following:

### Doom Color Palette

Like many other older games, Doom used originally 256 color paletted graphics. The graphics stored in a WAD do not have real color information but palette indices. The engine maps these indices to real RGB colors using the palettes defined by the PLAYPAL lump in the IWAD.

So say you want to make a few new textures in your paint program. You can either create paletted images using the Doom palette, or use 24/32 bit truecolor images and quantize them to the Doom palette when they are done. Heretic palette is different from Doom's, but used exactly in the same way. Modern lump editors such as XWE will convert your image to the proper color palette automatically, but the results will generally be better if you use the correct palette to begin with.

Legacy 1.44 does not support hi-res or hicolor textures or sprites. However, Legacy 2.0 does! Please check the Doom Legacy website for more info on Legacy 2.0.

### Colormaps

The Doom software renderer uses many different kinds of color mapping tables to simulate lighting and color blending effects. A colormap is a 256-byte array used to remap the colors inside a palette:

new_index = colormap[old_index]

They are used to create colored area effects, such as sectors with colored lighting, or a colored fog for the whole level.

Colormaps can be created with a utility called Inkworks. Inkworks is a DOS based program which allows you to manipulate the color palette and save it in a WAD which contains both PLAYPAL and COLORMAP lumps to merge or insert into your WAD. This old way of creating colormaps is somewhat deprecated due to the fact that they only would show up in software mode. Yet, still an option.

For both hardware and software modes, the easiest way to simulate colormaps is just by using Legacy's Generate colormap linetype and setting a hexadecimal RGB color value in its texture field. When this is done, an actual colormap lump is not needed.

### [ADVANCED TOPIC] Lightmaps

The Doom software renderer uses a set of 34 different colormaps (one for each light level plus 2 extra), called a lightmap, to simulate different visibility levels. The default lightmap is stored in the confusingly named COLORMAP lump. One can also simulate colored lighting and fog using lightmaps.

### [ADVANCED TOPIC] Translucency maps

A translucency map is a 256-by-256 byte array used for selective software translucency, where a background color is seen through a translucent foreground:

new_index = transmap[fg_index][bg_index]

You can visualize it as a set of 256 colormaps, one for each foreground color. Boom (and hence Legacy) uses the lump TRANSMAP as the default translucency map.

### Section marker overview

Certain lump types in an IWAD or PWAD should be in continous blocks surrounded by the appropriate section markers. Here are the markers used by Doom Legacy:

Markers | Section contents
--- | ---
C_START, C_END | Software colormaps
P_START, P_END | Patch lumps (wall and sky textures)
PP_START, PP_END | alternative
F_START, F_END | Flat lumps (floor and ceiling textures)
FF_START, FF_END | alternative
S_START, S_END | Sprite lumps (mapthings)
SS_START, SS_END | alternative

Not all lump types need section markers, for example graphics, sounds and music do not. More about section markers and the lumps that go between them will be found below, but we also encourage you to view your IWAD contents for more info.

### Wall textures

#### P_START and P_END markers

Legacy honors the section markers P_START and P_END when introduced as new Patch textures. As well as PP, P1, P2, and P3, just like Doom.

- After adding your section markers, load your texture images between them.
- When a new wall texture is added, it's name and number will also need to be added to the PNAMES lump, and it's scale, name and off-sets added to the TEXTURE1 lump. If the lump editor doesn't do this automatically, you will have to manually. - (in Xwe, right click the texture image, select 'add to Patch Names' and then again select 'add to Texture').

(The quickest way is automatically. The way to do this is by selecting the Patches Tab, and then loading new texture images. Entry>Load.) From that point Xwe should automatically add the P_START and P_END markers, as well as the PNAMES and TEXTURE1 lumps) required for the new patch textures. The engine then takes the texture name, number, and scale, and puts them where they are assigned to by the map, in game.

It's a general rule of mine to create NEW patch textures rather than replacing an exsiting one, or creating NEW patch textures with a New Name rather than replacing an existing one.

Standard wall texture sizes: 64x128, 128x128, 256x128.
However as of 1.41x, hardware video mode in Doom Legacy supports x2 large flats and wall textures

### Sky textures

The original sky texture size in Doom is 256x128, however, Legacy also supports sky textures the size of 256x240. This is because of freelook: you are able to look higher, thus seeing a part of the sky you couldn't see in the original Doom. A taller sky texture was needed.

Using a taller graphic is better than scaling up the original skies, it looks better. However for compatibility, Legacy scales up the SKY textures if it finds that they are the old small size 256x128.

The bottom 40 lines are under the horizon and not normally seen. The lines 100 to 199 are the ones you see while looking straight ahead. The top lines 0-99 are the lines of sky you see when looking up.

There is a small utility called LUMPY provided in this archive to create patches for the sky. Other editing utilities can be used to add the new sky patch to your WAD, XWE for example, see Editing Links.

To convert the sky with LUMPY: LUMPY image.pcx -width 256 -height 240

To add the sky to your WAD with XWE:
Open XWE, select the Patches Tab at the bottom. Select: Entry>Load. Load your image.

### Flat textures

Flats in a PWAD are supported by the 'addfile' console command (loading a PWAD file in the game world). This is useful for testing purposes.

#### F_ and FF_ markers

Flats in a PWAD already worked with the original Doom, you had to put a 'F_END' after the last flat. However, it wasted memory because the engine took all resources from the F_START of the original game WAD, up to the F_END in your PWAD, as flats.

Legacy honors the section markers F_START and F_END. FF_START and FF_END are also honored. Flats are expected to be within these markers and these flat areas will be searched first. Separate flat sections within PWAD files are supported, and they add flats to those found in the IWAD. If a flat name is not found within the flat markers then Legacy will search the entire IWAD and PWAD for the flat.

Most ports and vanilla Doom engines expect F_START and F_END, so use them. It makes your WAD compatible with other ports, and speeds up the name search in Legacy.

Unlike patch textures, Flats don't need a pname or texture lump. Just slap them in your PWAD between the section markers F_START and F_END and your done.

The standard flat (floor / ceiling) texture size in Doom is 64x64 pixels. However as of 1.41x, hardware video mode in Doom Legacy supports x2 large flats and wall textures. More about x2 flats and wall textures can be found on the Doom Legacy Wiki.

Legacy texture flat loading supports any number of new flats (using new names), and it only animates (loads) those animated flats that are used in a level.

### Animated textures

Swantbl can be used to create new animations. Now you're probably wondering, what the heck is Swantbl?

Swantbl is a utility that creates SWITCHES and ANIMATED lumps to put in your WAD, used by Boom and of course Doom Legacy. First you will need 2-4 image framesets for your animation - depending wheater its a flat, a wall, or a switch. They will need to be (named) and in your WAD. And then, by editing the DEFSWANI.dat you add new image frame (names) from Last to First. Then compile it with Swantbl, which then outputs the 2 animation lumps to put in your WAD. More info can be found on the Wiki about animated textures. And of course the DEFSWANI.dat.

### pic_t graphics

For now, certain Legacy resources need to be in a format called pic_t. You can also use LUMPY or Deepsea to convert other image formats to pic_t. This is a DEPRECATED feature, and is replaced in Legacy 2.0 by PNG.

## Sprites and Skins

### Using SPRITES in a PWAD

S_START and S_END markers

SPRITES in a PWAD _ARE_ supported by the 'addfile' console command (loading a PWAD file in the game world). This is useful for testing purposes.

It is not needed anymore to append the missing sprites in a PWAD (using your faithful lump editor). You need only S_END (or SS_END) added after the last sprite in your PWAD. S_START (or SS_START) is not obligatory, but is recommended to clearly separate sprites from skin sprites, and other sections that might redefine the same sprite, but for other uses. It's good practice to place both S_START and S_END in a PWAD when adding new sprite graphics.

All sprite resources found in a PWAD will replace those loaded before, just like with any other resources. Thus, sprites in a PWAD replace the original sprites of Doom, Doom2 etc. since the original game IWAD is always the first one loaded.

If you put S_END, but not S_START, sprites will be searched from the beginning of the PWAD, up to the S_END. We could get rid of S_END, but the loading of sprites would be less efficient.

Another reason for section markers (S_START, S_END): sprite resources are recognized by their first 4 letters. For example player sprites start with PLAY. Suppose you replace the PLAYPAL resource in a PWAD, and use sprites in it, if you don't put the S_START, and PLAYPAL is BEFORE the sprites, it will be taken as a sprite since it starts with PLAY.
Solution: always use S_START/S_END, or put the PLAYPAL resource after S_END.

You can replace only some frames of a sprite in a PWAD, for example replacing PUNGA0, but not PUNGB0. this DOES NOT work using sprite renaming with DeHackEd. So I really encourage you to use sprites in a PWAD directly instead of DeHackEd sprite renaming. This is useful for the rocket for example, when you want to replace only the missile or only the explosion.

## Creating Skins

### OVERVIEW

In Doom Legacy, each sprite skin in a PWAD is defined by a lump named S_SKIN. It contains an ASCII text file which describes the name and properties of the skin.

If you put more than one skin into a WAD file, there are effectively multiple resources of the same name S_SKIN. If this is a problem you can add any characters after the S_SKIN letters, so that your WAD editor doesn't complain. Example: S_SKIN1, S_SKIN2, ... Legacy will search only for the first 6 letters.

#### Skin sprites

A skin is basically a sprite replacement for the player avatar. ALL the frames of the player sprite must be replaced; this includes the normal run, attack and hurt sequences, as well as the normal death, and the explode death sequences.

#### Skin face

Though the status bar face is viewable only by the player who uses the skin, it may be replaced in order to be consistent with the player character appearance. As soon as we ran some tests with a Leprechaun skin, and saw the marine's head in the status bar... we added support for replacing the status bar face. Like the sprites, _ALL_ the face graphics need to be replaced, if some are not defined, the game will quit.

#### Skin sounds

To make it more fun, a skin can have a set of up to 10 sounds replaced, these are called the 'skin sounds'. Skin sounds are replacements of a set of the original Doom sounds, which are given out only by the skin that defines them. All the sounds need not be replaced.

### S_SKIN resource format

// comments start with '//' name = xxxxxxx <- The name of your skin, max 16 chars, NO SPACES! sprite = XXXX <- Identify the sprites to use for this skin, 4 characters, optional. face = XXX <- Identify the status bar face graphics to use for this skin. MUST be 3 characters. dsORIGNL = dsNEWXXX <- Replace one of the 10 customisable sounds with a new sound.

#### EXAMPLE

An example is better than 1000 words, so here we go. Here's a sample of a text file that you could have in the S_SKIN resource:

// Terminator skin by xxx mail me yyy@myhouse.com name = terminator sprite = TERM face = TER dsouch = dstmouch dsplpain = dstmpain dsslop = dstmexpl

Let's study each line one by one:

// Terminator skin by xxx mail me yyy@myhouse.com

This is just a comment line. Comments start with '//'. Use comments to enter author information. The comments are not displayed anywhere into the game, but they may be useful if someone hacks your WAD, he/she'll know where it comes from and who did it.

name = terminator

This tells that the skin name is "terminator". The skin name is displayed in the multiplayer->setup menu. It is used by the "skin" command, in the console. You would type "skin terminator" at the console to change the skin manually, of course it's easier to use the multiplayer menu. The skin name must be UNIQUE : if there are two skins in a WAD with the same name, however different the graphics maybe, only the first skin will be used.

The skin name is also displayed in the teamplay rankings, when using "teamskins". Since each team is identified by a skin in teamskin mode, the rankings would show like this:

107 LEPRECHAUNS TEAM
98 TERMINATOR TEAM

As you see, the name of the skin is used as the name of the team. If you don't specify the name of the skin, it receives a name like SKIN 1, SKIN 2, etc.. not fun.

The name can't have spaces in it... for example a name like "blues brothers" will make Legacy quit with a message like "unknown 'brothers' keyword". We should fix that later.

sprite = TERM

Tells the name of the sprite to use for the skin. Sprites in Doom use only 4 letters, the original player graphics sprite is PLAY. The line above tells Legacy to look for TERMA1 instead of PLAYA1, TERMA2A8 instead of PLAYA2A8 etc.

It is usually easiest to put all the sprites right after the S_SKIN resource. Example:

S_SKIN
TERMA1
TERMA2A8
TERMA3A7
TERMA4A6
etc.

If you put the sprites just after S_SKIN, the sprite name doesn't matter, Legacy looks for the first sprite name, and continues to collect all the frames with the same sprite name, until the name has changed, or the end of the wadfile. You will want to rename the skin sprites only if your WAD editor requests that all resources have a _unique_ name.

Since you can use any name for the sprites, even without using the "sprite = XXXX" statement, you will probably need this only if you really can't get the sprites ordered just after the S_SKIN resource.

Note: _ALL_ the frames of the player sprites must be replaced.

face = TER

All the status bar face graphics resources in Doom WAD have a name that starts with STF: STFST01, STFGOD0, STFDEAD, etc. This line simply gives the three characters to use in place of STF. So in this example Legacy will look for TERGOD0 instead of STFGOD0, TERST01 instead of STFST01, etc.

The STFB1, STFB2 and STFB3 resources of the original Doom are not used anymore. Doom Legacy only uses STFB0, and remaps the green color to the color of the player, as like it does for sprites.

Contrary to the sprites renaming, you MUST use this line in order to change the status bar face graphics. You must replace _ALL_ of the status bar face graphics, that is, provide a replacement for all the resources that start with STF.

dsouch = dstmouch dsplpain = dstmpain dsslop = dstmexpl

These lines tell Legacy to use new sounds for this skin in particular, in place of the game's original sounds.

Up to 10 sounds related to the player actions can be replaced. The new sound names MUST start with letters DS. Any of the 10 sounds can be replaced, or all. The sounds that are not replaced will sound just like the original.

Original sound name | Purpose
--- | ---
dsplpain | pain sound
dspldeth | death sound
dspdiehi | extreme death sound
dsslop | gibbing sound
dsoof | hitting the ground / missing a key to a locked door
dsouch | hitting head on ceiling
dsnoway | failed using something
dsjump | jumping sound
dspunch | punch attack sound
dsradio | message sound

Note: the replacement sound doesn't have to be a new sound, you can use any sound from the game. For example, if you create an imp skin, you could replace the player sounds with the imp sounds.

#### Skins and sprites in the same PWAD

If you have a WAD with skins _AND_ other sprite replacements, make sure you use S_START, S_END sprite section markers so that the skin sprites are not replacing the default player sprites, in case you use 'PLAY' for the skin sprites. If the PLAYxxxx skin sprites are _outside_ of the sprite section markers, they will not be mistaken as the default player sprites.

#### Same resource name on different PWADs

To make it clear: Legacy will add skins _WAD PER WAD_. Which means it doesn't matter at all if there are resources with the same name in different PWADs. In fact, Legacy doesn't even bother if you put several markers with the same name in a PWAD (multiple S_SKINs for example). We added support for S_SKINxx where xx can be any character, just because some WAD utilities don't like multiple resources of the same name.

You could for example use the same sprite name for several skins in a single PWAD, since they are delimited by skin markers (S_SKIN).

## Voodoo dolls

Now in version 1.44 and up.

Create Voodoo Dolls for extra player1 start positions. This is necessary for many WADs, which use the voodoo dolls for timers and action activators.

Simply place an (extra player 1 start) in your map.

The trick is using it in an area where the player or item can be pushed, pulled or teleported into effected areas.

For example, the appearance of the player will alert monsters, which is useful for teleporting monsters in front of your real player, without the old way (creating a small tunnel) or without any scripts. So, if you put the voodoo doll in a small room with a monster on the other side of a door, when the door opens, the monster walks forward, which then could be teleported in front of your (real) player start location.

This is only 1 example of the many different things that could be done with Voodoo dolls. Another example would be receiving health by means of conveyor or scrolling floor.

Even though similar effects can be done using Fraggle Script and spawning items. The difference is, Voodoo dolls don't require a script and can be implemented via map creation. This makes it easier when you already plan on doing loads of work to your map.

## legacy.wad contents

legacy.wad is the main data file in the Doom Legacy distribution. It contains several resources used by the engine, any of which can be replaced using PWADs.

All the graphics in legacy.wad are in patch format, unless stated otherwise.

lump | contents
--- | ---
Text lumps
VERSION | legacy.wad version string, must match the engine version
THINGS.H | FraggleScript header file containing THING names and flags. Add include("things.h"); in your script heading to use it. See also FS things.h on the Wiki.
ENDOOM | End text, in a strange semi-binary format.
Lightmaps and translucency maps
WATERMAP | Boom bluish underwater lightmap.
TRANSMED TRANSMOR TRANSHI TRANSFIR TRANSFX1 | Maps for default software translucency.
Sounds
DSOUCH | Player hits the ground or a wall.
DSJUMP | Player jumps.
DSFLOUSH | Walking through water.
DSGLOOP | Landing or jumping in water.
DSSPLASH | Splash, or getting out of water.
Sprites
BLUD[ab]0 | Random projectile blood
SMOK[a-e]0 | Smoke
SPLA[a-c]0 | Water splash?
TNT1A0 | Invisible sprite for invisible mapthings.
Other graphics
CREDIT | Credits page
CROSHAI[1-3] | HUD crosshairs
RANKINGS | Deathmatch rankings graphic (while in a net-game).
BRDR_MM BRDR_MT | window border patches?
A_DMG[1-3] | Wall blood splat patches
WATER[0-7] | "Old water" flats. Legacy uses 8 animated water flat textures, instead of the original 4.
RSKY[1-3] | Replacement sky textures, 256x240 pixels (not 256x128 like the original ones).
Menu graphics
M_SINGLE | single-player
M_MULTI | multi-player
M_SETUPM | multi-player setup
M_SETUPA | player1 multi-player setup
M_SETUPB | player2 multi-player setup
M_2PLAYR | split-screen multi-player setup
M_STSERV | start-server multi-player setup
M_CONNEC | connect-server multi-player setup
M_CONTROL M_CDVOL M_VIDEO M_SLIDEL M_SLIDER M_SLIDEC | more menu patches
Additional pic_t graphics
CORONA | Corona luminosity map
CONSBACK | Console background picture, 320x200, when 'con_backpic' is true (the console variable) also used as the loading picture MUST BE 200 lines high, can be any width (default is 320)
CBLEFT | Console left border, used with translucent console background MUST BE 200 lines high, any width (default is 8)
CBRIGHT | Console right border, used with translucent console background MUST BE 200 lines high, any width (default is 8)
Status bar overlay icons, pic_t
SBOHEALT | health (default shows a red cross)
SBOFRAGS | frags (default shows a skull)
SBOARMOR | armor (default shows a green armor)
SBOAMMO1 | pistol ammo
SBOAMMO2 | shotgun ammo
SBOAMMO3 | chaingun ammo
SBOAMMO4 | rocket ammo
SBOAMMO5 | plasma ammo
SBOAMMO6 | BFG ammo
SBOAMMO8 | super shotgun ammo

## Editing Links

Common older WAD utilities are WinTex version 4.3, by Olivier Montanuy and NWT (New Wad Tools) version 1.3, by Denis Miller. Both programs will allow you to insert new raw data resources into WADs.

Newer Doom lump editors such as XWE and SlumpED will also work for almost all lump editing variations covered in this document.

#### Windows map editing utilities

- Doom Builder
- SLADE
- Wad Author
- Deepsea

#### Windows lump editing utilities

- XWE
- SlumpED
- Wintex4.3 - with required runtime files

#### Linux/Unix map and lump editing utilities

- Yadex
- DeuTex

#### MacOS map editing utilities

- Hellmaker 1.2b2

#### Node builders

- Zennode - Best for Legacy Opengl node building.
- BSP - Most stable up to date node builder that we know.

#### Standard references

These documents are the current standard references to the inner workings of Doom, Boom, Heretic and Hexen. Although many of the limitations of the original games have been lifted and new features have been added, they are still very useful to a Legacy map editor.

- Matt Fell's Unofficial Doom specs v1.666
- Team TNT's Boom reference v1.3
- Dr Sleep's Unofficial Heretic specs v1.0
- Ben Morris's Hexen specs v0.9

If you have questions regarding the WAD tools in particular, please consult the Doom editing newsgroups, or ask questions on the Doom Legacy forum (go to http://doomlegacy.sourceforge.net and look for the forum link.)

And above all, please check the Doom Legacy Wiki with any other questions regarding Doom Legacy editing!

Have fun!