diff --git a/RSPModelLib/include/RSPModel_datatypes.h b/RSPModelLib/include/RSPModel_datatypes.h index bbdc715..9a0f330 100644 --- a/RSPModelLib/include/RSPModel_datatypes.h +++ b/RSPModelLib/include/RSPModel_datatypes.h @@ -49,17 +49,19 @@ typedef struct rspmodel_texcoord { short u,v; } T_RSPMODEL_TEXCOORD; typedef struct face_flags { unsigned int fUnknown0:1; unsigned int fUnknown1:1; + unsigned int fHasTexture:1; unsigned int fIsQuad:1; unsigned int fSeparateColorVertex:1; unsigned int fHasColor:1; unsigned int fHasExtraBytesBeforeColor:1; + unsigned int fUnknown7:1; unsigned int fUnknown8:1; unsigned int fUnknown9:1; unsigned int fUnknown10:1; - unsigned int reserved:21; + unsigned int fReserved:21; } FACE_FLAGS; typedef struct hob_face { diff --git a/RSPModelLib/src/hob_parser.c b/RSPModelLib/src/hob_parser.c index c9d2319..4cbfb22 100644 --- a/RSPModelLib/src/hob_parser.c +++ b/RSPModelLib/src/hob_parser.c @@ -324,7 +324,7 @@ static unsigned short ExtractObjParts_faces(T_RSPMODEL_OBJ_PARTS* pObjPart, cons } if (pParams->debug_mode) { - printf("[DBG] > Face %d details: flags:0x%X b1:%d b2:%d b3%d bsize:%d\n", i, pObjPart->faces[i].flags, + printf("[DBG] > Face %d details: flags:0x%X b1:0x%X b2:0x%X b3:0x%X bsize:%d\n", i, pObjPart->faces[i].flags, pObjPart->faces[i].b1, pObjPart->faces[i].b2, pObjPart->faces[i].b3, pObjPart->faces[i].bsize); printf("[DBG] - Type is Quad: %d\n", pObjPart->faces[i].flags_bits.fIsQuad); printf("[DBG] - Have color: %d\n", pObjPart->faces[i].flags_bits.fHasColor); diff --git a/RSPModelLib/src/hob_struct2.h b/RSPModelLib/src/hob_struct2.h index 846e05b..07aca35 100644 --- a/RSPModelLib/src/hob_struct2.h +++ b/RSPModelLib/src/hob_struct2.h @@ -61,12 +61,12 @@ typedef struct PACK hobfile_obj_header { unsigned int object_parts_offset; // Object parts descriptor offset unsigned int object_parts_offset2; // Facegroup descriptor offset (subpart of Object parts descriptor) - unsigned int opt_offset1; // Optional offset - empty on last obj_header - point to after end mask ffffff of current bloc - unsigned int opt_offset2; // Optional offset - empty on last obj_header - point to after the previous opt_offset1 + unsigned int object_parts2_offset; // Optional offset - seem present in tieinter_HOB - point just after the 0xFFFFFFFF of the first one + unsigned int object_parts2_offset2; // Optional offset - seem present in tieinter_HOB unsigned int reserved1; // Always zeros ? unsigned int subparts_namelist_offset; // Point to an array of string value (8 chars) + ID (2 chars - 1 to obj_parts-1). Seem like name of articulation points (some have name like "node_86"). - unsigned int effects_offset; // Empty in gun_turret and no datas after, xwing have 0x5006. worddevastator should have the answer... + unsigned int effects_offset; // Empty in gun_turret and no datas after, xwing have 0x5006, present in koelsch. worddevastator can have more answers... unsigned int properties_offset; // Offset to different string (a_b/zf/zt/zb/etc.) Animation datas ? Empty with 6x float in train_hob float unknown4; // Probably scale: 1.0F/1.125F