5 // WAD3 (Half-Life) Header and mip structs
\r
6 // WAD2 (Quake) Header and mip structs added by LordHavoc
\r
8 #define WADBUFSIZE 32768
\r
10 #define WAD2_TYPE_MIP 0x44
\r
11 #define WAD2_ID ('W' | 'A' << 8 | 'D' << 16 | '2' << 24)
\r
12 #define WAD3_TYPE_MIP 0x43
\r
13 #define WAD3_ID ('W' | 'A' << 8 | 'D' << 16 | '3' << 24)
\r
14 #define GET_MIP_DATA_SIZE(WIDTH, HEIGHT) ((WIDTH * HEIGHT) + (WIDTH * HEIGHT / 4) + (WIDTH * HEIGHT / 16) + (WIDTH * HEIGHT / 64))
\r
18 WAD3 pseudo-structure:
\r
24 First mip (width * height)
\r
25 Second mip (width * height / 4)
\r
26 Third mip (width * height / 16)
\r
27 Fourth mip (width * height / 64)
\r
29 Palette (Palette size * 3)
\r
39 WAD2 pseudo-structure:
\r
45 First mip (width * height)
\r
46 Second mip (width * height / 4)
\r
47 Third mip (width * height / 16)
\r
48 Fourth mip (width * height / 64)
\r
58 #define DWORD unsigned int
\r
59 #define BYTE unsigned char
\r
60 #define WORD unsigned short int
\r
64 DWORD identification;
\r
66 DWORD infotableofs; // Lump table
\r
67 } WAD3_HEADER, *LPWAD3_HEADER;
\r
73 DWORD size; // uncompressed
\r
77 char name[16]; // must be null terminated
\r
78 } WAD3_LUMP, *LPWAD3_LUMP;
\r
83 DWORD width, height;
\r
84 DWORD offsets[4]; // four mip maps stored
\r
85 } WAD3_MIP, *LPWAD3_MIP;
\r
88 typedef struct wadFile_s
\r
91 LPWAD3_HEADER lpHeader;
\r
96 unsigned long currentfile;
\r
101 wadFile_t *wadOpen(const char* path);
\r
102 wadFile_t *wadCleanup(wadFile_t *wf);
\r
103 int wadGoToFirstFile(wadFile_t *wf);
\r
104 int wadGetCurrentFileInfo ( wadFile_t *wf, char *szFileName, unsigned long fileNameBufferSize, unsigned long *filesize);
\r
105 int wadGoToNextFile(wadFile_t *wf);
\r
107 int wadOpenCurrentFileByNum (wadFile_t *wf, unsigned long filenumber);
\r
108 void wadCloseCurrentFile (wadFile_t *wf);
\r
109 unsigned long wadReadCurrentFile (wadFile_t *wf , char *bufferptr, unsigned long size);
\r
111 #endif // #ifndef _WAD3_H_
\r