Tools for preprocessing data files from Quake to make them suitable for use on PS1 hardware
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.2 KiB

#pragma once
/* Vector */
typedef float vec3_t[3];
/* MDL header */
typedef struct
{
int ident; /* magic number: "IDPO" */
int version; /* version: 6 */
vec3_t scale; /* scale factor */
vec3_t translate; /* translation vector */
float boundingradius;
vec3_t eyeposition; /* eyes' position */
int num_skins; /* number of textures */
int skinwidth; /* texture width */
int skinheight; /* texture height */
int num_verts; /* number of vertices */
int num_tris; /* number of triangles */
int num_frames; /* number of frames */
int synctype; /* 0 = synchron, 1 = random */
int flags; /* state flag */
float size;
} mdl_header_t;
/* Skin */
typedef struct
{
int group; /* 0 = single, 1 = group */
unsigned char* data; /* texture data */
} mdl_skin_t;
/* Group of pictures */
typedef struct
{
int group; /* 1 = group */
int nb; /* number of pics */
float* time; /* time duration for each pic */
unsigned char** data; /* texture data */
} mdl_groupskin_t;
/* Texture coords */
typedef struct
{
int onseam;
int s;
int t;
} mdl_texcoord_t;
/* Triangle info */
typedef struct
{
int facesfront; /* 0 = backface, 1 = frontface */
int vertex[3]; /* vertex indices */
} mdl_triangle_t;
/* Compressed vertex */
typedef struct
{
unsigned char v[3];
unsigned char normalIndex;
} mdl_vertex_t;
/* Simple frame */
typedef struct
{
mdl_vertex_t bboxmin; /* bouding box min */
mdl_vertex_t bboxmax; /* bouding box max */
char name[16];
mdl_vertex_t* verts; /* vertex list of the frame */
} mdl_simpleframe_t;
/* Model frame */
typedef struct
{
int type; /* 0 = simple, !0 = group */
mdl_simpleframe_t frame; /* this program can't read models
composed of group frames! */
} mdl_frame_t;
/* Group of simple frames */
typedef struct
{
int type; /* !0 = group */
mdl_vertex_t min; /* min pos in all simple frames */
mdl_vertex_t max; /* max pos in all simple frames */
float* time; /* time duration for each frame */
mdl_simpleframe_t* frames; /* simple frame list */
} mdl_groupframe_t;