home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
D!Zone (Collector's Edition)
/
D_ZONE_CD.ISO
/
programs
/
editors
/
dmijum
/
wadfile.h
< prev
Wrap
C/C++ Source or Header
|
1994-12-06
|
6KB
|
155 lines
/*
* 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