/* * WADFILE.H * * Version 1.0.0 * * Abstract: * This module contains all the WADFILE definitions for the WadLib library. * * History: * 1.0.0 (March 31, 1994) * * Author: * Michael McMahon * **************************************************************************** * Wadfile Structure Directory *--------------------------------------------------------------------------- *Index: Name : Description *--------------------------------------------------------------------------- * #1 : Wadfile : The definition for a Wadfile context. **************************************************************************** * * WADLIB SOFTWARE LICENSE AGREEMENT * * 1. GRANT OF LICENSE. Michael McMahon and his affiliations (collectively * the "AUTHOR") grant you (either an individual or an entity) the * non-exclusive, royalty-free right to use this library source code, * documentation, and sample code (collectively, the "SOFTWARE") for * any lawful purpose subject to the terms of this license. By using the * SOFTWARE you are agreeing to be bound to all the terms of this license. * * 2. COPYRIGHT. The SOFTWARE is Copyright (c) 1994, Michael McMahon, * PO Box 14807, San Luis Nabisco, CA 93406-4807 USA. All Rights Reserved * Worldwide. You may not use, modify, or distribute the SOFTWARE except * as otherwise provided herein. * * 2. DECLARATION OF PUBLIC DOMAIN DISTRIBUTION AND USE. The distribution * and use of the SOFTWARE is hereby designated PUBLIC DOMAIN by the * the AUTHOR. You may not sell, rent, or lease this SOFTWARE. The * SOFTWARE may be reproduced verbatim in part or in full by any * reproduction means for any lawful purpose, and may also be subject to * the following agreement. * * 3. AGREEMENT FOR USE OF SOFTWARE. The AUTHOR grants you a non-exclusive, * royalty-free right to incorporate the SOFTWARE into any production for * any legal purpose as long as you agree * (a) to indemnify, hold harmless, and defend the AUTHOR from and against * any claims or lawsuits, including attorneys' fees, that arise or * result from the use or distribution of your software production; and * (b) no matter how much the SOFTWARE is modified, the AUTHOR owns the * copyright and this original, unmodified copyright notice remains * intact in the source code; and, * (c) the AUTHOR is not held responsible for fixing bugs or making * enhancements or changes to the SOFTWARE for any reason; and, * (d) the SOFTWARE is not redistributed if it is modified in any way; and, * (e) otherwise comply with the terms of this agreement; and, * (f) the AUTHOR is forgiven for making so many demands. * * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE * AUTHOR FURTHER DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING WITHOUT * LIMITATION ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR OF FITNESS * FOR A PARTICULAR PURPOSE. THE ENTIRE RISK ARISING OUT OF THE USE * OR PERFORMANCE OF THE SOFTWARE REMAINS WITH YOU. * * The author can be reached at: * Michael McMahon * P.O. Box 14807 * San Luis Nabisco, CA 93406-4807 USA * Internet: mmcmahon@oboe.calpoly.edu * [Bug reports, suggestions, success stories, etc. are welcome; tech * support, and other unnecessary two-way mail, is not] */ #ifndef WADFILE #define WADFILE /* Values that are DOOM specific */ #define DOOM_LASTEPISODE 3 #define DOOM_BOSSLEVEL 8 #define DOOM_LASTMAP 9 #define NUM_ENTRIES_PER_MAP 11 /* Values for flag field */ #define FLAG_WADFILE_OPEN 1 #define FLAG_WADFILE_IWAD 2 #define FLAG_WADFILE_DIRCACHED 4 #define FLAG_WADFILE_WRITEONLY 8 #define FLAG_LUMP_OPEN 16 /* Fixed wadfile sizes */ #define SIZEOF_WAD_DIR_LOCATION 4 #define SIZEOF_WAD_DIR_SIZE 4 #define SIZEOF_WAD_SIGNATURE 4 #define SIZEOF_WAD_DIR_NAME 8 #define SIZEOF_WAD_DIR_ENTRY 16 /* Constants for WadfileOpen command */ #define WANTIWAD 1 #define WANTPWAD 2 #define IWADPWAD 3 /* Constants for WadfileCreate command */ #define TYPE_IWAD WANTIWAD #define TYPE_PWAD WANTPWAD /* WAD file signatures */ #define IWAD_SIGNATURE "IWAD" #define PWAD_SIGNATURE "PWAD" /* Invalid WAD cached directory entry */ #define INVALID_ENTRY 0xffff /* Wadfile memory allocation routine pointers */ typedef void * (*WadfileMalloc) (unsigned long size); typedef void (*WadfileFree) (void * ptr); /* Our WAD file handler structure */ typedef struct { unsigned long flags; FILE * wf; unsigned long dirLocation; unsigned long dirNumEntries; unsigned int entryIndex; unsigned long entryLocation; unsigned long entrySize; unsigned char entryName[SIZEOF_WAD_DIR_NAME+1]; unsigned char * dirCache; unsigned long lumpLocation; unsigned long lumpSize; unsigned char lumpName[SIZEOF_WAD_DIR_NAME]; unsigned char * lumpData; } Wadfile; /* Wadfile Function Prototypes */ int WadfileAddLump(Wadfile * wad, unsigned long size, char * name, char * data); void WadfileClose(Wadfile * wad); int WadfileCopyEntry(Wadfile * dest, char * destName, Wadfile * src, char * srcName); int WadfileCopyMap(Wadfile * dest, int destEpisode, int destMap, Wadfile * src, int srcEpisode, int srcMap); int WadfileCreate(Wadfile * wad, char * filename, int type, int maxEntries); int WadfileGetDirInfo(Wadfile * wad, int entryNum); int WadfileGetNextDirInfo(Wadfile * wad); int WadfileGetPrevDirInfo(Wadfile * wad); int WadfileInitialize(WadfileMalloc wfm, WadfileFree wff); int WadfileLumpClose(Wadfile * wad); int WadfileLumpCopy(Wadfile * dest, char * destName, Wadfile * src); int WadfileLumpOpen(Wadfile * wad); int WadfileOpen(Wadfile * wad, char * filename, int fileType); int WadfileSeek(Wadfile * wad, char * targetName); int WadfileSeekMap(Wadfile * wad, int episodeNum, int mapNum); #endif