]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - plugins/vfswad/unwad.h
some updates to the Linux build system - obtained a core binary and all required...
[xonotic/netradiant.git] / plugins / vfswad / unwad.h
1 \r
2 #ifndef _WAD3_H_\r
3 #define _WAD3_H_\r
4 \r
5 // WAD3 (Half-Life) Header and mip structs\r
6 // WAD2 (Quake) Header and mip structs added by LordHavoc\r
7 \r
8 #define WADBUFSIZE 32768\r
9 \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
15 \r
16 /*\r
17 \r
18   WAD3 pseudo-structure:\r
19 \r
20         WAD3 Header\r
21         Mip section\r
22                 First mip\r
23                         Mip header\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
28                         Palette size (WORD)\r
29                         Palette (Palette size * 3)\r
30                         Padding (WORD)\r
31                 [...]\r
32                 Last mip\r
33         Lump table\r
34                 First lump entry\r
35                         Lump header\r
36                 [...]\r
37                 Last lump entry\r
38 \r
39   WAD2 pseudo-structure:\r
40 \r
41         WAD2 Header\r
42         Mip section\r
43                 First mip\r
44                         Mip header\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
49                 [...]\r
50                 Last mip\r
51         Lump table\r
52                 First lump entry\r
53                         Lump header\r
54                 [...]\r
55                 Last lump entry\r
56 */\r
57 \r
58 #define DWORD unsigned int\r
59 #define BYTE unsigned char\r
60 #define WORD unsigned short int\r
61 \r
62 typedef struct\r
63 {\r
64         DWORD           identification;\r
65         DWORD           numlumps;\r
66         DWORD           infotableofs;                   // Lump table\r
67 } WAD3_HEADER, *LPWAD3_HEADER;\r
68 \r
69 typedef struct\r
70 {\r
71         DWORD           filepos;\r
72         DWORD           disksize;\r
73         DWORD           size;                                   // uncompressed\r
74         BYTE            type;\r
75         BYTE            compression;\r
76         BYTE            pad1, pad2;\r
77         char            name[16];                               // must be null terminated\r
78 } WAD3_LUMP, *LPWAD3_LUMP;\r
79 \r
80 typedef struct\r
81 {\r
82         char            name[16];\r
83         DWORD           width, height;\r
84         DWORD           offsets[4];             // four mip maps stored\r
85 } WAD3_MIP, *LPWAD3_MIP;\r
86 \r
87 \r
88 typedef struct wadFile_s\r
89 {\r
90         FILE * fin;\r
91         LPWAD3_HEADER   lpHeader;\r
92         LPWAD3_LUMP             lpLump;\r
93         LPWAD3_MIP              lpMip;\r
94 \r
95         DWORD FileSize;\r
96   unsigned long currentfile;\r
97   char *wadfilename;\r
98 } wadFile_t;\r
99 \r
100 \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
106 \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
110 \r
111 #endif          // #ifndef _WAD3_H_\r