X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=wad.c;h=36a5ede26b8a0f43b700eebf8b6d813ff4f11e85;hb=eebd18fb1a1b617f7d8f454e4efbb80838331101;hp=bba4c97a69572b833fc5c1c13d5bfd0100124302;hpb=d57be67cb00229acb8564b92c8b7c58eeed8a0cb;p=xonotic%2Fdarkplaces.git diff --git a/wad.c b/wad.c index bba4c97a..36a5ede2 100644 --- a/wad.c +++ b/wad.c @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. static int wad_numlumps; static lumpinfo_t *wad_lumps; -static byte *wad_base = NULL; +static qbyte *wad_base = NULL; static mempool_t *wad_mempool = NULL; void SwapPic (qpic_t *pic); @@ -70,20 +70,20 @@ void W_LoadWadFile (char *filename) { lumpinfo_t *lump_p; wadinfo_t *header; - unsigned i; + int i; int infotableofs; void *temp; - temp = COM_LoadFile (filename, false); + temp = FS_LoadFile (filename, false); if (!temp) Sys_Error ("W_LoadWadFile: couldn't load %s", filename); if (wad_mempool) Mem_FreePool(&wad_mempool); wad_mempool = Mem_AllocPool(filename); - wad_base = Mem_Alloc(wad_mempool, loadsize); + wad_base = Mem_Alloc(wad_mempool, fs_filesize); - memcpy(wad_base, temp, loadsize); + memcpy(wad_base, temp, fs_filesize); Mem_Free(temp); header = (wadinfo_t *)wad_base; @@ -117,7 +117,6 @@ void *W_GetLumpName (char *name) if (!strcmp(clean, lump->name)) return (void *)(wad_base + lump->filepos); - Sys_Error ("W_GetLumpinfo: %s not found", name); return NULL; } @@ -140,7 +139,7 @@ void SwapPic (qpic_t *pic) typedef struct { char name[16]; - QFile *file; + qfile_t *file; int position; int size; } texwadlump_t; @@ -156,12 +155,12 @@ void W_LoadTextureWadFile (char *filename, int complain) { lumpinfo_t *lumps, *lump_p; wadinfo_t header; - unsigned i, j; + int i, j; int infotableofs; - QFile *file; + qfile_t *file; int numlumps; - COM_FOpenFile (filename, &file, false, false); + file = FS_Open (filename, "rb", false); if (!file) { if (complain) @@ -169,7 +168,7 @@ void W_LoadTextureWadFile (char *filename, int complain) return; } - if (Qread(file, &header, sizeof(wadinfo_t)) != sizeof(wadinfo_t)) + if (FS_Read(file, &header, sizeof(wadinfo_t)) != sizeof(wadinfo_t)) {Con_Printf ("W_LoadTextureWadFile: unable to read wad header");return;} if(memcmp(header.identification, "WAD3", 4)) @@ -179,12 +178,12 @@ void W_LoadTextureWadFile (char *filename, int complain) if (numlumps < 1 || numlumps > TEXWAD_MAXIMAGES) {Con_Printf ("W_LoadTextureWadFile: invalid number of lumps (%i)\n", numlumps);return;} infotableofs = LittleLong(header.infotableofs); - if (Qseek(file, infotableofs, SEEK_SET)) + if (FS_Seek (file, infotableofs, SEEK_SET)) {Con_Printf ("W_LoadTextureWadFile: unable to seek to lump table");return;} if (!(lumps = Mem_Alloc(tempmempool, sizeof(lumpinfo_t)*numlumps))) {Con_Printf ("W_LoadTextureWadFile: unable to allocate temporary memory for lump table");return;} - if (Qread(file, lumps, sizeof(lumpinfo_t) * numlumps) != sizeof(lumpinfo_t) * numlumps) + if (FS_Read(file, lumps, sizeof(lumpinfo_t) * numlumps) != sizeof(lumpinfo_t) * (size_t)numlumps) {Con_Printf ("W_LoadTextureWadFile: unable to read lump table");return;} for (i=0, lump_p = lumps ; ioffsets[0]); + + in = (qbyte *)((int) tex + tex->offsets[0]); data = out = Mem_Alloc(tempmempool, tex->width * tex->height * 4); if (!data) return NULL; image_width = tex->width; image_height = tex->height; pal = in + (((image_width * image_height) * 85) >> 6); -// palsize = pal[1] * 0x100 + pal[0]; -// if (palsize >= 256) -// palsize = 256; pal += 2; for (d = 0;d < image_width * image_height;d++) { @@ -299,16 +242,14 @@ byte *W_ConvertWAD3Texture(miptex_t *tex) return data; } -byte *W_GetTexture(char *name) +qbyte *W_GetTexture(char *name) { -// int i, c, datasize; -// short colorcount; -// byte pal[256][3], *indata, *outdata, *data; char texname[17]; int i, j; - QFile *file; + qfile_t *file; miptex_t *tex; - byte *data; + qbyte *data; + texname[16] = 0; W_CleanupName (name, texname); for (i = 0;i < TEXWAD_MAXIMAGES;i++) @@ -318,13 +259,13 @@ byte *W_GetTexture(char *name) if (!strcmp(texname, texwadlump[i].name)) // found it { file = texwadlump[i].file; - if (Qseek(file, texwadlump[i].position, SEEK_SET)) + if (FS_Seek(file, texwadlump[i].position, SEEK_SET)) {Con_Printf("W_GetTexture: corrupt WAD3 file");return NULL;} tex = Mem_Alloc(tempmempool, texwadlump[i].size); if (!tex) return NULL; - if (Qread(file, tex, texwadlump[i].size) < texwadlump[i].size) + if (FS_Read(file, tex, texwadlump[i].size) < (size_t)texwadlump[i].size) {Con_Printf("W_GetTexture: corrupt WAD3 file");return NULL;} tex->width = LittleLong(tex->width); @@ -334,61 +275,6 @@ byte *W_GetTexture(char *name) data = W_ConvertWAD3Texture(tex); Mem_Free(tex); return data; - /* - image_width = LittleLong(t.width); - image_height = LittleLong(t.height); - if (matchwidth && image_width != matchwidth) - continue; - if (matchheight && image_height != matchheight) - continue; - if (image_width & 15 || image_height & 15) - {Con_Printf("W_GetTexture: corrupt WAD3 file");return NULL;} - // allocate space for expanded image, - // and load incoming image into upper area (overwritten as it expands) - if (!(data = outdata = Mem_Alloc(tempmempool, image_width*image_height*4))) - {Con_Printf("W_GetTexture: out of memory");return NULL;} - indata = outdata + image_width*image_height*3; - datasize = image_width*image_height*85/64; - // read the image data - if (Qseek(file, texwadlump[i].position + sizeof(t), SEEK_SET)) - {Con_Printf("W_GetTexture: corrupt WAD3 file");return NULL;} - if (Qread(file, indata, image_width*image_height) != image_width*image_height) - {Con_Printf("W_GetTexture: corrupt WAD3 file");return NULL;} - // read the number of colors used (always 256) - if (Qseek(file, texwadlump[i].position + sizeof(t) + datasize, SEEK_SET)) - {Con_Printf("W_GetTexture: corrupt WAD3 file");return NULL;} - if (Qread(file, &colorcount, 2) != 2) - {Con_Printf("W_GetTexture: corrupt WAD3 file");return NULL;} - if (texwadlump[i].size > (datasize + sizeof(t))) - { - colorcount = LittleShort(colorcount); - // sanity checking - if (colorcount < 0) colorcount = 0; - if (colorcount > 256) colorcount = 256; - // read the palette - // Qseek(file, texwadlump[i].position + sizeof(t) + datasize + 2, SEEK_SET); - if (Qread(file, &pal, 3 * colorcount) != 3 * colorcount) - {Con_Printf("W_GetTexture: corrupt WAD3 file");return NULL;} - } - else - memcpy(&pal, hlpalette, 768); - // expand the image to 32bit RGBA - for (i = 0;i < image_width*image_height;i++) - { - c = *indata++; - if (name[0] == '{' && c == 255) - outdata[0] = outdata[1] = outdata[2] = outdata[3] = 0; - else - { - outdata[0] = pal[c][0]; - outdata[1] = pal[c][1]; - outdata[2] = pal[c][2]; - outdata[3] = 255; - } - outdata += 4; - } - return data; - */ } } else @@ -397,3 +283,4 @@ byte *W_GetTexture(char *name) image_width = image_height = 0; return NULL; } +