Thursday at 09:36 PM4 days A few days ago, I've tried to rip some stuff (namely models, textures and hopefully animations) from an Xbox 360 live arcade game, Raskulls. I'll be honest, I'm extremely out of my element here. I've tried to use ModelResearcher once before for a different game but had no luck. I've tried it here and I'm able to get meshes/faces and uvs to show up, but I don't really know what to do from here. I used wxPirs to extract the game's files and quickbms/xcompress_file to decompress them, but since the game is pretty random I don't know what else to do. Any help would be greatly appreciated!I hope this isn't a bit hasty of me, but here's a zip with some of the game's decompressed files if it helps. misc raskulls files.zip
9 hours ago9 hr Localization Here is my attempt at an ImHex pattern script for the .mesh files. There's a large chunk of unknown data in the Mesh struct, but it seems to have a mostly fixed size in your samples. Should be enough to write a script or something.#pragma endian big struct Matrix4x4 { float row_0[4]; float row_1[4]; float row_2[4]; float row_3[4]; } [[single_color]]; struct Node { u32 name_crc; Matrix4x4 transform; float; }; struct NodeChunk { u32 node_count; Node nodes[node_count]; }; using Bone; struct BonePtr { u32 bone_off; Bone bone @ bone_off; }; struct Bone { u32 name_crc; Matrix4x4 transform; u32 child_count; BonePtr child_bones[child_count]; }; struct Vertex { float position[3]; float normal[3]; s32; u8 indices[4]; float weights[4]; float uv[2]; }; struct VertexChunk { u32 vertex_count; Vertex vertices[vertex_count]; }; struct TriangleChunk { u32 tri_count; u32 indices[tri_count * 3]; }; struct UnkChunk { u32 unk_count; u32 unk_vals[unk_count]; }; struct QuadChunk { u32 quad_count; u32 indices_off; u32 indices[quad_count * 4] @ indices_off; }; struct Mesh { s32; float; u32; u32; u32; char tex_path[64]; u32 unk_ints[135]; float vec_0[3]; u32; u32; float vec_1[3]; u32; u32; u16 unk_shorts[28]; u32 unk_ints_1[75]; s32; u32; u32; u32; u32; u32; float; float; float; float; float; u32 vertex_chunk_off; u32 tri_chunk_off; u32; u32; u32 unk_chunk_off; u32 quad_chunk_off; VertexChunk vertex_chunk @ vertex_chunk_off; TriangleChunk tri_chunk @ tri_chunk_off; UnkChunk unk_val_chunk @ unk_chunk_off; QuadChunk quad_chunk @ quad_chunk_off; }; struct MeshPtr { u32 mesh_off; Mesh mesh @ mesh_off; }; struct Skin { u32; Matrix4x4; u32; }; struct SkinChunk { u32; Matrix4x4; u32 bone_count; BonePtr bones[bone_count]; }; struct File { u32 node_chunk_off; u32 skin_chunk_off; u32 mesh_count; MeshPtr meshes[mesh_count]; NodeChunk node_chunk @ node_chunk_off; SkinChunk skin_chunk @ skin_chunk_off; }; File file_at_0x00 @ 0x00;
Create an account or sign in to comment