#include "standard-types.hsl" #pragma maxarray(1024) #pragma byteorder(little_endian) #pragma pack(4) #pragma hide() typedef struct GrannyStringTable { unsigned long size; unsigned long memory; //char data[size][]; char data[((memory + 3) / 4) * 4]; // rounded up to 4 bytes boundary } GrannyStringTable; typedef struct GrannyCA5EElement { unsigned short unknown_number; unsigned short unknown_0xCA5E; unsigned long unknown_data[2]; } GrannyCA5EElement; typedef struct GrannyCA5ELongElement { unsigned short unknown_number; unsigned short unknown_0xCA5E; unsigned long unknown_data[4]; } GrannyCA5ELongElement; // reference for Staff_Magic_1_LOD2.grn: 0x009C, 0x01B8 typedef struct GrannyCA5ECollection { unsigned long size; unsigned long unknown_0x70F31200; unsigned long unknown_0x00000000; unsigned long unknown_0x9047F30A; GrannyCA5EElement list[size]; } GrannyCA5ECollection; typedef struct GrannyTriangle { unsigned long point_1st; unsigned long point_2nd; unsigned long point_3rd; } GrannyTriangle; typedef struct Granny2DVector { float x; float y; float unused; } Granny2DVector; typedef struct Granny3DVector { float x; float y; float z; } Granny3DVector; typedef struct GrannyTransform { unsigned long integer; float parameter_1[3]; float parameter_2[4]; float matrix[9]; } GrannyTransform; typedef struct GrannyVertexMapping { GrannyTriangle vertices; GrannyTriangle normals; } GrannyVertexMapping; typedef struct GrannyVertexToTextureMapping { unsigned int vertex; struct GrannyTriangle texture; } GrannyVertexToTextureMapping; // reference for Staff_Magic_1_LOD2.grn: 0x14F4 typedef struct GrannyTextureMapping { unsigned long size; GrannyVertexToTextureMapping map[size]; } GrannyTextureMapping; // reference for Staff_Magic_1_LOD2.grn: 0x0178 typedef struct GrannyReferenceSystem { Granny3DVector Origin; Granny3DVector VectorRight; Granny3DVector VectorUp; Granny3DVector VectorBack; } GrannyReferenceSystem; #pragma show() typedef struct GrannyFileData { unsigned char unknown_0x0000[64]; GrannyCA5EElement unknwon_0x0040; unsigned long unknown_0x004C[1]; unsigned long FileSize_minus_0x0040; unsigned long unknown_0x0054[3]; GrannyCA5ELongElement unlnown_0x0060[3]; GrannyCA5ECollection unknown_0x009C; GrannyStringTable Copyright; unsigned long unknown_0x016C[3]; GrannyReferenceSystem ReferenceSystem; unsigned long unknown_0x01A8[4]; GrannyCA5ECollection unknown_0x01B8; GrannyStringTable StringTable; unsigned long unknown_0x0804[57]; Granny3DVector VertexPosition[32]; Granny3DVector VertexNormal[36]; unsigned long unknown_0x0C18[1]; Granny2DVector VertexTexture[57]; unsigned long unknown_0x0EC8[3]; GrannyVertexMapping Triangles[52]; unsigned long unknown_0x13B4[1]; GrannyTransform BoneTransform[3]; unsigned long unknown_0x1484[14]; float unknown_0x14BC[7]; unsigned long unknown_0x14D8[3]; float unknown_0x14E4[4]; GrannyTextureMapping TextureMapping; GrannyCA5ECollection unknwon_0x1838; } GrannyFileData; // reference for Staff_Magic_1_LOD2.grn struct Staff_Magic_1_LOD2 { unsigned char unknown_0x0000[64]; GrannyCA5EElement unknwon_0x0040; unsigned long unknown_0x004C[1]; unsigned long FileSize_minus_0x0040; unsigned long unknown_0x0054[3]; GrannyCA5ELongElement unlnown_0x0060[3]; GrannyCA5ECollection unknown_0x009C; GrannyStringTable Copyright; unsigned long unknown_0x016C[3]; GrannyReferenceSystem ReferenceSystem; unsigned long unknown_0x01A8[4]; GrannyCA5ECollection unknown_0x01B8; GrannyStringTable StringTable; unsigned long unknown_0x0804[57]; Granny3DVector VertexPosition[32]; Granny3DVector VertexNormal[36]; unsigned long unknown_0x0C18[1]; Granny2DVector VertexTexture[57]; unsigned long unknown_0x0EC8[3]; GrannyVertexMapping Triangles[52]; unsigned long unknown_0x13B4[1]; GrannyTransform BoneTransform[3]; unsigned long unknown_0x1484[14]; float unknown_0x14BC[7]; unsigned long unknown_0x14D8[3]; float unknown_0x14E4[4]; GrannyTextureMapping TextureMapping; GrannyCA5ECollection unknwon_0x1838; }; // reference for Fishing_Rod_LOD2.grn struct Fishing_Rod_LOD2 { unsigned char unknown_0x0000[64]; GrannyCA5EElement unknwon_0x0040; unsigned long unknown_0x004C[1]; unsigned long FileSize_minus_header; unsigned long unknown_0x0054[3]; GrannyCA5ELongElement unlnown_0x0060[3]; GrannyCA5ECollection unknown_0x009C; GrannyStringTable Copyright; unsigned long unknown_0x016C[3]; GrannyReferenceSystem ReferenceSystem; unsigned long unknown_0x01A8[4]; GrannyCA5ECollection unknown_0x01B8; GrannyStringTable StringTable; unsigned long unknown_0x0804[45]; Granny3DVector VertexPosition[41]; Granny3DVector VertexNormal[187]; unsigned long unknown_0x12B0[1]; Granny2DVector VertexTexture[43]; unsigned long unknown_0x14B8[3]; GrannyVertexMapping Triangles[78]; unsigned long unknown_0x1C14[1]; GrannyTransform BoneTransform[2]; unsigned long unknown_0x1CA0[13]; float unknown_0x1CD4[7]; unsigned long unknown_0x1CF0[3]; float unknown_0x1CFC[4]; GrannyTextureMapping TextureMapping; GrannyCA5ECollection unknwon_0x21F0; };