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