Duke Nukem 3D - Decompiler/Compiler version 1.1
By Daniel Mecklenburg Jr  codewar@ns.cencom.net
http://www.geocities.com/SiliconValley/4794

Disclaimer
==========

THIS PROGRAM IS OFFERED AS FREEWARE AND ON AN AS-IS BASIS.  THE AUTHOR
WILL NOT BE HELD RESPONSIBLE FOR ANY PROBLEMS OCCURED FROM USE OR MISUSE
OF THIS PROGRAM.  I CAN NOT PROMISE THAT THIS PROGRAM WILL RUN ON ANY
MACHINE OR EVEN RUN PROPERLY. I CAN ONLY SAY THAT IT RUNS ON MY SYSTEM
(PENTIUM 120 MHZ W/16 MB RAM UNDER WIN95). THE EXECUTABLE INCLUDED WAS
COMPILED USING BORLAND C++ 4.5 WITH BORLAND POWERPACK. I HAVE NOT INCLUDED
THE PROJECT FILES, SIMPLY THE C SOURCE FOR YOUR OWN USE.


Intro
=====

This program will allow you pull the resources out
of the DUKE3D.GRP file and store them as individual
files so they can be edited and then recompiled.

The DUKE3D.GRP file contains the following file types:

	Extention   Description
   .CON        The 'scripting' files used by the game
   .TMB        Not certain
   .BIN        Not certain
   .DAT        Various date files. PALETTE.DAT contains
               the color palette information.
   .VOC        Sound Blaster sound file
   .MID        MIDI music file
	.ART        Graphic data (see below)
   .MAP        Level maps.

The only types that at this time concern me are the .VOC,
.MID, and .ART files to alter the appearance of DN3D.


Usage
=====

preparation
-----------
   It is wise to make a backup of the original DUKE3D.GRP
file before proceeding much further. DN3D-DC will create a
backup of GRP and ART files before they get recompiled,
however this backup only has a one cycle lifespan (meaning
if you recompile twice, the first time the backup is of
the original, the second it is of the last recompile).

	Create a directory that house the decompiled resources.
I usually do this off the DUKE3D directory but it could
be anywhere. In the following examples the game is in
G:\DUKE3D and I'll keep the resources in G:\DUKE3D\RES

decompile grp file
------------------
	To decompile the GRP file, type:

		DN3D-DC DG G:\DUKE3D\DUKE3D.GRP G:\DUKE3D\RES
				  |            |                |
				  |            |         path to where the
				  |            |         resources will be
				  |            |              stored.
				  |     path/name to the
				  |     DUKE3D.GRP file.
				  |
				  command for "Decompile Grp"

	All of the files in the GRP file will now be in the
G:\DUKE3D\RES directory along with a file called DUKE3D.LST.
This file is a text file containing the packing list for
the group file. This file is needed if you intend to
recompile the GRP file again. The string names should be
kept as they are in this list as the game indexes this file
by name I'm almost certain.

decompile art file
------------------
	To decomile the ART files (contains the graphics), type:

		DN3D-DC DA G:\DUKE3D\RES\TILES000.ART G:\DUKE3D\RES
				  |               |                    |
				  |               |             path to where the
				  |               |             BMP files are to be
				  |               |             stored.
				  |               |
				  |  path/name to the ART file.
				  |  PALETTE.DAT must be in this same directory.
				  |
				  command for "Decompile Art"

	All the graphics for TILES000.ART will be stored in the
G:\DUKE3D\RES directory along with a file called TILES000.LST.
This file is a text file containt the packing list for
the group file. This file is needed if you intend to recompile
the ART file again.

	The naming convention for BMP is a three digit value followed
by a hyphen and then the last three digits of the TILES???.ART
file. The first file in TILES000.ART is 000-000.BMP. The second
one is 001-000.BMP, etc.

	String information and BMP naming is not important. What is,
is that you use the palette created in the individual BMPs for
the new BMPs, that the size of the new BMPs are the same as the
old BMPs, and that you do not save the BMPs are RLE but rather
RGB compressed. (RGB compressed means uncompressed).

	Do not delete the entries in the TILES???.LST files that have
the filename ****************. These contain information pertaining
to animation sequences and stuff that I have not yet decyphered.
All I know is that it is important that they be there.

compile art file
----------------
	To compile the ART file from the LST file and the BMP's, type:

		DN3D-DC CA G:\DUKE3D\RES\TILES000.ART G:\DUKE3D\RES
				  |              |                   |
				  |              |              where the BMPs and
				  |              |              the LST file are.
				  |              |
				  |  Path/name to the ART file
				  |       being compiled.
				  |
				  command for "Compile Art"

	Using the TILES000.LST, this will take the BMPs in the
G:\DUKE3D\RES and create TILES000.ART file. Palette information
from any new BMP is discarded so be sure that any new artwork
uses the same palette as the original.

compile grp file
----------------
	To compile the GRP file from the LST file and resource files,
type:

		DN3D-DC CG G:\DUKE3D\DUKE3D.GRP G:\DUKE3D\RES
				  |            |                 |
				  |            |          directory where
				  |            |          the resource files and
				  |            |          DUKE3D.LST file is.
				  |            |
				  |  path/name of the GRP
				  |  file that is being created
				  |
				  command for "Compile Grp"

	Using the DUKE3D.LST in the G:\DUKE3D\RES directory, the
DUKE3D.GRP file will be generated with the resources in
G:\DUKE3D\RES

hints
-----
	Some of the VOC files load funny in some software. If it tries
to load as RAW data, try using 8000 hz sampling.

	Load one BMP file and save its palette in your favorite bitmap
editor for later use. Most editors will allow you to remap an
image to another palette.

   Automate your decompile/compile process with batch files. This
speeds things up a bit.

   If you are a C programmer feel free to use the source code to
either beef this program up or add to it if you know any new
information that I don't. :-) Only thing I ask is that I get
some credit for it all.


History
=======

Version 1.0  -  Initial release

Version 1.1  -  Compiled for 16 protected mode. Fixed typo in docs

