Annotation of quake1/wad.c, revision 1.1.1.1

1.1       root        1: // wad.c
                      2: 
                      3: #include "quakedef.h"
                      4: 
                      5: int                    wad_numlumps;
                      6: lumpinfo_t     *wad_lumps;
                      7: byte           *wad_base;
                      8: 
                      9: void SwapPic (qpic_t *pic);
                     10: 
                     11: /*
                     12: ==================
                     13: W_CleanupName
                     14: 
                     15: Lowercases name and pads with spaces and a terminating 0 to the length of
                     16: lumpinfo_t->name.
                     17: Used so lumpname lookups can proceed rapidly by comparing 4 chars at a time
                     18: Space padding is so names can be printed nicely in tables.
                     19: Can safely be performed in place.
                     20: ==================
                     21: */
                     22: void W_CleanupName (char *in, char *out)
                     23: {
                     24:        int             i;
                     25:        int             c;
                     26:        
                     27:        for (i=0 ; i<16 ; i++ )
                     28:        {
                     29:                c = in[i];
                     30:                if (!c)
                     31:                        break;
                     32:                        
                     33:                if (c >= 'A' && c <= 'Z')
                     34:                        c += ('a' - 'A');
                     35:                out[i] = c;
                     36:        }
                     37:        
                     38:        for ( ; i< 16 ; i++ )
                     39:                out[i] = 0;
                     40: }
                     41: 
                     42: 
                     43: 
                     44: /*
                     45: ====================
                     46: W_LoadWadFile
                     47: ====================
                     48: */
                     49: void W_LoadWadFile (char *filename)
                     50: {
                     51:        lumpinfo_t              *lump_p;
                     52:        wadinfo_t               *header;
                     53:        unsigned                i;
                     54:        int                             infotableofs;
                     55:        
                     56:        wad_base = COM_LoadHunkFile (filename);
                     57:        if (!wad_base)
                     58:                Sys_Error ("W_LoadWadFile: couldn't load %s", filename);
                     59: 
                     60:        header = (wadinfo_t *)wad_base;
                     61:        
                     62:        if (header->identification[0] != 'W'
                     63:        || header->identification[1] != 'A'
                     64:        || header->identification[2] != 'D'
                     65:        || header->identification[3] != '2')
                     66:                Sys_Error ("Wad file %s doesn't have WAD2 id\n",filename);
                     67:                
                     68:        wad_numlumps = LittleLong(header->numlumps);
                     69:        infotableofs = LittleLong(header->infotableofs);
                     70:        wad_lumps = (lumpinfo_t *)(wad_base + infotableofs);
                     71:        
                     72:        for (i=0, lump_p = wad_lumps ; i<wad_numlumps ; i++,lump_p++)
                     73:        {
                     74:                lump_p->filepos = LittleLong(lump_p->filepos);
                     75:                lump_p->size = LittleLong(lump_p->size);
                     76:                W_CleanupName (lump_p->name, lump_p->name);
                     77:                if (lump_p->type == TYP_QPIC)
                     78:                        SwapPic ( (qpic_t *)(wad_base + lump_p->filepos));
                     79:        }
                     80: }
                     81: 
                     82: 
                     83: /*
                     84: =============
                     85: W_GetLumpinfo
                     86: =============
                     87: */
                     88: lumpinfo_t     *W_GetLumpinfo (char *name)
                     89: {
                     90:        int             i;
                     91:        lumpinfo_t      *lump_p;
                     92:        char    clean[16];
                     93:        
                     94:        W_CleanupName (name, clean);
                     95:        
                     96:        for (lump_p=wad_lumps, i=0 ; i<wad_numlumps ; i++,lump_p++)
                     97:        {
                     98:                if (!strcmp(clean, lump_p->name))
                     99:                        return lump_p;
                    100:        }
                    101:        
                    102:        Sys_Error ("W_GetLumpinfo: %s not found", name);
                    103:        return NULL;
                    104: }
                    105: 
                    106: void *W_GetLumpName (char *name)
                    107: {
                    108:        lumpinfo_t      *lump;
                    109:        
                    110:        lump = W_GetLumpinfo (name);
                    111:        
                    112:        return (void *)(wad_base + lump->filepos);
                    113: }
                    114: 
                    115: void *W_GetLumpNum (int num)
                    116: {
                    117:        lumpinfo_t      *lump;
                    118:        
                    119:        if (num < 0 || num > wad_numlumps)
                    120:                Sys_Error ("W_GetLumpNum: bad number: %i", num);
                    121:                
                    122:        lump = wad_lumps + num;
                    123:        
                    124:        return (void *)(wad_base + lump->filepos);
                    125: }
                    126: 
                    127: /*
                    128: =============================================================================
                    129: 
                    130: automatic byte swapping
                    131: 
                    132: =============================================================================
                    133: */
                    134: 
                    135: void SwapPic (qpic_t *pic)
                    136: {
                    137:        pic->width = LittleLong(pic->width);
                    138:        pic->height = LittleLong(pic->height);  
                    139: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.