Annotation of quake2/qcommon/qfiles.h, revision 1.1

1.1     ! root        1: 
        !             2: //
        !             3: // qfiles.h: quake file formats
        !             4: // This file must be identical in the quake and utils directories
        !             5: //
        !             6: 
        !             7: /*
        !             8: ========================================================================
        !             9: 
        !            10: The .pak files are just a linear collapse of a directory tree
        !            11: 
        !            12: ========================================================================
        !            13: */
        !            14: 
        !            15: #define IDPAKHEADER            (('K'<<24)+('C'<<16)+('A'<<8)+'P')
        !            16: 
        !            17: typedef struct
        !            18: {
        !            19:        char    name[56];
        !            20:        int             filepos, filelen;
        !            21: } dpackfile_t;
        !            22: 
        !            23: typedef struct
        !            24: {
        !            25:        int             ident;          // == IDPAKHEADER
        !            26:        int             dirofs;
        !            27:        int             dirlen;
        !            28: } dpackheader_t;
        !            29: 
        !            30: #define        MAX_FILES_IN_PACK       4096
        !            31: 
        !            32: 
        !            33: /*
        !            34: ========================================================================
        !            35: 
        !            36: PCX files are used for as many images as possible
        !            37: 
        !            38: ========================================================================
        !            39: */
        !            40: 
        !            41: typedef struct
        !            42: {
        !            43:     char       manufacturer;
        !            44:     char       version;
        !            45:     char       encoding;
        !            46:     char       bits_per_pixel;
        !            47:     unsigned short     xmin,ymin,xmax,ymax;
        !            48:     unsigned short     hres,vres;
        !            49:     unsigned char      palette[48];
        !            50:     char       reserved;
        !            51:     char       color_planes;
        !            52:     unsigned short     bytes_per_line;
        !            53:     unsigned short     palette_type;
        !            54:     char       filler[58];
        !            55:     unsigned char      data;                   // unbounded
        !            56: } pcx_t;
        !            57: 
        !            58: 
        !            59: /*
        !            60: ========================================================================
        !            61: 
        !            62: .MD2 triangle model file format
        !            63: 
        !            64: ========================================================================
        !            65: */
        !            66: 
        !            67: #define IDALIASHEADER          (('2'<<24)+('P'<<16)+('D'<<8)+'I')
        !            68: #define ALIAS_VERSION  8
        !            69: 
        !            70: #define        MAX_TRIANGLES   4096
        !            71: #define MAX_VERTS              2048
        !            72: #define MAX_FRAMES             512
        !            73: #define MAX_MD2SKINS   32
        !            74: #define        MAX_SKINNAME    64
        !            75: 
        !            76: typedef struct
        !            77: {
        !            78:        short   s;
        !            79:        short   t;
        !            80: } dstvert_t;
        !            81: 
        !            82: typedef struct 
        !            83: {
        !            84:        short   index_xyz[3];
        !            85:        short   index_st[3];
        !            86: } dtriangle_t;
        !            87: 
        !            88: typedef struct
        !            89: {
        !            90:        byte    v[3];                   // scaled byte to fit in frame mins/maxs
        !            91:        byte    lightnormalindex;
        !            92: } dtrivertx_t;
        !            93: 
        !            94: #define DTRIVERTX_V0   0
        !            95: #define DTRIVERTX_V1   1
        !            96: #define DTRIVERTX_V2   2
        !            97: #define DTRIVERTX_LNI  3
        !            98: #define DTRIVERTX_SIZE 4
        !            99: 
        !           100: typedef struct
        !           101: {
        !           102:        float           scale[3];       // multiply byte verts by this
        !           103:        float           translate[3];   // then add this
        !           104:        char            name[16];       // frame name from grabbing
        !           105:        dtrivertx_t     verts[1];       // variable sized
        !           106: } daliasframe_t;
        !           107: 
        !           108: 
        !           109: // the glcmd format:
        !           110: // a positive integer starts a tristrip command, followed by that many
        !           111: // vertex structures.
        !           112: // a negative integer starts a trifan command, followed by -x vertexes
        !           113: // a zero indicates the end of the command list.
        !           114: // a vertex consists of a floating point s, a floating point t,
        !           115: // and an integer vertex index.
        !           116: 
        !           117: 
        !           118: typedef struct
        !           119: {
        !           120:        int                     ident;
        !           121:        int                     version;
        !           122: 
        !           123:        int                     skinwidth;
        !           124:        int                     skinheight;
        !           125:        int                     framesize;              // byte size of each frame
        !           126: 
        !           127:        int                     num_skins;
        !           128:        int                     num_xyz;
        !           129:        int                     num_st;                 // greater than num_xyz for seams
        !           130:        int                     num_tris;
        !           131:        int                     num_glcmds;             // dwords in strip/fan command list
        !           132:        int                     num_frames;
        !           133: 
        !           134:        int                     ofs_skins;              // each skin is a MAX_SKINNAME string
        !           135:        int                     ofs_st;                 // byte offset from start for stverts
        !           136:        int                     ofs_tris;               // offset for dtriangles
        !           137:        int                     ofs_frames;             // offset for first frame
        !           138:        int                     ofs_glcmds;     
        !           139:        int                     ofs_end;                // end of file
        !           140: 
        !           141: } dmdl_t;
        !           142: 
        !           143: /*
        !           144: ========================================================================
        !           145: 
        !           146: .SP2 sprite file format
        !           147: 
        !           148: ========================================================================
        !           149: */
        !           150: 
        !           151: #define IDSPRITEHEADER (('2'<<24)+('S'<<16)+('D'<<8)+'I')
        !           152:                // little-endian "IDS2"
        !           153: #define SPRITE_VERSION 2
        !           154: 
        !           155: typedef struct
        !           156: {
        !           157:        int             width, height;
        !           158:        int             origin_x, origin_y;             // raster coordinates inside pic
        !           159:        char    name[MAX_SKINNAME];             // name of pcx file
        !           160: } dsprframe_t;
        !           161: 
        !           162: typedef struct {
        !           163:        int                     ident;
        !           164:        int                     version;
        !           165:        int                     numframes;
        !           166:        dsprframe_t     frames[1];                      // variable sized
        !           167: } dsprite_t;
        !           168: 
        !           169: /*
        !           170: ==============================================================================
        !           171: 
        !           172:   .WAL texture file format
        !           173: 
        !           174: ==============================================================================
        !           175: */
        !           176: 
        !           177: 
        !           178: #define        MIPLEVELS       4
        !           179: typedef struct miptex_s
        !           180: {
        !           181:        char            name[32];
        !           182:        unsigned        width, height;
        !           183:        unsigned        offsets[MIPLEVELS];             // four mip maps stored
        !           184:        char            animname[32];                   // next frame in animation chain
        !           185:        int                     flags;
        !           186:        int                     contents;
        !           187:        int                     value;
        !           188: } miptex_t;
        !           189: 
        !           190: 
        !           191: 
        !           192: /*
        !           193: ==============================================================================
        !           194: 
        !           195:   .BSP file format
        !           196: 
        !           197: ==============================================================================
        !           198: */
        !           199: 
        !           200: #define IDBSPHEADER    (('P'<<24)+('S'<<16)+('B'<<8)+'I')
        !           201:                // little-endian "IBSP"
        !           202: 
        !           203: #define BSPVERSION     38
        !           204: 
        !           205: 
        !           206: // upper design bounds
        !           207: // leaffaces, leafbrushes, planes, and verts are still bounded by
        !           208: // 16 bit short limits
        !           209: #define        MAX_MAP_MODELS          1024
        !           210: #define        MAX_MAP_BRUSHES         8192
        !           211: #define        MAX_MAP_ENTITIES        2048
        !           212: #define        MAX_MAP_ENTSTRING       0x40000
        !           213: #define        MAX_MAP_TEXINFO         8192
        !           214: 
        !           215: #define        MAX_MAP_AREAS           256
        !           216: #define        MAX_MAP_AREAPORTALS     1024
        !           217: #define        MAX_MAP_PLANES          65536
        !           218: #define        MAX_MAP_NODES           65536
        !           219: #define        MAX_MAP_BRUSHSIDES      65536
        !           220: #define        MAX_MAP_LEAFS           65536
        !           221: #define        MAX_MAP_VERTS           65536
        !           222: #define        MAX_MAP_FACES           65536
        !           223: #define        MAX_MAP_LEAFFACES       65536
        !           224: #define        MAX_MAP_LEAFBRUSHES 65536
        !           225: #define        MAX_MAP_PORTALS         65536
        !           226: #define        MAX_MAP_EDGES           128000
        !           227: #define        MAX_MAP_SURFEDGES       256000
        !           228: #define        MAX_MAP_LIGHTING        0x200000
        !           229: #define        MAX_MAP_VISIBILITY      0x100000
        !           230: 
        !           231: // key / value pair sizes
        !           232: 
        !           233: #define        MAX_KEY         32
        !           234: #define        MAX_VALUE       1024
        !           235: 
        !           236: //=============================================================================
        !           237: 
        !           238: typedef struct
        !           239: {
        !           240:        int             fileofs, filelen;
        !           241: } lump_t;
        !           242: 
        !           243: #define        LUMP_ENTITIES           0
        !           244: #define        LUMP_PLANES                     1
        !           245: #define        LUMP_VERTEXES           2
        !           246: #define        LUMP_VISIBILITY         3
        !           247: #define        LUMP_NODES                      4
        !           248: #define        LUMP_TEXINFO            5
        !           249: #define        LUMP_FACES                      6
        !           250: #define        LUMP_LIGHTING           7
        !           251: #define        LUMP_LEAFS                      8
        !           252: #define        LUMP_LEAFFACES          9
        !           253: #define        LUMP_LEAFBRUSHES        10
        !           254: #define        LUMP_EDGES                      11
        !           255: #define        LUMP_SURFEDGES          12
        !           256: #define        LUMP_MODELS                     13
        !           257: #define        LUMP_BRUSHES            14
        !           258: #define        LUMP_BRUSHSIDES         15
        !           259: #define        LUMP_POP                        16
        !           260: #define        LUMP_AREAS                      17
        !           261: #define        LUMP_AREAPORTALS        18
        !           262: #define        HEADER_LUMPS            19
        !           263: 
        !           264: typedef struct
        !           265: {
        !           266:        int                     ident;
        !           267:        int                     version;        
        !           268:        lump_t          lumps[HEADER_LUMPS];
        !           269: } dheader_t;
        !           270: 
        !           271: typedef struct
        !           272: {
        !           273:        float           mins[3], maxs[3];
        !           274:        float           origin[3];              // for sounds or lights
        !           275:        int                     headnode;
        !           276:        int                     firstface, numfaces;    // submodels just draw faces
        !           277:                                                                                // without walking the bsp tree
        !           278: } dmodel_t;
        !           279: 
        !           280: 
        !           281: typedef struct
        !           282: {
        !           283:        float   point[3];
        !           284: } dvertex_t;
        !           285: 
        !           286: 
        !           287: // 0-2 are axial planes
        !           288: #define        PLANE_X                 0
        !           289: #define        PLANE_Y                 1
        !           290: #define        PLANE_Z                 2
        !           291: 
        !           292: // 3-5 are non-axial planes snapped to the nearest
        !           293: #define        PLANE_ANYX              3
        !           294: #define        PLANE_ANYY              4
        !           295: #define        PLANE_ANYZ              5
        !           296: 
        !           297: // planes (x&~1) and (x&~1)+1 are allways opposites
        !           298: 
        !           299: typedef struct
        !           300: {
        !           301:        float   normal[3];
        !           302:        float   dist;
        !           303:        int             type;           // PLANE_X - PLANE_ANYZ ?remove? trivial to regenerate
        !           304: } dplane_t;
        !           305: 
        !           306: 
        !           307: // contents flags are seperate bits
        !           308: // a given brush can contribute multiple content bits
        !           309: // multiple brushes can be in a single leaf
        !           310: 
        !           311: // these definitions also need to be in q_shared.h!
        !           312: 
        !           313: // lower bits are stronger, and will eat weaker brushes completely
        !           314: #define        CONTENTS_SOLID                  1               // an eye is never valid in a solid
        !           315: #define        CONTENTS_WINDOW                 2               // translucent, but not watery
        !           316: #define        CONTENTS_AUX                    4
        !           317: #define        CONTENTS_LAVA                   8
        !           318: #define        CONTENTS_SLIME                  16
        !           319: #define        CONTENTS_WATER                  32
        !           320: #define        CONTENTS_MIST                   64
        !           321: #define        LAST_VISIBLE_CONTENTS   64
        !           322: 
        !           323: // remaining contents are non-visible, and don't eat brushes
        !           324: 
        !           325: #define        CONTENTS_AREAPORTAL             0x8000
        !           326: 
        !           327: #define        CONTENTS_PLAYERCLIP             0x10000
        !           328: #define        CONTENTS_MONSTERCLIP    0x20000
        !           329: 
        !           330: // currents can be added to any other contents, and may be mixed
        !           331: #define        CONTENTS_CURRENT_0              0x40000
        !           332: #define        CONTENTS_CURRENT_90             0x80000
        !           333: #define        CONTENTS_CURRENT_180    0x100000
        !           334: #define        CONTENTS_CURRENT_270    0x200000
        !           335: #define        CONTENTS_CURRENT_UP             0x400000
        !           336: #define        CONTENTS_CURRENT_DOWN   0x800000
        !           337: 
        !           338: #define        CONTENTS_ORIGIN                 0x1000000       // removed before bsping an entity
        !           339: 
        !           340: #define        CONTENTS_MONSTER                0x2000000       // should never be on a brush, only in game
        !           341: #define        CONTENTS_DEADMONSTER    0x4000000
        !           342: #define        CONTENTS_DETAIL                 0x8000000       // brushes to be added after vis leafs
        !           343: #define        CONTENTS_TRANSLUCENT    0x10000000      // auto set if any surface has trans
        !           344: #define        CONTENTS_LADDER                 0x20000000
        !           345: 
        !           346: 
        !           347: 
        !           348: #define        SURF_LIGHT              0x1             // value will hold the light strength
        !           349: 
        !           350: #define        SURF_SLICK              0x2             // effects game physics
        !           351: 
        !           352: #define        SURF_SKY                0x4             // don't draw, but add to skybox
        !           353: #define        SURF_WARP               0x8             // turbulent water warp
        !           354: #define        SURF_TRANS33    0x10
        !           355: #define        SURF_TRANS66    0x20
        !           356: #define        SURF_FLOWING    0x40    // scroll towards angle
        !           357: #define        SURF_NODRAW             0x80    // don't bother referencing the texture
        !           358: 
        !           359: 
        !           360: 
        !           361: 
        !           362: typedef struct
        !           363: {
        !           364:        int                     planenum;
        !           365:        int                     children[2];    // negative numbers are -(leafs+1), not nodes
        !           366:        short           mins[3];                // for frustom culling
        !           367:        short           maxs[3];
        !           368:        unsigned short  firstface;
        !           369:        unsigned short  numfaces;       // counting both sides
        !           370: } dnode_t;
        !           371: 
        !           372: 
        !           373: typedef struct texinfo_s
        !           374: {
        !           375:        float           vecs[2][4];             // [s/t][xyz offset]
        !           376:        int                     flags;                  // miptex flags + overrides
        !           377:        int                     value;                  // light emission, etc
        !           378:        char            texture[32];    // texture name (textures/*.wal)
        !           379:        int                     nexttexinfo;    // for animations, -1 = end of chain
        !           380: } texinfo_t;
        !           381: 
        !           382: 
        !           383: // note that edge 0 is never used, because negative edge nums are used for
        !           384: // counterclockwise use of the edge in a face
        !           385: typedef struct
        !           386: {
        !           387:        unsigned short  v[2];           // vertex numbers
        !           388: } dedge_t;
        !           389: 
        !           390: #define        MAXLIGHTMAPS    4
        !           391: typedef struct
        !           392: {
        !           393:        unsigned short  planenum;
        !           394:        short           side;
        !           395: 
        !           396:        int                     firstedge;              // we must support > 64k edges
        !           397:        short           numedges;       
        !           398:        short           texinfo;
        !           399: 
        !           400: // lighting info
        !           401:        byte            styles[MAXLIGHTMAPS];
        !           402:        int                     lightofs;               // start of [numstyles*surfsize] samples
        !           403: } dface_t;
        !           404: 
        !           405: typedef struct
        !           406: {
        !           407:        int                             contents;                       // OR of all brushes (not needed?)
        !           408: 
        !           409:        short                   cluster;
        !           410:        short                   area;
        !           411: 
        !           412:        short                   mins[3];                        // for frustum culling
        !           413:        short                   maxs[3];
        !           414: 
        !           415:        unsigned short  firstleafface;
        !           416:        unsigned short  numleaffaces;
        !           417: 
        !           418:        unsigned short  firstleafbrush;
        !           419:        unsigned short  numleafbrushes;
        !           420: } dleaf_t;
        !           421: 
        !           422: typedef struct
        !           423: {
        !           424:        unsigned short  planenum;               // facing out of the leaf
        !           425:        short   texinfo;
        !           426: } dbrushside_t;
        !           427: 
        !           428: typedef struct
        !           429: {
        !           430:        int                     firstside;
        !           431:        int                     numsides;
        !           432:        int                     contents;
        !           433: } dbrush_t;
        !           434: 
        !           435: #define        ANGLE_UP        -1
        !           436: #define        ANGLE_DOWN      -2
        !           437: 
        !           438: 
        !           439: // the visibility lump consists of a header with a count, then
        !           440: // byte offsets for the PVS and PHS of each cluster, then the raw
        !           441: // compressed bit vectors
        !           442: #define        DVIS_PVS        0
        !           443: #define        DVIS_PHS        1
        !           444: typedef struct
        !           445: {
        !           446:        int                     numclusters;
        !           447:        int                     bitofs[8][2];   // bitofs[numclusters][2]
        !           448: } dvis_t;
        !           449: 
        !           450: // each area has a list of portals that lead into other areas
        !           451: // when portals are closed, other areas may not be visible or
        !           452: // hearable even if the vis info says that it should be
        !           453: typedef struct
        !           454: {
        !           455:        int             portalnum;
        !           456:        int             otherarea;
        !           457: } dareaportal_t;
        !           458: 
        !           459: typedef struct
        !           460: {
        !           461:        int             numareaportals;
        !           462:        int             firstareaportal;
        !           463: } darea_t;

unix.superglobalmegacorp.com

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