FFLiResourceHeader: Difference between revisions
Appearance
location and LG |
|||
| Line 4: | Line 4: | ||
== Header format == | == Header format == | ||
ImHex format<syntaxhighlight lang="c"> | |||
struct ResourcePartsInfo { | |||
u32 dataPos; | |||
u32 dataSize; | |||
u32 compressedSize; | |||
u8 compressLevel; | |||
u8 windowBits; | |||
u8 memoryLevel; | |||
u8 strategy; | |||
}; | |||
struct ResourceShapeHeader { | |||
u32 maxSize[12]; | |||
ResourcePartsInfo beard[4]; | |||
ResourcePartsInfo hatNormal[132]; | |||
ResourcePartsInfo hatCap[132]; | |||
ResourcePartsInfo faceline[12]; | |||
ResourcePartsInfo glass[1]; | |||
ResourcePartsInfo mask[12]; | |||
ResourcePartsInfo noseline[18]; | |||
ResourcePartsInfo nose[18]; | |||
ResourcePartsInfo hairNormal[132]; | |||
ResourcePartsInfo hairCap[132]; | |||
ResourcePartsInfo foreheadNormal[132]; | |||
ResourcePartsInfo foreheadCap[132]; | |||
}; | |||
struct ResourceTextureHeader { | |||
u32 maxSize[11]; | |||
ResourcePartsInfo beard[3]; | |||
ResourcePartsInfo hat[132]; | |||
ResourcePartsInfo eye[62]; // [80] in AFL | |||
ResourcePartsInfo eyebrow[24]; // [28] in AFL | |||
ResourcePartsInfo faceline[12]; | |||
ResourcePartsInfo faceMakeup[12]; | |||
ResourcePartsInfo glass[9]; // [20] in AFL | |||
ResourcePartsInfo mole[2]; | |||
ResourcePartsInfo mouth[37]; // [52] in AFL | |||
ResourcePartsInfo mustache[6]; | |||
ResourcePartsInfo noseline[18]; | |||
}; | |||
struct ResourceHeader { | |||
u32 signature; // "FFRA" | |||
u32 version; | |||
u32 uncompressedBufferSize; | |||
u32 expandedBufferSize; | |||
u32 expanded; | |||
ResourceTextureHeader textureHeader; | |||
ResourceShapeHeader shapeHeader; | |||
u32 unknown[12]; // Always 0x0? | |||
}; | |||
</syntaxhighlight> | |||
== Vertex data format == | == Vertex data format == | ||
Revision as of 20:00, 23 September 2025
FFLResMiddle.dat and FFLResHigh.dat are Mii resource files that specify both vertex and texture data.
On the Wii U, the location of these at MLC are at: /sys/title/0005001b/10056000/content/FFLRes.... There are also "LG" variants of both, meant to be used for linear gamma. (Differences are unknown, shapes are all unchanged.)
Header format
ImHex format
struct ResourcePartsInfo {
u32 dataPos;
u32 dataSize;
u32 compressedSize;
u8 compressLevel;
u8 windowBits;
u8 memoryLevel;
u8 strategy;
};
struct ResourceShapeHeader {
u32 maxSize[12];
ResourcePartsInfo beard[4];
ResourcePartsInfo hatNormal[132];
ResourcePartsInfo hatCap[132];
ResourcePartsInfo faceline[12];
ResourcePartsInfo glass[1];
ResourcePartsInfo mask[12];
ResourcePartsInfo noseline[18];
ResourcePartsInfo nose[18];
ResourcePartsInfo hairNormal[132];
ResourcePartsInfo hairCap[132];
ResourcePartsInfo foreheadNormal[132];
ResourcePartsInfo foreheadCap[132];
};
struct ResourceTextureHeader {
u32 maxSize[11];
ResourcePartsInfo beard[3];
ResourcePartsInfo hat[132];
ResourcePartsInfo eye[62]; // [80] in AFL
ResourcePartsInfo eyebrow[24]; // [28] in AFL
ResourcePartsInfo faceline[12];
ResourcePartsInfo faceMakeup[12];
ResourcePartsInfo glass[9]; // [20] in AFL
ResourcePartsInfo mole[2];
ResourcePartsInfo mouth[37]; // [52] in AFL
ResourcePartsInfo mustache[6];
ResourcePartsInfo noseline[18];
};
struct ResourceHeader {
u32 signature; // "FFRA"
u32 version;
u32 uncompressedBufferSize;
u32 expandedBufferSize;
u32 expanded;
ResourceTextureHeader textureHeader;
ResourceShapeHeader shapeHeader;
u32 unknown[12]; // Always 0x0?
};
Vertex data format
...
Texture data format
...