]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_alias.c
removed \n from all Host_Error, Sys_Error, PRVM_ERROR, PF_ERROR calls, since Host_Err...
[xonotic/darkplaces.git] / model_alias.c
index f14739e07cafab52d1f3e754ed2834c98c903d44..642580075d0d14ed1bf5981058f83734b823676c 100644 (file)
@@ -89,7 +89,7 @@ void Mod_Alias_GetMesh_Vertex3f(const model_t *model, const frameblend_t *frameb
                const float *vertsbase, *verts1, *verts2, *verts3, *verts4;
                // vertex morph
                if (!mesh->data_morphvertex3f)
-                       Host_Error("model %s has no skeletal or vertex morph animation data\n", model->name);
+                       Host_Error("model %s has no skeletal or vertex morph animation data", model->name);
                vertsbase = mesh->data_morphvertex3f;
                vertcount = mesh->num_vertices;
                verts1 = vertsbase + frameblend[0].frame * vertcount * 3;
@@ -301,7 +301,7 @@ static void Mod_ConvertAliasVerts (int inverts, vec3_t scale, vec3_t translate,
        }
 }
 
-static void Mod_MDL_LoadFrames (qbyte* datapointer, int inverts, vec3_t scale, vec3_t translate, int *vertremap)
+static void Mod_MDL_LoadFrames (unsigned char* datapointer, int inverts, vec3_t scale, vec3_t translate, int *vertremap)
 {
        int i, f, pose, groupframes;
        float interval;
@@ -432,14 +432,14 @@ static void Mod_BuildAliasSkinsFromSkinFiles(texture_t *skin, skinfile_t *skinfi
        }
 }
 
-#define BOUNDI(VALUE,MIN,MAX) if (VALUE < MIN || VALUE >= MAX) Host_Error("model %s has an invalid ##VALUE (%d exceeds %d - %d)\n", loadmodel->name, VALUE, MIN, MAX);
-#define BOUNDF(VALUE,MIN,MAX) if (VALUE < MIN || VALUE >= MAX) Host_Error("model %s has an invalid ##VALUE (%f exceeds %f - %f)\n", loadmodel->name, VALUE, MIN, MAX);
+#define BOUNDI(VALUE,MIN,MAX) if (VALUE < MIN || VALUE >= MAX) Host_Error("model %s has an invalid ##VALUE (%d exceeds %d - %d)", loadmodel->name, VALUE, MIN, MAX);
+#define BOUNDF(VALUE,MIN,MAX) if (VALUE < MIN || VALUE >= MAX) Host_Error("model %s has an invalid ##VALUE (%f exceeds %f - %f)", loadmodel->name, VALUE, MIN, MAX);
 void Mod_IDP0_Load(model_t *mod, void *buffer, void *bufferend)
 {
        int i, j, version, totalskins, skinwidth, skinheight, groupframes, groupskins, numverts;
        float scales, scalet, scale[3], translate[3], interval;
        msurface_t *surface;
-       qbyte *data;
+       unsigned char *data;
        mdl_t *pinmodel;
        stvert_t *pinstverts;
        dtriangle_t *pintriangles;
@@ -448,7 +448,7 @@ void Mod_IDP0_Load(model_t *mod, void *buffer, void *bufferend)
        daliasskininterval_t *pinskinintervals;
        daliasframetype_t *pinframetype;
        daliasgroup_t *pinframegroup;
-       qbyte *datapointer, *startframes, *startskins;
+       unsigned char *datapointer, *startframes, *startskins;
        char name[MAX_QPATH];
        skinframe_t tempskinframe;
        animscene_t *tempskinscenes;
@@ -457,7 +457,7 @@ void Mod_IDP0_Load(model_t *mod, void *buffer, void *bufferend)
        int *vertonseam, *vertremap;
        skinfile_t *skinfiles;
 
-       datapointer = (qbyte *)buffer;
+       datapointer = (unsigned char *)buffer;
        pinmodel = (mdl_t *)datapointer;
        datapointer += sizeof(mdl_t);
 
@@ -477,7 +477,7 @@ void Mod_IDP0_Load(model_t *mod, void *buffer, void *bufferend)
        loadmodel->num_surfaces = 1;
        loadmodel->nummodelsurfaces = loadmodel->num_surfaces;
        loadmodel->nummeshes = loadmodel->num_surfaces;
-       data = (qbyte *)Mem_Alloc(loadmodel->mempool, loadmodel->num_surfaces * sizeof(msurface_t) + loadmodel->num_surfaces * sizeof(int) + loadmodel->nummeshes * sizeof(surfmesh_t *) + loadmodel->nummeshes * sizeof(surfmesh_t));
+       data = (unsigned char *)Mem_Alloc(loadmodel->mempool, loadmodel->num_surfaces * sizeof(msurface_t) + loadmodel->num_surfaces * sizeof(int) + loadmodel->nummeshes * sizeof(surfmesh_t *) + loadmodel->nummeshes * sizeof(surfmesh_t));
        loadmodel->data_surfaces = (msurface_t *)data;data += loadmodel->num_surfaces * sizeof(msurface_t);
        loadmodel->surfacelist = (int *)data;data += loadmodel->num_surfaces * sizeof(int);
        loadmodel->meshlist = (surfmesh_t **)data;data += loadmodel->num_surfaces * sizeof(surfmesh_t *);
@@ -499,7 +499,7 @@ void Mod_IDP0_Load(model_t *mod, void *buffer, void *bufferend)
        BOUNDI(loadmodel->meshlist[0]->num_triangles,0,65536);
        loadmodel->numframes = LittleLong(pinmodel->numframes);
        BOUNDI(loadmodel->numframes,0,65536);
-       loadmodel->synctype = LittleLong (pinmodel->synctype);
+       loadmodel->synctype = (synctype_t)LittleLong (pinmodel->synctype);
        BOUNDI(loadmodel->synctype,0,2);
        loadmodel->flags = LittleLong (pinmodel->flags);
 
@@ -700,7 +700,7 @@ void Mod_IDP0_Load(model_t *mod, void *buffer, void *bufferend)
                                else
                                        sprintf (name, "%s_%i", loadmodel->name, i);
                                if (!Mod_LoadSkinFrame(&tempskinframe, name, (r_mipskins.integer ? TEXF_MIPMAP : 0) | TEXF_ALPHA | TEXF_PICMIP, true, true))
-                                       Mod_LoadSkinFrame_Internal(&tempskinframe, name, (r_mipskins.integer ? TEXF_MIPMAP : 0) | TEXF_ALPHA | TEXF_PICMIP, true, r_fullbrights.integer, (qbyte *)datapointer, skinwidth, skinheight);
+                                       Mod_LoadSkinFrame_Internal(&tempskinframe, name, (r_mipskins.integer ? TEXF_MIPMAP : 0) | TEXF_ALPHA | TEXF_PICMIP, true, r_fullbrights.integer, (unsigned char *)datapointer, skinwidth, skinheight);
                                Mod_BuildAliasSkinFromSkinFrame(loadmodel->data_textures + totalskins * loadmodel->num_surfaces, &tempskinframe);
                                datapointer += skinwidth * skinheight;
                                totalskins++;
@@ -761,10 +761,10 @@ void Mod_IDP2_Load(model_t *mod, void *buffer, void *bufferend)
 {
        int i, j, k, hashindex, num, numxyz, numst, xyz, st, skinwidth, skinheight, *vertremap, version, end, numverts;
        float *stverts, s, t, scale[3], translate[3];
-       qbyte *data;
+       unsigned char *data;
        msurface_t *surface;
        md2_t *pinmodel;
-       qbyte *base, *datapointer;
+       unsigned char *base, *datapointer;
        md2frame_t *pinframe;
        char *inskin;
        md2triangle_t *intri;
@@ -780,7 +780,7 @@ void Mod_IDP2_Load(model_t *mod, void *buffer, void *bufferend)
        skinfile_t *skinfiles;
 
        pinmodel = (md2_t *)buffer;
-       base = (qbyte *)buffer;
+       base = (unsigned char *)buffer;
 
        version = LittleLong (pinmodel->version);
        if (version != MD2ALIAS_VERSION)
@@ -819,7 +819,7 @@ void Mod_IDP2_Load(model_t *mod, void *buffer, void *bufferend)
        loadmodel->num_surfaces = 1;
        loadmodel->nummodelsurfaces = loadmodel->num_surfaces;
        loadmodel->nummeshes = loadmodel->num_surfaces;
-       data = (qbyte *)Mem_Alloc(loadmodel->mempool, loadmodel->num_surfaces * sizeof(msurface_t) + loadmodel->num_surfaces * sizeof(int) + loadmodel->nummeshes * sizeof(surfmesh_t *) + loadmodel->nummeshes * sizeof(surfmesh_t));
+       data = (unsigned char *)Mem_Alloc(loadmodel->mempool, loadmodel->num_surfaces * sizeof(msurface_t) + loadmodel->num_surfaces * sizeof(int) + loadmodel->nummeshes * sizeof(surfmesh_t *) + loadmodel->nummeshes * sizeof(surfmesh_t));
        loadmodel->data_surfaces = (msurface_t *)data;data += loadmodel->num_surfaces * sizeof(msurface_t);
        loadmodel->surfacelist = (int *)data;data += loadmodel->num_surfaces * sizeof(int);
        loadmodel->meshlist = (surfmesh_t **)data;data += loadmodel->num_surfaces * sizeof(surfmesh_t *);
@@ -1005,7 +1005,7 @@ void Mod_IDP2_Load(model_t *mod, void *buffer, void *bufferend)
 void Mod_IDP3_Load(model_t *mod, void *buffer, void *bufferend)
 {
        int i, j, k, version;
-       qbyte *data;
+       unsigned char *data;
        msurface_t *surface;
        surfmesh_t *mesh;
        md3modelheader_t *pinmodel;
@@ -1017,7 +1017,7 @@ void Mod_IDP3_Load(model_t *mod, void *buffer, void *bufferend)
        pinmodel = (md3modelheader_t *)buffer;
 
        if (memcmp(pinmodel->identifier, "IDP3", 4))
-               Host_Error ("%s is not a MD3 (IDP3) file\n", loadmodel->name);
+               Host_Error ("%s is not a MD3 (IDP3) file", loadmodel->name);
        version = LittleLong (pinmodel->version);
        if (version != MD3VERSION)
                Host_Error ("%s has wrong version number (%i should be %i)",
@@ -1053,7 +1053,7 @@ void Mod_IDP3_Load(model_t *mod, void *buffer, void *bufferend)
 
        // load frameinfo
        loadmodel->animscenes = (animscene_t *)Mem_Alloc(loadmodel->mempool, loadmodel->numframes * sizeof(animscene_t));
-       for (i = 0, pinframe = (md3frameinfo_t *)((qbyte *)pinmodel + LittleLong(pinmodel->lump_frameinfo));i < loadmodel->numframes;i++, pinframe++)
+       for (i = 0, pinframe = (md3frameinfo_t *)((unsigned char *)pinmodel + LittleLong(pinmodel->lump_frameinfo));i < loadmodel->numframes;i++, pinframe++)
        {
                strcpy(loadmodel->animscenes[i].name, pinframe->name);
                loadmodel->animscenes[i].firstframe = i;
@@ -1066,7 +1066,7 @@ void Mod_IDP3_Load(model_t *mod, void *buffer, void *bufferend)
        loadmodel->num_tagframes = loadmodel->numframes;
        loadmodel->num_tags = LittleLong(pinmodel->num_tags);
        loadmodel->data_tags = (aliastag_t *)Mem_Alloc(loadmodel->mempool, loadmodel->num_tagframes * loadmodel->num_tags * sizeof(aliastag_t));
-       for (i = 0, pintag = (md3tag_t *)((qbyte *)pinmodel + LittleLong(pinmodel->lump_tags));i < loadmodel->num_tagframes * loadmodel->num_tags;i++, pintag++)
+       for (i = 0, pintag = (md3tag_t *)((unsigned char *)pinmodel + LittleLong(pinmodel->lump_tags));i < loadmodel->num_tagframes * loadmodel->num_tags;i++, pintag++)
        {
                strcpy(loadmodel->data_tags[i].name, pintag->name);
                Matrix4x4_CreateIdentity(&loadmodel->data_tags[i].matrix);
@@ -1083,7 +1083,7 @@ void Mod_IDP3_Load(model_t *mod, void *buffer, void *bufferend)
        loadmodel->nummodelsurfaces = loadmodel->num_surfaces;
        loadmodel->nummeshes = loadmodel->num_surfaces;
        loadmodel->num_textures = loadmodel->num_surfaces;
-       data = (qbyte *)Mem_Alloc(loadmodel->mempool, loadmodel->num_surfaces * sizeof(msurface_t) + loadmodel->num_surfaces * sizeof(int) + loadmodel->nummeshes * sizeof(surfmesh_t *) + loadmodel->nummeshes * sizeof(surfmesh_t) + loadmodel->num_surfaces * loadmodel->numskins * sizeof(texture_t));
+       data = (unsigned char *)Mem_Alloc(loadmodel->mempool, loadmodel->num_surfaces * sizeof(msurface_t) + loadmodel->num_surfaces * sizeof(int) + loadmodel->nummeshes * sizeof(surfmesh_t *) + loadmodel->nummeshes * sizeof(surfmesh_t) + loadmodel->num_surfaces * loadmodel->numskins * sizeof(texture_t));
        loadmodel->data_surfaces = (msurface_t *)data;data += loadmodel->num_surfaces * sizeof(msurface_t);
        loadmodel->surfacelist = (int *)data;data += loadmodel->num_surfaces * sizeof(int);
        loadmodel->meshlist = (surfmesh_t **)data;data += loadmodel->num_surfaces * sizeof(surfmesh_t *);
@@ -1093,10 +1093,10 @@ void Mod_IDP3_Load(model_t *mod, void *buffer, void *bufferend)
                loadmodel->surfacelist[i] = i;
                loadmodel->meshlist[i] = (surfmesh_t *)data;data += sizeof(surfmesh_t);
        }
-       for (i = 0, pinmesh = (md3mesh_t *)((qbyte *)pinmodel + LittleLong(pinmodel->lump_meshes));i < loadmodel->num_surfaces;i++, pinmesh = (md3mesh_t *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_end)))
+       for (i = 0, pinmesh = (md3mesh_t *)((unsigned char *)pinmodel + LittleLong(pinmodel->lump_meshes));i < loadmodel->num_surfaces;i++, pinmesh = (md3mesh_t *)((unsigned char *)pinmesh + LittleLong(pinmesh->lump_end)))
        {
                if (memcmp(pinmesh->identifier, "IDP3", 4))
-                       Host_Error("Mod_IDP3_Load: invalid mesh identifier (not IDP3)\n");
+                       Host_Error("Mod_IDP3_Load: invalid mesh identifier (not IDP3)");
                mesh = loadmodel->meshlist[i];
                mesh->num_morphframes = LittleLong(pinmesh->num_frames);
                mesh->num_vertices = LittleLong(pinmesh->num_vertices);
@@ -1106,17 +1106,17 @@ void Mod_IDP3_Load(model_t *mod, void *buffer, void *bufferend)
                mesh->data_texcoordtexture2f = (float *)Mem_Alloc(loadmodel->mempool, mesh->num_vertices * sizeof(float[2]));
                mesh->data_morphvertex3f = (float *)Mem_Alloc(loadmodel->mempool, mesh->num_vertices * mesh->num_morphframes * sizeof(float[3]));
                for (j = 0;j < mesh->num_triangles * 3;j++)
-                       mesh->data_element3i[j] = LittleLong(((int *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_elements)))[j]);
+                       mesh->data_element3i[j] = LittleLong(((int *)((unsigned char *)pinmesh + LittleLong(pinmesh->lump_elements)))[j]);
                for (j = 0;j < mesh->num_vertices;j++)
                {
-                       mesh->data_texcoordtexture2f[j * 2 + 0] = LittleFloat(((float *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_texcoords)))[j * 2 + 0]);
-                       mesh->data_texcoordtexture2f[j * 2 + 1] = LittleFloat(((float *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_texcoords)))[j * 2 + 1]);
+                       mesh->data_texcoordtexture2f[j * 2 + 0] = LittleFloat(((float *)((unsigned char *)pinmesh + LittleLong(pinmesh->lump_texcoords)))[j * 2 + 0]);
+                       mesh->data_texcoordtexture2f[j * 2 + 1] = LittleFloat(((float *)((unsigned char *)pinmesh + LittleLong(pinmesh->lump_texcoords)))[j * 2 + 1]);
                }
                for (j = 0;j < mesh->num_vertices * mesh->num_morphframes;j++)
                {
-                       mesh->data_morphvertex3f[j * 3 + 0] = LittleShort(((short *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_framevertices)))[j * 4 + 0]) * (1.0f / 64.0f);
-                       mesh->data_morphvertex3f[j * 3 + 1] = LittleShort(((short *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_framevertices)))[j * 4 + 1]) * (1.0f / 64.0f);
-                       mesh->data_morphvertex3f[j * 3 + 2] = LittleShort(((short *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_framevertices)))[j * 4 + 2]) * (1.0f / 64.0f);
+                       mesh->data_morphvertex3f[j * 3 + 0] = LittleShort(((short *)((unsigned char *)pinmesh + LittleLong(pinmesh->lump_framevertices)))[j * 4 + 0]) * (1.0f / 64.0f);
+                       mesh->data_morphvertex3f[j * 3 + 1] = LittleShort(((short *)((unsigned char *)pinmesh + LittleLong(pinmesh->lump_framevertices)))[j * 4 + 1]) * (1.0f / 64.0f);
+                       mesh->data_morphvertex3f[j * 3 + 2] = LittleShort(((short *)((unsigned char *)pinmesh + LittleLong(pinmesh->lump_framevertices)))[j * 4 + 2]) * (1.0f / 64.0f);
                }
 
                Mod_ValidateElements(mesh->data_element3i, mesh->num_triangles, mesh->num_vertices, __FILE__, __LINE__);
@@ -1124,7 +1124,7 @@ void Mod_IDP3_Load(model_t *mod, void *buffer, void *bufferend)
                Mod_Alias_Mesh_CompileFrameZero(mesh);
 
                if (LittleLong(pinmesh->num_shaders) >= 1)
-                       Mod_BuildAliasSkinsFromSkinFiles(loadmodel->data_textures + i, skinfiles, pinmesh->name, ((md3shader_t *)((qbyte *) pinmesh + LittleLong(pinmesh->lump_shaders)))->name);
+                       Mod_BuildAliasSkinsFromSkinFiles(loadmodel->data_textures + i, skinfiles, pinmesh->name, ((md3shader_t *)((unsigned char *) pinmesh + LittleLong(pinmesh->lump_shaders)))->name);
                else
                        for (j = 0;j < loadmodel->numskins;j++)
                                Mod_BuildAliasSkinFromSkinFrame(loadmodel->data_textures + i + j * loadmodel->num_surfaces, NULL);
@@ -1144,7 +1144,7 @@ void Mod_IDP3_Load(model_t *mod, void *buffer, void *bufferend)
 void Mod_ZYMOTICMODEL_Load(model_t *mod, void *buffer, void *bufferend)
 {
        zymtype1header_t *pinmodel, *pheader;
-       qbyte *pbase;
+       unsigned char *pbase;
        int i, j, k, l, numposes, *bonecount, *vertbonecounts, count, *renderlist, *renderlistend, *outelements, *remapvertices;
        float modelradius, corner[2], *poses, *intexcoord2f, *outtexcoord2f;
        zymvertex_t *verts, *vertdata;
@@ -1152,16 +1152,16 @@ void Mod_ZYMOTICMODEL_Load(model_t *mod, void *buffer, void *bufferend)
        zymbone_t *bone;
        char *shadername;
        skinfile_t *skinfiles;
-       qbyte *data;
+       unsigned char *data;
        msurface_t *surface;
        surfmesh_t *mesh;
 
        pinmodel = (zymtype1header_t *)buffer;
-       pbase = (qbyte *)buffer;
+       pbase = (unsigned char *)buffer;
        if (memcmp(pinmodel->id, "ZYMOTICMODEL", 12))
-               Host_Error ("Mod_ZYMOTICMODEL_Load: %s is not a zymotic model\n");
+               Host_Error ("Mod_ZYMOTICMODEL_Load: %s is not a zymotic model");
        if (BigLong(pinmodel->type) != 1)
-               Host_Error ("Mod_ZYMOTICMODEL_Load: only type 1 (skeletal pose) models are currently supported (name = %s)\n", loadmodel->name);
+               Host_Error ("Mod_ZYMOTICMODEL_Load: only type 1 (skeletal pose) models are currently supported (name = %s)", loadmodel->name);
 
        loadmodel->type = mod_alias;
        loadmodel->DrawSky = NULL;
@@ -1259,11 +1259,11 @@ void Mod_ZYMOTICMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                loadmodel->animscenes[i].framerate = BigFloat(scene->framerate);
                loadmodel->animscenes[i].loop = (BigLong(scene->flags) & ZYMSCENEFLAG_NOLOOP) == 0;
                if ((unsigned int) loadmodel->animscenes[i].firstframe >= (unsigned int) numposes)
-                       Host_Error("%s scene->firstframe (%i) >= numposes (%i)\n", loadmodel->name, loadmodel->animscenes[i].firstframe, numposes);
+                       Host_Error("%s scene->firstframe (%i) >= numposes (%i)", loadmodel->name, loadmodel->animscenes[i].firstframe, numposes);
                if ((unsigned int) loadmodel->animscenes[i].firstframe + (unsigned int) loadmodel->animscenes[i].framecount > (unsigned int) numposes)
-                       Host_Error("%s scene->firstframe (%i) + framecount (%i) >= numposes (%i)\n", loadmodel->name, loadmodel->animscenes[i].firstframe, loadmodel->animscenes[i].framecount, numposes);
+                       Host_Error("%s scene->firstframe (%i) + framecount (%i) >= numposes (%i)", loadmodel->name, loadmodel->animscenes[i].firstframe, loadmodel->animscenes[i].framecount, numposes);
                if (loadmodel->animscenes[i].framerate < 0)
-                       Host_Error("%s scene->framerate (%f) < 0\n", loadmodel->name, loadmodel->animscenes[i].framerate);
+                       Host_Error("%s scene->framerate (%f) < 0", loadmodel->name, loadmodel->animscenes[i].framerate);
                scene++;
        }
 
@@ -1284,7 +1284,7 @@ void Mod_ZYMOTICMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                loadmodel->data_bones[i].flags = BigLong(bone[i].flags);
                loadmodel->data_bones[i].parent = BigLong(bone[i].parent);
                if (loadmodel->data_bones[i].parent >= i)
-                       Host_Error("%s bone[%i].parent >= %i\n", loadmodel->name, i, i);
+                       Host_Error("%s bone[%i].parent >= %i", loadmodel->name, i, i);
        }
 
        //zymlump_t lump_vertbonecounts; // int vertbonecounts[numvertices]; // how many bones influence each vertex (separate mainly to make this compress better)
@@ -1294,7 +1294,7 @@ void Mod_ZYMOTICMODEL_Load(model_t *mod, void *buffer, void *bufferend)
        {
                vertbonecounts[i] = BigLong(bonecount[i]);
                if (vertbonecounts[i] < 1)
-                       Host_Error("%s bonecount[%i] < 1\n", loadmodel->name, i);
+                       Host_Error("%s bonecount[%i] < 1", loadmodel->name, i);
        }
 
        //zymlump_t lump_verts; // zymvertex_t vert[numvertices]; // see vertex struct
@@ -1325,7 +1325,7 @@ void Mod_ZYMOTICMODEL_Load(model_t *mod, void *buffer, void *bufferend)
        loadmodel->nummodelsurfaces = loadmodel->num_surfaces;
        loadmodel->nummeshes = loadmodel->num_surfaces;
        loadmodel->num_textures = loadmodel->num_surfaces;
-       data = (qbyte *)Mem_Alloc(loadmodel->mempool, loadmodel->num_surfaces * sizeof(msurface_t) + loadmodel->num_surfaces * sizeof(int) + loadmodel->nummeshes * sizeof(surfmesh_t *) + loadmodel->nummeshes * sizeof(surfmesh_t) + loadmodel->num_surfaces * loadmodel->numskins * sizeof(texture_t));
+       data = (unsigned char *)Mem_Alloc(loadmodel->mempool, loadmodel->num_surfaces * sizeof(msurface_t) + loadmodel->num_surfaces * sizeof(int) + loadmodel->nummeshes * sizeof(surfmesh_t *) + loadmodel->nummeshes * sizeof(surfmesh_t) + loadmodel->num_surfaces * loadmodel->numskins * sizeof(texture_t));
        loadmodel->data_surfaces = (msurface_t *)data;data += loadmodel->num_surfaces * sizeof(msurface_t);
        loadmodel->surfacelist = (int *)data;data += loadmodel->num_surfaces * sizeof(int);
        loadmodel->meshlist = (surfmesh_t **)data;data += loadmodel->num_surfaces * sizeof(surfmesh_t *);
@@ -1341,16 +1341,16 @@ void Mod_ZYMOTICMODEL_Load(model_t *mod, void *buffer, void *bufferend)
        // byteswap, validate, and swap winding order of tris
        count = pheader->numshaders * sizeof(int) + pheader->numtris * sizeof(int[3]);
        if (pheader->lump_render.length != count)
-               Host_Error("%s renderlist is wrong size (%i bytes, should be %i bytes)\n", loadmodel->name, pheader->lump_render.length, count);
+               Host_Error("%s renderlist is wrong size (%i bytes, should be %i bytes)", loadmodel->name, pheader->lump_render.length, count);
        renderlist = (int *) (pheader->lump_render.start + pbase);
-       renderlistend = (int *) ((qbyte *) renderlist + pheader->lump_render.length);
+       renderlistend = (int *) ((unsigned char *) renderlist + pheader->lump_render.length);
        for (i = 0;i < loadmodel->num_surfaces;i++)
        {
                if (renderlist >= renderlistend)
-                       Host_Error("%s corrupt renderlist (wrong size)\n", loadmodel->name);
+                       Host_Error("%s corrupt renderlist (wrong size)", loadmodel->name);
                count = BigLong(*renderlist);renderlist++;
                if (renderlist + count * 3 > renderlistend || (i == pheader->numshaders - 1 && renderlist + count * 3 != renderlistend))
-                       Host_Error("%s corrupt renderlist (wrong size)\n", loadmodel->name);
+                       Host_Error("%s corrupt renderlist (wrong size)", loadmodel->name);
                mesh = loadmodel->meshlist[i];
                mesh->num_triangles = count;
                mesh->data_element3i = (int *)Mem_Alloc(loadmodel->mempool, mesh->num_triangles * sizeof(int[3]));
@@ -1364,9 +1364,9 @@ void Mod_ZYMOTICMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                        if ((unsigned int)outelements[0] >= (unsigned int)pheader->numverts
                         || (unsigned int)outelements[1] >= (unsigned int)pheader->numverts
                         || (unsigned int)outelements[2] >= (unsigned int)pheader->numverts)
-                               Host_Error("%s corrupt renderlist (out of bounds index)\n", loadmodel->name);
+                               Host_Error("%s corrupt renderlist (out of bounds index)", loadmodel->name);
                        if (vertbonecounts[outelements[0]] == 0 || vertbonecounts[outelements[1]] == 0 || vertbonecounts[outelements[2]] == 0)
-                               Host_Error("%s corrupt renderlist (references vertex with no bone weights\n", loadmodel->name);
+                               Host_Error("%s corrupt renderlist (references vertex with no bone weights", loadmodel->name);
                        renderlist += 3;
                        outelements += 3;
                }
@@ -1444,17 +1444,17 @@ void Mod_DARKPLACESMODEL_Load(model_t *mod, void *buffer, void *bufferend)
        dpmframe_t *frame;
        dpmbone_t *bone;
        dpmmesh_t *dpmmesh;
-       qbyte *pbase;
+       unsigned char *pbase;
        int i, j, k;
        skinfile_t *skinfiles;
-       qbyte *data;
+       unsigned char *data;
 
        pheader = (dpmheader_t *)buffer;
-       pbase = (qbyte *)buffer;
+       pbase = (unsigned char *)buffer;
        if (memcmp(pheader->id, "DARKPLACESMODEL\0", 16))
-               Host_Error ("Mod_DARKPLACESMODEL_Load: %s is not a darkplaces model\n");
+               Host_Error ("Mod_DARKPLACESMODEL_Load: %s is not a darkplaces model");
        if (BigLong(pheader->type) != 2)
-               Host_Error ("Mod_DARKPLACESMODEL_Load: only type 2 (hierarchical skeletal pose) models are currently supported (name = %s)\n", loadmodel->name);
+               Host_Error ("Mod_DARKPLACESMODEL_Load: only type 2 (hierarchical skeletal pose) models are currently supported (name = %s)", loadmodel->name);
 
        loadmodel->type = mod_alias;
        loadmodel->DrawSky = NULL;
@@ -1508,7 +1508,7 @@ void Mod_DARKPLACESMODEL_Load(model_t *mod, void *buffer, void *bufferend)
        loadmodel->num_textures = loadmodel->nummeshes = loadmodel->nummodelsurfaces = loadmodel->num_surfaces = pheader->num_meshs;
 
        // do most allocations as one merged chunk
-       data = (qbyte *)Mem_Alloc(loadmodel->mempool, loadmodel->num_surfaces * sizeof(msurface_t) + loadmodel->num_surfaces * sizeof(int) + loadmodel->nummeshes * sizeof(surfmesh_t *) + loadmodel->nummeshes * sizeof(surfmesh_t) + loadmodel->num_surfaces * loadmodel->numskins * sizeof(texture_t) + loadmodel->numskins * sizeof(animscene_t) + loadmodel->num_bones * sizeof(aliasbone_t) + loadmodel->num_poses * sizeof(float[12]) + loadmodel->numframes * sizeof(animscene_t));
+       data = (unsigned char *)Mem_Alloc(loadmodel->mempool, loadmodel->num_surfaces * sizeof(msurface_t) + loadmodel->num_surfaces * sizeof(int) + loadmodel->nummeshes * sizeof(surfmesh_t *) + loadmodel->nummeshes * sizeof(surfmesh_t) + loadmodel->num_surfaces * loadmodel->numskins * sizeof(texture_t) + loadmodel->numskins * sizeof(animscene_t) + loadmodel->num_bones * sizeof(aliasbone_t) + loadmodel->num_poses * sizeof(float[12]) + loadmodel->numframes * sizeof(animscene_t));
        loadmodel->data_surfaces = (msurface_t *)data;data += loadmodel->num_surfaces * sizeof(msurface_t);
        loadmodel->surfacelist = (int *)data;data += loadmodel->num_surfaces * sizeof(int);
        loadmodel->meshlist = (surfmesh_t **)data;data += loadmodel->num_surfaces * sizeof(surfmesh_t *);
@@ -1538,7 +1538,7 @@ void Mod_DARKPLACESMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                loadmodel->data_bones[i].flags = BigLong(bone[i].flags);
                loadmodel->data_bones[i].parent = BigLong(bone[i].parent);
                if (loadmodel->data_bones[i].parent >= i)
-                       Host_Error("%s bone[%i].parent >= %i\n", loadmodel->name, i, i);
+                       Host_Error("%s bone[%i].parent >= %i", loadmodel->name, i, i);
        }
 
        // load the frames
@@ -1575,7 +1575,7 @@ void Mod_DARKPLACESMODEL_Load(model_t *mod, void *buffer, void *bufferend)
 
                // to find out how many weights exist we two a two-stage load...
                mesh->num_vertexboneweights = 0;
-               data = (qbyte *) (pbase + BigLong(dpmmesh->ofs_verts));
+               data = (unsigned char *) (pbase + BigLong(dpmmesh->ofs_verts));
                for (j = 0;j < mesh->num_vertices;j++)
                {
                        int numweights = BigLong(((dpmvertex_t *)data)->numbones);
@@ -1608,7 +1608,7 @@ void Mod_DARKPLACESMODEL_Load(model_t *mod, void *buffer, void *bufferend)
 
                // now load them for real
                mesh->num_vertexboneweights = 0;
-               data = (qbyte *) (pbase + BigLong(dpmmesh->ofs_verts));
+               data = (unsigned char *) (pbase + BigLong(dpmmesh->ofs_verts));
                for (j = 0;j < mesh->num_vertices;j++)
                {
                        int numweights = BigLong(((dpmvertex_t *)data)->numbones);
@@ -1666,6 +1666,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
 {
        int i, j, index, version, recordsize, numrecords;
        int numpnts, numvtxw, numfaces, nummatts, numbones, numrawweights, numanimbones, numanims, numanimkeys;
+       fs_offset_t filesize;
        pskpnts_t *pnts;
        pskvtxw_t *vtxw;
        pskface_t *faces;
@@ -1683,7 +1684,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
 
        pchunk = (pskchunk_t *)buffer;
        if (strcmp(pchunk->id, "ACTRHEAD"))
-               Host_Error ("Mod_PSKMODEL_Load: %s is not a ActorX model\n");
+               Host_Error ("Mod_PSKMODEL_Load: %s is not an Unreal Engine ActorX (.psk + .psa) model");
 
        loadmodel->type = mod_alias;
        loadmodel->DrawSky = NULL;
@@ -1710,10 +1711,10 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
 
        FS_StripExtension(loadmodel->name, animname, sizeof(animname));
        strlcat(animname, ".psa", sizeof(animname));
-       animbuffer = animfilebuffer = FS_LoadFile(animname, loadmodel->mempool, false);
-       animbufferend = (void *)((unsigned char*)animbuffer + fs_filesize);
+       animbuffer = animfilebuffer = FS_LoadFile(animname, loadmodel->mempool, false, &filesize);
+       animbufferend = (void *)((unsigned char*)animbuffer + (int)filesize);
        if (animbuffer == NULL)
-               Host_Error("%s: can't find .psa file (%s)\n", loadmodel->name, animname);
+               Host_Error("%s: can't find .psa file (%s)", loadmodel->name, animname);
 
        numpnts = 0;
        pnts = NULL;
@@ -1751,7 +1752,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                {
                        pskpnts_t *p;
                        if (recordsize != sizeof(*p))
-                               Host_Error("%s: %s has unsupported recordsize\n", loadmodel->name, pchunk->id);
+                               Host_Error("%s: %s has unsupported recordsize", loadmodel->name, pchunk->id);
                        // byteswap in place and keep the pointer
                        numpnts = numrecords;
                        pnts = (pskpnts_t *)buffer;
@@ -1767,7 +1768,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                {
                        pskvtxw_t *p;
                        if (recordsize != sizeof(*p))
-                               Host_Error("%s: %s has unsupported recordsize\n", loadmodel->name, pchunk->id);
+                               Host_Error("%s: %s has unsupported recordsize", loadmodel->name, pchunk->id);
                        // byteswap in place and keep the pointer
                        numvtxw = numrecords;
                        vtxw = (pskvtxw_t *)buffer;
@@ -1788,7 +1789,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                {
                        pskface_t *p;
                        if (recordsize != sizeof(*p))
-                               Host_Error("%s: %s has unsupported recordsize\n", loadmodel->name, pchunk->id);
+                               Host_Error("%s: %s has unsupported recordsize", loadmodel->name, pchunk->id);
                        // byteswap in place and keep the pointer
                        numfaces = numrecords;
                        faces = (pskface_t *)buffer;
@@ -1820,7 +1821,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                {
                        pskmatt_t *p;
                        if (recordsize != sizeof(*p))
-                               Host_Error("%s: %s has unsupported recordsize\n", loadmodel->name, pchunk->id);
+                               Host_Error("%s: %s has unsupported recordsize", loadmodel->name, pchunk->id);
                        // byteswap in place and keep the pointer
                        nummatts = numrecords;
                        matts = (pskmatt_t *)buffer;
@@ -1833,7 +1834,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                {
                        pskboneinfo_t *p;
                        if (recordsize != sizeof(*p))
-                               Host_Error("%s: %s has unsupported recordsize\n", loadmodel->name, pchunk->id);
+                               Host_Error("%s: %s has unsupported recordsize", loadmodel->name, pchunk->id);
                        // byteswap in place and keep the pointer
                        numbones = numrecords;
                        bones = (pskboneinfo_t *)buffer;
@@ -1878,7 +1879,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                {
                        pskrawweights_t *p;
                        if (recordsize != sizeof(*p))
-                               Host_Error("%s: %s has unsupported recordsize\n", loadmodel->name, pchunk->id);
+                               Host_Error("%s: %s has unsupported recordsize", loadmodel->name, pchunk->id);
                        // byteswap in place and keep the pointer
                        numrawweights = numrecords;
                        rawweights = (pskrawweights_t *)buffer;
@@ -1921,7 +1922,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                {
                        pskboneinfo_t *p;
                        if (recordsize != sizeof(*p))
-                               Host_Error("%s: %s has unsupported recordsize\n", animname, pchunk->id);
+                               Host_Error("%s: %s has unsupported recordsize", animname, pchunk->id);
                        // byteswap in place and keep the pointer
                        numanimbones = numrecords;
                        animbones = (pskboneinfo_t *)animbuffer;
@@ -1930,7 +1931,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                        // positions from the psk, but this is hard for me to implement
                        // and people can easily make animations that match.
                        if (numanimbones != numbones)
-                               Host_Error("%s: this loader only supports animations with the same bones as the mesh\n");
+                               Host_Error("%s: this loader only supports animations with the same bones as the mesh");
                        for (index = 0, p = (pskboneinfo_t *)animbuffer;index < numrecords;index++, p++)
                        {
                                p->numchildren = LittleLong(p->numchildren);
@@ -1967,7 +1968,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                                }
                                // check that bones are the same as in the base
                                if (strcmp(p->name, bones[index].name) || p->parent != bones[index].parent)
-                                       Host_Error("%s: this loader only supports animations with the same bones as the mesh\n", animname);
+                                       Host_Error("%s: this loader only supports animations with the same bones as the mesh", animname);
                        }
                        animbuffer = p;
                }
@@ -1975,7 +1976,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                {
                        pskaniminfo_t *p;
                        if (recordsize != sizeof(*p))
-                               Host_Error("%s: %s has unsupported recordsize\n", animname, pchunk->id);
+                               Host_Error("%s: %s has unsupported recordsize", animname, pchunk->id);
                        // byteswap in place and keep the pointer
                        numanims = numrecords;
                        anims = (pskaniminfo_t *)animbuffer;
@@ -1997,7 +1998,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                {
                        pskanimkeys_t *p;
                        if (recordsize != sizeof(*p))
-                               Host_Error("%s: %s has unsupported recordsize\n", animname, pchunk->id);
+                               Host_Error("%s: %s has unsupported recordsize", animname, pchunk->id);
                        numanimkeys = numrecords;
                        animkeys = (pskanimkeys_t *)animbuffer;
                        for (index = 0, p = (pskanimkeys_t *)animbuffer;index < numrecords;index++, p++)
@@ -2033,7 +2034,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
        }
 
        if (!numpnts || !pnts || !numvtxw || !vtxw || !numfaces || !faces || !nummatts || !matts || !numbones || !bones || !numrawweights || !rawweights || !numanims || !anims || !numanimkeys || !animkeys)
-               Host_Error("%s: missing required chunks\n", loadmodel->name);
+               Host_Error("%s: missing required chunks", loadmodel->name);
 
        // FIXME: model bbox
        // model bbox
@@ -2058,7 +2059,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
        loadmodel->num_textures = loadmodel->nummeshes = loadmodel->nummodelsurfaces = loadmodel->num_surfaces = nummatts;
 
        if (numanimkeys != loadmodel->num_bones * loadmodel->numframes)
-               Host_Error("%s: %s has incorrect number of animation keys\n", animname, pchunk->id);
+               Host_Error("%s: %s has incorrect number of animation keys", animname, pchunk->id);
 
        loadmodel->data_poses = (float *)Mem_Alloc(loadmodel->mempool, loadmodel->num_poses * sizeof(float[12]));
        loadmodel->animscenes = (animscene_t *)Mem_Alloc(loadmodel->mempool, loadmodel->numframes * sizeof(animscene_t));
@@ -2121,7 +2122,7 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend)
                strlcpy(loadmodel->data_bones[index].name, bones[index].name, sizeof(loadmodel->data_bones[index].name));
                loadmodel->data_bones[index].parent = (index || bones[index].parent > 0) ? bones[index].parent : -1;
                if (loadmodel->data_bones[index].parent >= index)
-                       Host_Error("%s bone[%i].parent >= %i\n", loadmodel->name, index, index);
+                       Host_Error("%s bone[%i].parent >= %i", loadmodel->name, index, index);
        }
 
        // build bone-relative vertex weights from the psk point weights