From 462412c31a7217005341fc2f0debe077fd44271c Mon Sep 17 00:00:00 2001 From: mid <> Date: Tue, 30 Sep 2025 11:05:12 +0300 Subject: [PATCH] Already .k3m has some legacy bullshit --- src/loaders.inc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/loaders.inc b/src/loaders.inc index df23b8b..f354906 100644 --- a/src/loaders.inc +++ b/src/loaders.inc @@ -25,6 +25,9 @@ static int mdlloader(void *ud, struct ResManRes *res) { } header; fread(&header, 4, 4, f); + // ' ' or '1' + char version = ((char*) &header.magic)[3]; + int colorsEnabled = header.flags & 1; mat4 *invBind = _mm_malloc(sizeof(*invBind) * header.boneCount, 16); @@ -83,8 +86,11 @@ static int mdlloader(void *ud, struct ResManRes *res) { fread(&meshes, sizeof(uint16_t), 1, f); for(uint32_t i = 0; i < meshes; i++) { - uint16_t startnum[2]; - fread(startnum, sizeof(uint16_t), 2, f); + uint32_t start = 0; + uint32_t number = 0; + + fread(&start, version == ' ' ? sizeof(uint16_t) : sizeof(uint32_t), 1, f); + fread(&number, version == ' ' ? sizeof(uint16_t) : sizeof(uint32_t), 1, f); char buf[256] = {}; for(int c = 0; c < sizeof(buf) - 1; c++) { @@ -94,7 +100,7 @@ static int mdlloader(void *ud, struct ResManRes *res) { } } - k3MdlAddMesh(mdl, resman_ref(RESMAN_MATERIAL, buf), startnum[0], startnum[1]); + k3MdlAddMesh(mdl, resman_ref(RESMAN_MATERIAL, buf), start, number); } for(size_t i = 0; i < header.animCount; i++) {