
This version of wacker is now fully functional i.e All the texture
manipulation and full dragNdrop interface is implemented including
modification of existing textures as well as building new ones.


---------------------------------------------------------------------

DISCLAIMER (Just for my protection)

The is a BETA test version of the WACKER program. When you execute
this program you do so at your own risk. I take no repsonsiblity for
any damage caused and make no claims as to the functionality of the
program.

Please dont be frightened by the above sentence. It it just to cover
me in case anything should go wrong. WACKER does crash occasionaly,
but it has NEVER done any serious damage to any of the machines it
has been tested on.

Note:

As far as I am aware WACKER is the first publicly available program
that will allow you to create your own textures for DooM and then
save them out with a PNAMES,TEXTURE1 and TEXTURE2.

This is the last beta version, the next release (unless a major quick
bugfix is required) will be version 1.0 and will be a bugfix plus
addition of an external config file to allow you to place wacker
where you like.

Regards

Keith Wilkins


I can be contacted via email at the addresses below:

spike@nectech-uk.com OR spike@nectech.demon.co.uk

---------------------------------------------------------------------

Thanks to:

Lee Witek -         For pre-alpha testing an lots of handy ideas about the
                    user interface, and the coke machine.
Jean Serge Gagnon - Alpha testing and suggestions for improvement

---------------------------------------------------------------------


Version Control
---------------

Beta7   28/07/94  * Bug fix to fTextureDragNDrop & fPictureDragNDrop
                    due to some mouse drivers returning a modulo 2
                    mouse position on the X axis after the upper
                    limit was modified for 640 resolution.
                  * New code for barry@infant2. Semi automated
                    texture creation. Try the new LTB command.
                  * Patch loading modified so that if your patches
                    are referneced by TEXTURE1 or TEXTURE2 they need
                    not be placed between P_START & P_END markers

Beta6   26/07/94  * Modifications to dox.txt after feedback from Joe
                    Pulic:
                            New sections on making/modifying textures
                            Notes on how to overcome the Deu problem
                            Explanation of examples
                  * New code to allow modification of textures and
                    deletion of patches by pickup and drop.
                  * Code added to allow patches to be pushed to the
                    back or pulled to the front of a texture.

Beta5   22/07/94  * Serious bug fixed which stoped any level data being
                    saved
                  * Code added to allow saving of NEW textures and
                    creation of new textures.

Beta4   15/07/94  * Button text added
                  * DragNDrop partially implemented
                  * Some minor bugs fixed
                  * Finally squashed the obscure save bitmap bug that
                    was giving real problems on bitmaps where the width
                    wasnt a multiple of 4, bloody windows!!!

Beta3   09/07/94  * Bug fix to cure save BMP error, it seems a line
                    of code got deleted between Alpha3 & Beta1/2 that
                    setup in internal pointer in fBMPSave().
                  * Fix of load object bug memory being accidently freed
                    by the gallery display function.
                  * Button regions added for texture & picture galleries
                    but no internal graphics yet.

Beta2	07/07/94  * Loads of new functionality.
                  * Bug fixed in the gallery that was causing GPF
                    under windows on some systems.
                  * Improved documentation.

Alpha3  24/06/94  * First limited alpha test of basic functionality



---------------------------------------------------------------------


Known bugs
----------

Copy (replace)       - Copy doesn't work if you are replacing a LEVEL
                       in the destination. Delete then copy to ensure
                       correct copying. There is no problem if the
                       copy creates a new object, it is only replace
                       that has the bug.

Move                 - Moving a level may screw up a wad file. Dont
                       move the level using move. You should not need
                       to do this anyways.

Slow initialisation  - After doing some speedups its still slow,
                       escpecially after adding sprite & graphics
                       support. Pallette setting takes a rather long
                       time and I cant figure why ??

Occasional NULL      - I squash these whenever I encounter one but
pointer error          I'm sure there must still be some somewhere.

---------------------------------------------------------------------

Future Additions/Features
-------------------------

High Priority
*************
WACKER.INI configuration file
Free up more memory
Use of extended memory to store loaded objects


Low Priority
************
GIF Load/Save
LIG <handle> <patch> <filename>  - Load an image patch from a GIF file
SIG <patch> <filename>           - Save a image patch from a GIF file




---------------------------------------------------------------------



Getting Started
***************

Place all the files in the directory containing Doom.wad. You can place
it anywhere in your path if you dont want the executable in your doom
directory but the OEM08.FON file must be in with the directory you
are executing from. Sorry, this will be fixed ay V1.0 by an external
config file specifiying paths and files.

Type WACKER to run the program. The screen goes black for about 3-5
seconds at the start before the loading meassage appears. It takes about
20-30 seconds to initilise depending on the machine (sorry, but there is
a mass of data to load & check for consistency).

WACKER will only run in 640x480x256 SVGA mode. If you don't have SVGA
then use a VESA emulator such as UNIVESA.

It has been tested without problems on the following configs:

Clone 486DX2-66 16MB RAM Diamond VIPER VLB grapics card
Clone 486DX40 16MB RAM GENOA VLB card with Cirrus chipset
NEC Versa-50 laptop 4MB RAM

WACKER works under windows (if you must). I have been told that it now
works O.K under OS/2. The only problem I've come across under windows
is on the Diamond VIPER machine, using crtl-esc to task switch will
completely lock the machine. On the Versa the screen corrupts on return
to wacker but it still functions O.K. The moral of this story is don't
bother with windows.

The more free memory the better. Running from a RAM disk can speed thing
up quite considerably, that is if you have the odd spare meg or 12.

WACKER is written in C using Microsoft Visual C (prof) and is
compiled using the huge memory model, after the major work is
done I plan to port it to a 32bit flat model program using DJPP. 


BATCH FILES
***********

WACKER now supports external batch files and an argument to speedup
that initialisation process. The batch files must be ordinary
text files with 1 command+args per line. To run a batch file type:

    WACKER [filename]

Its not too pretty at the moment but what the hell, it works, or at
least I think it does !!


To stop WACKER building the galleries then start WACKER with the

 -NOGALLERIES option
 
and it will start up faster but you wont have any pretty pictures to
look at.



WACKER MANUAL
*************

The main wacker screen will apprear after intialistation.


               ------------     --------------
              |            |   |             |
              |            |   |             |
              |  TEXTURE   |   |   PICTURE   |
              |  WINDOW    |   |    WINDOW   |
              |            |   |             |
              |            |   |             |
              |            |   |             | 
              |            |   |             |                  
               ------------     -------------
                         
               ------------------------------                 
              |                              |                
              | COMMAND WINDOW               |                
              |                              |                
               ------------------------------                  

Click the mouse within a window to activate it, or use the keyboard:

C = Command Window
T = Texture Gallery
P = Picture Gallery

When you wish to exit WACKER press ALT_X or type BYE in the command
window.


How WADS are handled
--------------------

You can load many different PWADS into WACKER, each PWAD you load
must be given a HANDLE which can be up to 8 characters in length. The
purpose of the HANDLE is to allow you to reference a wad file by a short
name rather than a long path+file name. All PWADs are held separately and
do not patch each other. The exception to this is the texture and picture
resources, if a PWAD contains new pictures or textures these will replace
textures in the main picture & texture galleries.

A picture is defined as any object within a WAD file that is in the
doom picture format. These can be PATCHES, SPRITES or GRAPHICS, where
GRAPHICS refers to the DOOM help screens & player faces, status bar
etc. Pictures can be detected in a PWAD but they must be in the following
formats OR have a name identical to a gallery patch/sprite/graphic:

PATCHES     Enclosed between P_START & P_END entries
SPRITES     Enclosed between S_START & S_END entries
GRAPHICS    New objects are not allowed but any name conforming to the
            naming conventions of the main DOOM.WAD will be picked up
            and loaded as a graphic replacing the current object

Any operation involving a PWAD or IWAD requires the use of the handle
to identify which wad you wish to operate upon. The main DOOM IWAD
file is always called "DOOM" and the handles "PATCHES", "TEXTURES",
"SPRITES" and "FLOORS" are all reserved, do not attempt to load a new
PWAD with these handle names otherwise you will not be able to access
the loaded PWAD.

EXAMPLE - Load a level, and modify a patch and save the new PWAD

LDW E1M1 d:\games\doom\mylevel\e1m1.wad
        (Load a Wad file with handle E1M1 from file d:\games\doom...)
LPB E1M1 DOOR2_9 d:\games\doom\mylevel\newdoor.bmp
        (Load a Picture in BMP format into wad E1M1 called DOOR2_9)
        (from a file called d:\games\doom\mylevel\newdoor.bmp)
SDW E1M1 d:\games\doom\mylevel\newgrp.wad
        (Save a Wad file using the internal Wad handle E1M1 to a file)
        (called d:\games\doom\mylevel\newgrp.wad)

After the LWB command is executed the new DOOR2_9 patch will appear
in the patch window.


EXAMPLE - Load a level and copy graphics & level from another PWAD

LDW TESTLEV mylevel.wad
        (Load a Wad file with handle TEXTLEV from file d:\games\doom...)
LDW DONOR donorlvl.wad
        (Load a Wad file with handle DONOR from file d:\games\doom...)
COPY AG128_1 TESTLEV
        (Copy patch AG128_1 to the wad called TESTLEV. Note that we)
        (dont need to say where AG128_1 comes from as wacker knows)
        (that we must be talking about the AG128_1 in the patch gallery)
COPY DONOR E1M1 TESTLEV
        (Copy from DONOR the E1M1 object to the wad called TESTLEV)
COPY DONOR BCRATEM1 TESTLEV DOOR2_4
        (Copy from DONOR the BCRATEM1 object to the wad called TESTLEV)
        (and rename it to DOOR2_4, this will also change the patch)
        (gallery entry DOOR2_4 to be the same as BCRATEM1)
SDW TESTLEV newlevel.wad
        (Finally save out our modified wad TESTLEV to a file called)
        (newlevel.wad)



---------------------------------------------------------------------


Picture Gallery
---------------

The picture gallery holds three picture lists: PATCHES, SPRITES & GRAPHICS
the same command set applies to all picture lists. i.e You can use any
graphic for inclusion in a texture. The following keys will swap
between lists at any time:

F5  - Patch list
F6  - Sprite list
F7  - Graphics list

Once in a particular list the following commands apply:

I                  - Give information about the displayed picture
F                  - Find a picture name       /* Not Implemented */
HOME               - Display last picture in the selected gallery
END                - Display first picture in the selected gallery
PAGE UP            - Jump down the selected picture list
PAGE DOWN          - Jump up the selected picture list
UP/LEFT CURSOR     - Move to the next picture in the selected list
DOWN/RIGHT CURSOR  - Move to the next picture in the selected list

All of the above functions are accessable via the mouse interface, by
clicking on the buttons under the mouse window. To dismiss the info
window press any mouse button.

You can pick up patches/sprites & graphics in this version and drop
them onto the texture window. See the texture gallery description
for details on how to build and maipulate textures.

To pick up a picture, first position the cursor over the picture and
then press and hold the left mouse button. You can then drag your
picture around the screen. If you dont wish to do anything with it
then release the mouse button making sure that the picture is NOT
positioned over the texture, wacker will assume that if you drop
a patch on any area other then a textures then you wanted to discard
it. If you wish your patch to be added to the texture then position it
where you want it to be placed and then release the mouse button and
it will then be added to the texture. Fine positioning of the patch
can be achieved using the cursor keys whilst the mouse button is
kept pressed.



Texture Gallery
-------------

I                  - Give information about the displayed texture
                     While in this mode LEFT,RIGHT ARROW move UP/DOWN the
                     list of patch descriptors that make the texture. Pressing
                     the return key will cause the Patch Gallery to display
                     the patch for that descriptor. Press ESC to exit.
                     For mouse based operation:
                     Left button   = Previous patch entry
                     Right button  = Next patch entry
                     Centre button = Display patch in patch gallery
                     Left+Right    = Close window


S                  - Step throught the drawing of a patch, each time you press
                     the 's' key then next patch.

F                  - Find a patch name  /* Not implemented in this vesion */
HOME               - Display last patch
END                - Display first patch
PAGE UP            - Jump down the patch list
PAGE DOWN          - Jump up the patch list
UP/LEFT CURSOR     - Move to the next patch in the alphabetical list
DOWN/RIGHT CURSOR  - Move to the next patch in the alphabetical list

Again as with the picture gallery all the above functions are available via
the button bar.


Making NEW textures
------------------- 

Completely new textures can also be created using the CREATE command
from the command window:

CREATE TEXTURE <name> <width> <height>

for example

CREATE TEXTURE STARTAN4 128 128

will make a new texture called startan4 which is 128x128. The texture
gallery will then display a blank box for you to build your texture in.
When textures are drawn to the screen a white box is first drawn to show
the bounding area of the texture. On some textures this may still be
partially visible. It is not saved as part of the texture.

NOTE - Texture widths MUST be a binary power of 2 i.e
       2,4,8,16,32,64,128,256. This is a limitation of the DooM engine.
       If you ignore this advice then your textures wont draw properly.

You can then use the drag and drop method to build your textures as
described in the picture gallery section.

See below for details on how to change the drawing priority of a patch
unsing the FRONT/BACK buttons.


Modifiying existing textures
----------------------------

To move a patch within a texture you first position the cursor over the
patch you wish to move and then press and hold the left mouse button
to drag it around. If you wish to delete the patch then just move it
out of the patch window and drop it. When you have re-positioned your
patch release the mouse button to drop it. As with the patch drag and
drop the cursor keys may be used adjust the position accurately.

If patches are covered or it is awkward to see where one patch starts and
another ends you can use the STEP button to make things easier as you
can only pickup those patches that are visible.

If you wish to alter the way in which a texture is drawn i.e move a patch
to the back or the front then use the front/back buttons. Click on FRONT
or BACK then click on the patch you wish to move. If you wish to cancel
the order then click on a part of the screen outside the texture. Wacker
will take the very next mouse click after selecting FRONT/BACK as being
the front/back opertation. Once you have clicked on FRONT or BACK then
ALL other operations are suspended until you have clicked on an area of
the screen.
 
When textures are drawn to the screen a white box is first drawn to show
the bounding area of the texture. On some textures this may still be
partially visible. It is not saved as part of the texture.

Handy Tip:

Its hard on some textures to see where one patch starts and another ends
so put the STEP button to good use. You can only modify the patches that
you can see in the texture window. If you have a patch stuck at the back
that you want to the front you can either BACK all the other patches OR
press STEP until your patch appears then click FRONT and your patch and
the texture will then be re-drawn with the patch at the front.


Saving out your new textures
----------------------------

Once you have modified the textures and wish to save out your new or
modified textures you must make sure that the PNAMES object is present
in the WAD as this will trigger WACKER to create PNAMES,TEXTURE1 and
TEXTURE2 in your PWAD, you can do this with :

CREATE <yourwad> PNAMES
SDW <yourwad> <somefile.wad>

IMPORTANT- If you have modified patches you must make sure these have
been copied to the PWAD as well so all required data is saved. In later
WACKER versions this will be done automagically. Ideally your patches
should be contained with P_START & P_END markers but wacker beta7 and
upwards will not complain if they are not.

BUT BUT BUT
-----------

The above is ONLY true IF the patches are used in TEXTURE1 or TEXTURE2.
So if you have a group of patches that are NOT used in textures and
are not bracketed by P_START & P_END then they will NOT be recognised
as patches. So it is STILL ADVISABLE to enclose your patches within
P_START & P_END.

    How to enclose with P_START & P_END
    -----------------------------------
    For Wacker to recognise patches when loading a PWAD they must
    be enclosed in P_START P_END markers

    CREATE mygfx
    CREATE mygfx p_start
    CREATE mygfx p_end

    LPB myfgx coke01 front.bmp
    LPB mygfx coke02 back.bmp
    LPB mygfx coke03 side.bmp
    MOVE mygfx p_end coke03

    The move command makes sure that the patches are within the markers
    as when you load a new patch it is always tagged onto the end of a
    WAD.

IMPORTANT2 - If you wish to load your new textures into Deu as a PWAD
you must do the following to overcome a feature in Deu that causes it
to Barf on texture pwads. When Deu loads textures & gfx from an external
PWAD it reads an entire 64K chunk rather then only the data is requires.
This means it will often try to read past the end of the file and hence
Barrrrf. All you need to do is make sure that there is a least 64K of
data after your patches. You can do this in the following way:

Load a raw object onto the end of your PWAD using the LOR command
this object can be absolutly anything you like. Give it a name that
doesn't occur in the doom IWAD such as CALVIN or HOBBES. Just make
sure it is around the 64K mark.


---------------------------------------------------------------------


Command Window
--------------

This window is the command line interface to wacker, the following
commands are currently supported:

BATCH    - Redirect command window input from batch file
COPY     - Copy object from pwad->pwad
CREATE   - Create a new WAD,ENTRY or TEXTURE
DEL      - Delete objects
DISP     - Force patch/texture window to display object
FILE     - Enable/Disable command line logging to a file 
HELP     - Display command list
LDW      - Load a PWAD/IWAD into memory
LIST     - List details of pwad/patch/texture
LOB      - Load/patch a WAD object from windows BMP file
LOR      - Load/patch a WAD object from RAW format file
LPB      - Load a picture from a windows BMP file
LPR      - Load a picture from a raw binary file
LTB      - Load a Texture from a BMP file (creates a patch)
MOVE     - Move an object within a WAD
MCOPY    - Multiple copy from WAD to WAD or gallery
SDW      - Save a PWAD/IWAD to disk
SOB      - Save a picture format object to a windows BMP file
SOR      - Save an WAD object to a raw binary file
SPB      - Save a picture to a windows BMP file
SPR      - Save a picture to a raw binary file

Many of the commands use an argument called PICTURE this agument can be
any loaded patch,sprite or graphic object from

Some commands do take a while to exectue, be patient. It does take time to
copy all of the patches from the gallery to a WAD. The longest wait is
if you copy then entire patch/sprite list to a WAD then delete the WAD as
WACKER must rebuild the patch list from the original wad.


Command Detail
--------------


BATCH <filename> [STEP]

Take command line input from the given filename, the file should be
a text file with identical format to that of the keyboard command
line. The FILE command can be used to generate batch files that may
then be edited and used. If the optional STEP parameter is given
then the user will be promped to run each command line and given
then option of exiting batch mode.

---------------------------------------------------------------------

CREATE <handle|TEXTURE> [name] [width] [height]

Create will allow blank wad objects to be created such as an empty
WAD, an empty entry or a new texture.

CREATE <handle>                - Make a new empty WAD
CREATE <handle> <object>       - Make a new wad object (i.e PNAMES)
CREATE TEXTURE <name> <width> <height> - Make a new texture

---------------------------------------------------------------------

COPY [handle] <obj> <handle|PATCHES|SPRITES> [obj]

Copy is used to copy individual objects between WAD files or within
a WAD file. If the final agument is ommited then the object is
copied with the same name.
Additionally copy may be used to copy ANY graphic object into
the picture gallery. This is done using the Pseduo handles 'PATCHES',
or SPRITES for example:
       
       COPY <handle> <object> PATCHES [object]

Any picture object that is copied in the picture gallery can then
be used within a texture. Yes this does mean you can put the DooM
logo in a texture or a Spider demon.

Copy can also be used to copy any picture object to a WAD, this can be
done by omitting the handle, then 1st argument must the the name of a
picture in one of the galleries. i.e

       COPY AG128_1 MYWAD
       
Will copy the AG128_1 patch into a WAD called MYWAD which must already
exist. The 1st argument can be PATCH|SPRITE|GRAPHIC. The pseudo handles
may still be used for this type of copy to clone a patch.

---------------------------------------------------------------------

DEL <handle|picture|texture> [object|ExMx|patch|floor|sprites|FORCE] [obj]

This command can be used to delete almost any loaded object or group
of objects.

        DEL <handle>                  - Delete handle & contents
        DEL <handle> <ExMx>           - Deletes ExMx level from handle
        DEL <handle> <ExMx> <object>  - Delete object of level
        DEL <handle> <object>         - Delete object of handle
        DEL <object>                  - Delete a patch|texture

If no handle is given then the object MUST be a patch or a texture.
The patch or texture will be deleted from the texture list but NOT
from the PWAD it was loaded into. If you wish to delete patch AND
wad entry then used DEL <handle> <object>. When a patch is deleted
WACKER will search ALL other loaded PWADS for a replacement and use
that to replace the deleted patch, if no replacement is found then
that patch is erased from all texture entries, if any particular
texture has no patches left in its description then it will also be
deleted. When only the <handle> is used then the entire PWAD is
erased. The PATCHES, SPRITES, GRAPHICS and TEXTURES pseudo handles
can be used in the delete, remember that deleting any picture may also
delete textures by association. If you delete the entire patch list
you WILL lose all of the textures. BUT if you load a PWAD with its own
patches and you then delete all of the doom patches you will just be
left with the textures that can be built from the new PWAD.

When you attempt to delete a single object from a picture gallery
WACKER will attempt to find a replacement for that picture with the
same name from a different WAD that is loaded into memory. For example
if you patch AG128_1 from a PWAD and then type DEL AG128_1 the original
DOOM AG128_1 will be put back into the gallery, type DEL AG128_1 again
and the new AG128_1 will re-appear. If you wish to delete a picture
without the auto-replace feature then do DEL AG128_1 FORCE and WACKER
will not attempt to find a replacement. The FORCE agrument is only valid
for PICTURE deletions. An alternate way is to delete the picture from
the WAD rather than the gallery as the galleries hold separate lists
from the WADS.

For example:

                DEL PATCHES          - Delete ALL patches from the patch
		                       gallery. But not from wads
                DEL TEXUTRES         - Delete ALL textures from the texture
		                       gallery.
                DEL WIBBLE           - Deletes a loaded WAD called WIBBLE

                DEL WIBBLE PATCHES   - Deletes all patch entries from WIBBLE
		                       that lie between P_START & P_END.
		                          
                DEL WIBBLE FLOORS    - Deletes all floor entries from WIBBLE
		                       that lie between F_START & F_END.

                DEL WIBBLE SPRITES   - Deletes all sprite entries from WIBBLE
		                       that lie between S_START & S_END.
		                          
                DEL WIBBLE E1M1      - Delete level E1M1 from wibble
                DEL WIBBLE ENDOOM    - Delete the ENDOOM object from WIBBLE
                DEL AASTINKY         - Delete the AASTINKY texture from the
		                       texture gallery.
                DEL AG128_1 [FORCE]  - Delete the AG128_1 patch from the
		                       patch gallery.

---------------------------------------------------------------------

DISP <picture|texture|P|T> [picture|texture]

This command will force the picture or texture galleries to display a
particular image. If a partial name is given then DISP will match
it against the gallery contents. The P & T operators force disp to
only match P-Pictures or T-textures

        DISP T STAR  - Would display the 1st STARTAN texture
        DISP A       - Texture and Patch windows display 1st entry
                       begining with 'A'
        DISP AG128_1 - Display the AG128_1 patch

---------------------------------------------------------------------

FILE <filename|OFF|CLOSE>

Enable/Disable command line logging to a text file. This command
is handy for saving repetative functions and using the BATCH
command to automate things. If a filename is given then the file
is opened, if a file is already opened then the old file is closed.
If you wish to stop logging then use FILE CLOSE.
                          
---------------------------------------------------------------------

HELP

This will display a list of commands available within the command
window.

---------------------------------------------------------------------

LDW <handle> <filename>

Load a WAD into memory, the WAD can be an IWAD or a PWAD. A handle
name must be given. Do not choose a handle that is the same as a
patch or texture name or this may cause some commands to function
strangely.

The following handle names are reserved, do not used them:

DOOM,PATCHES,TEXTURES,SPRITES,FLOORS

You have been warned, WACKER will not stop you but you may find
that a lot of commands will fail to operate with these names.

---------------------------------------------------------------------

LIST <handle|picture|texture|PATCHES|SPRITES|GRAPHICS|TEXTURES>
     [start ojbect] [filename]

Dump information to screen or file about an object. This command
has several modes of operation. If you wish to direct the
output to a file then give a filename at the end. If wacker is
unsure if the agrument is a start object or a file it will ask.

If a handle is given then the directory of the WAD is printed
to the screen/file. If a 2nd argument is given then wacker will
attempt to use this as a search key, and will start listing the
WAD from the 1st match of the search key. This is handy for listing
large WADs, for example:

    LIST DOOM P_START    - List patches within doom (no Xref)
	
It would be better to use the following to list the patches as
it will also generate a cross-reference to the used textures.

    LIST PATCHES

Similarly LIST TEXTURES will display alll loaded texures and a
cross reference to the patches contained in each texture.

If just the name of a picture or texture is given then information is
displayed about that object. For patches the command will also
display a list of textures that the picture is used in. For textures
it will display the list of pictures for that texture.

---------------------------------------------------------------------

LOB <handle> <object> [object] <filename>

Load an DooM picture format object from a windows BMP format file.
The object name can be an existing or new object. If the object
exists then it is modified otherwise it will be created. If the
second object argument is given then and a new object is created
then it will be placed after the object. This is handy for loading
new sprites into an IWAD between the S_START/END markers. If no
second argument is given the object is tagged onto the end of
the WAD.

You can use this to replace sprites/misc graphics/patches.

(See notes about importing external bitmaps)

---------------------------------------------------------------------

LOR <handle> <object> [object] <filename>

Load an DooM picture format object from a Raw binary format file.
The object name can be an existing or new object. If the object
exists then it is modified otherwise it will be created. If the
second object argument is given then and a new object is created
then it will be placed after the object. This is handy for loading
new sprites into an IWAD between the S_START/END markers. If no
second argument is given the object is tagged onto the end of
the WAD.

You can use this to replace anything.

---------------------------------------------------------------------

LPB <handle> <patch> <filename> [PATCH|SPRITE]

Load a new picture into a WAD file from a windows BMP format
file. If the object exists then it replaces the object otherwise
a NEW picture will be created. Existing pictures will be replaced
in the relevant list but any new object will always be created in
the patch list unless the optional PATCH|SPRITE] argument is used
to explicitly specify the list to load the new object into.

(See notes about importing external bitmaps)

---------------------------------------------------------------------

LPR <handle> <patch> <filename> [PATCH|SPRITE]

Load a new picture into a WAD file from a raw binary format
file. If the object exists then it replaces the object otherwise
a NEW patch will be created by default unless the optional PATCH|
SPRITE] argument is used to explicitly specify the list to load
the new object into.

---------------------------------------------------------------------

LTB <handle> <texture name> <filename> [width] [height]

This command automates the process of creating textures. Given
a BMP file it will load the file into memory as a patch called
<texture name> and will then create a NEW texture with the same
name as the patch. The patch is always positioned at the top
left corner of the new texture. If height and with are not given
then the texture will be created the same size as the patch. Read
the creating new textures section for a warning on texture sizes
i.e make your bitmap a binary power of 2 in width or set the height
and width manually.

The handle must be a loaded WAD as the new patch must be associated
with the wad.

The new patch that is created is built into the PATCH list unless
is is an already existing name then it will be replaced with the
new bitmap for the texture. Be careful with your naming.

(See notes about importing external bitmaps)

---------------------------------------------------------------------

MCOPY <handle|PATCHES|SPRITES> [start_obj] [end_obj]
                                              <handle|PATCHES|SPRITES>

Copy is used to copy multiple objects between WAD files or between
a WAD and a gallery. If the copy is WAD->WAD then all ojbects from
and including <start_obj> to <end_obj> are copied. If the destination
is a gallery then only non-zero picture format objects will be copied.

You can use this to copy all of the active patches to a WAD for saving,
when copied in this way the patches will be placed between the relevant
START/END markers, these will be created in the WAD if they dont exist.

If the start and end objects are omitted then the entire WAD is copied
across to the destination handle.
       
---------------------------------------------------------------------

MOVE <handle> <entry> <dest_entry>

This will move an object within a WAD file, you can use it to
reposition objects. It will move the entry to be after dest_entry
in the directory list. 

---------------------------------------------------------------------

SDW <handle> <filename> [PWAD|IWAD]

Save a memory resident WAD file to either a PWAD or an IWAD, if the
IWAD/PWAD argument is missing the file is saved as a PWAD by default.
 
DO NOT save you pwad to any file name that is already open/loaded.
When WACKER loads a PWAD with LDW it leaves the file handles
open to make access faster. The last time I tried it it junked
loaded file.

---------------------------------------------------------------------

SOB <handle> <object> <filename>

This command will attempt to save the given object as a windows BMP
format file. The object name given must be a DOOM picture format
object. WACKER attempts to verify the object by checking the header
of the object as if it were a picture and verifying that the header
parameters are within some set limits.

---------------------------------------------------------------------

SOR <handle> <object> <filename>

Save an object from within a WAD to a binary file in raw binary
format file.

---------------------------------------------------------------------

SPB <picture> <filename>

Save a entry from the picture gallery to a windows format BMP file,
the handle is not needed as this is provided by the association
of picture gallery.

---------------------------------------------------------------------

SPR <picture> <filename>

Save a entry from the picture gallery to a raw binary file,
the handle is not needed as this is provided by the association
of picture list.

---------------------------------------------------------------------

Notes about importation of external bitmaps in GIF/BMP files:

    The 2nd object parameter can be used to force WACKER to store a
    resource at a particular point in the PWAD i.e within S_START/END.
    If the operation replaces an object then this parameter is ignored 

    When WACKER imports a graphic file it will convert the palette of
    your file to an equivalent colour on the doom palette. It is not
    always possible for WACKER to exactly match the colours, it will
    do the best job it can and find the closest match. If you wish to
    have transparent colours in your patches then use the following
    colour value:

        Red=0 Green=255 Blue=255

    Once imported into wacker the cyan transparent regions will vanish
    and be converted to transparent areas. I have found that corel
    draw seems to do some gamma correction on images and so everything
    comes out a little darker.

---------------------------------------------------------------------
The END