Sims 4:0x034AEECB
From SimsWiki
Format from Maxis Documentation
This information was provided on Sept 5, 2014 by SimGuruModSquad on [official forums] as part of the Modding Documentation.
The layout will be using the Maxis provided data type descriptors, i.e.: UINT32 vs DWORD
UINT32 version // The latest version is 0x20 UINT32 dataSize // Size of following data (before ResourceKeyArray) ----BEGIN dataSize---- UINT32 numPresets // Presets are not used in TS4 7STRING name // UnicodeBE part name FLOAT DisplayIndex // Sort order in catalog UINT16 SecondaryDisplayIndex // Sort order of swatches UINT32 OutfitID // Unique ID used for grouping in catalog UINT32 AuralMateralHash struct ParmFlags partFlags // See below UINT64 ExcludePartFlags // Bitmask of part types excluded UINT32 ExcludeModifierRegionFlags struct TagMultimap Tags // see below UINT32 SimoleaonPrice UINT32 PartTitleKey // Index into STBLs for the title - unused? UINT32 PartDescKey // Index into STBLs for the description - unused? BYTE UniqueTextureSpace INT32 BodyType INT32 --UNUSED1-- // Value is 0x08 UINT32 AgeGender ---- if version >= 0x20 UINT32 Reserved1 // Value must be 0x01 BYTE --UNUSED2-- // Value MUST be 0x01 BYTE --UNUSED3-- // If Unused2 > 0, should be 0x00 BYTE UsedColorCount struct SwatchColorSet SwatchColors[UsedColorCount] BYTE BuffResKey // Index in keyTable for buff resource - no longer used BYTE VariantThumbKey // Index in keyTable for swatch ---- if version >= 0x1c UINT64 VoiceEffect // hash of a sound effect ---- if version >= 0x1e BYTE UsedMaterialCount // if not 0, should be 3 UINT32 MaterialSetUpperBody // Hash UINT32 MaterialSetLowerBody // Hash UINT32 MaterialSetShoes // Hash ---- if version >= 0x1f UINT32 OccultBitField // bitmask: Disabled for occult types - ex: 0x00000000 means enabled for all BYTE NakedKey BYTE ParentKey INT32 SortLayer // Affects layering of textures BYTE numLODs struct LOD mlods[numLODs] BYTE numSlotKeys BYTE mSlotKey[numSlotKeys] // used? BYTE DiffuseKey // This is the primary color texture type 0x3453cf95 BYTE ShadowKey // And the shadow texture 0x3453cf95 BYTE CompositionMethod // Affects texture compositing BYTE RegionMapKey // type 0xac16fbec BYTE NumberOverrides // always 0? struct Overrides[NumberOverrides] BYTE NormalMapKey // Index in keyTable for normalmap BYTE SpecularMapKey // texture file type 0xba856c78 ---- if version >= 0x1b UINT32 UVoverride // usually same as BodyType, may affect texture layering ---- if version >= 0x1d BYTE EmissionIndex // Index in keyTable for "Alien Glow" emission map -----END dataSize----- struct ResourceKeyArray keyTable // List of TGI keys referenced
struct ParmFlags is a bitfield of size BYTE
[7-6] not_used [5] ShowInCasDemo [4] ShowInSimInfoPanel [3] ShowInUI [2] AllowForRandom [1] DefaultThumnailPart [0] DefaultForBodyType
struct TagMultimap is a counted array of struct Tag entries
UINT32 TagCount struct Tag[TagCount]
struct Tag is a simple struct
UINT16 Category UINT16 tagValue
struct OccultBitField is a bitfield of size UINT32
[2-31] not yet used [1] Alien [0] Human
struct SwatchColorSet is a counted array of UINT32 (color values)
BYTE usedColorCount UINT32 rawData[usedColorCount] // Data is RGBA value
struct LOD is a complex struct
BYTE level UINT32 --unused-- BYTE numAssets struct LODAsset assets[numAssets] BYTE numLODKeys BYTE lodKey[numLODKeys] // These keys are all indexes into the keyTable
struct LODAsset is a simple struct
INT32 sorting INT32 specLevel INT32 casShadow
Format
This is what was discovered early in the process -- now obsolete
DWORD version // 0x1a is current DWORD offset // to resource reference table from end of header (ie offset + 8)
DWORD presetCount? // For all files I read so far, it's 0. It might still be a count 7STRING // UnicodeBE FLOAT sortPriority // CAS sorts on this value, from largest to smallest
// This block hasn't been test for multiple files. Byte[22] Unknown DWORD count --repeat(count) DWORD // Unknown bytes
// Resource reference table in I64GT format (not TGI64) BYTE count --repeat(count) QWORD instance DWORD group DWORD type