Difference between revisions of "Sims 4:0x034AEECB"
From SimsWiki
(finishing up will referenced structs) |
m (Add CASP flags) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
==Format from Maxis Documentation== | ==Format from Maxis Documentation== | ||
− | This information was provided on | + | This information was provided on June 13, 2015 by SimGuruModSquad on [[http://forums.thesims.com/|the official forums]] as part of the Modding Documentation. |
The layout will be using the Maxis provided data type descriptors, i.e.: UINT32 vs DWORD | The layout will be using the Maxis provided data type descriptors, i.e.: UINT32 vs DWORD | ||
− | UINT32 version | + | UINT32 version // The latest version is 0x20 |
− | UINT32 dataSize | + | UINT32 dataSize // Size of following data (before ResourceKeyArray) |
----BEGIN dataSize---- | ----BEGIN dataSize---- | ||
− | UINT32 numPresets | + | UINT32 numPresets // Presets are not used in TS4 |
− | + | 7STRING name // UnicodeBE part name | |
− | 7STRING name | + | FLOAT DisplayIndex // Sort order in catalog |
− | FLOAT DisplayIndex | + | UINT16 SecondaryDisplayIndex // Sort order of swatches |
− | UINT16 | + | UINT32 OutfitID // Unique ID used for grouping in catalog |
− | UINT32 | + | |
UINT32 AuralMateralHash | UINT32 AuralMateralHash | ||
struct ParmFlags partFlags // See below | struct ParmFlags partFlags // See below | ||
− | UINT64 ExcludePartFlags | + | UINT64 ExcludePartFlags // Bitmask of part types excluded |
UINT32 ExcludeModifierRegionFlags | UINT32 ExcludeModifierRegionFlags | ||
− | struct | + | UINT32 TagCount |
− | UINT32 | + | struct Tag[TagCount] //tag/value pairs used for categorization. See below. |
− | UINT32 PartTitleKey | + | UINT32 SimoleonPrice |
− | UINT32 PartDescKey | + | UINT32 PartTitleKey // Index into STBLs for the title - unused? |
+ | UINT32 PartDescKey // Index into STBLs for the description - unused? | ||
BYTE UniqueTextureSpace | BYTE UniqueTextureSpace | ||
− | INT32 BodyType | + | INT32 BodyType // [[Sims 4:CASPFlags|Part Type]] |
− | INT32 --UNUSED1-- | + | INT32 --UNUSED1-- // Value is 0x08 |
− | UINT32 AgeGender | + | UINT32 AgeGender // [[Sims 4:CASPFlags|Age/Gender flags]] |
− | BYTE --UNUSED2-- | + | ---- if version >= 0x20 |
− | BYTE --UNUSED3-- | + | UINT32 Reserved1 // Value must be 0x01 |
− | + | BYTE --UNUSED2-- // Value MUST be 0x01 | |
− | BYTE BuffResKey // | + | BYTE --UNUSED3-- // If Unused2 > 0, should be 0x00 |
− | BYTE VariantThumbKey | + | BYTE UsedColorCount |
+ | UINT32 Color[usedColorCount] // Data is RGBA value, used for swatch, max 3 so far | ||
+ | BYTE BuffResKey // Index in keyTable for buff resource - no longer used | ||
+ | BYTE VariantThumbKey // Index in keyTable for swatch image if any | ||
+ | ---- 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 NakedKey | ||
BYTE ParentKey | BYTE ParentKey | ||
− | INT32 SortLayer | + | INT32 SortLayer // Affects layering of textures |
BYTE numLODs | BYTE numLODs | ||
− | struct LOD mlods[numLODs] | + | struct LOD mlods[numLODs] // see below |
− | BYTE numSlotKeys | + | BYTE numSlotKeys // always 0? |
− | BYTE mSlotKey[numSlotKeys] | + | BYTE mSlotKey[numSlotKeys] // never used? |
− | BYTE DiffuseKey | + | BYTE DiffuseKey // This is the primary color texture type 0x3453cf95 |
− | BYTE ShadowKey | + | BYTE ShadowKey // And the shadow texture 0x3453cf95 |
− | BYTE CompositionMethod | + | BYTE CompositionMethod // Affects texture compositing |
− | BYTE RegionMapKey | + | BYTE RegionMapKey // type 0xac16fbec |
− | BYTE | + | BYTE NumberOverrides // always 0? |
− | BYTE NormalMapKey | + | struct Override[NumberOverrides] // see below |
− | BYTE SpecularMapKey | + | 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----- | -----END dataSize----- | ||
− | struct ResourceKeyArray keyTable // List of TGI keys | + | struct ResourceKeyArray keyTable // List of TGI keys to resources, see below |
struct ParmFlags is a bitfield of size BYTE | struct ParmFlags is a bitfield of size BYTE | ||
Line 56: | Line 73: | ||
[1] DefaultThumnailPart | [1] DefaultThumnailPart | ||
[0] DefaultForBodyType | [0] DefaultForBodyType | ||
− | |||
− | |||
− | |||
− | |||
struct Tag is a simple struct | struct Tag is a simple struct | ||
Line 65: | Line 78: | ||
UINT16 tagValue | UINT16 tagValue | ||
− | struct | + | struct OccultBitField is a bitfield of size UINT32 |
− | + | [2-31] not yet used | |
− | + | [1] Alien | |
+ | [0] Human | ||
struct LOD is a complex struct | struct LOD is a complex struct | ||
Line 75: | Line 89: | ||
struct LODAsset assets[numAssets] | struct LODAsset assets[numAssets] | ||
BYTE numLODKeys | BYTE numLODKeys | ||
− | BYTE lodKey[numLODKeys] | + | BYTE lodKey[numLODKeys] // These keys are all indexes into the keyTable, pointing to GEOMs |
struct LODAsset is a simple struct | struct LODAsset is a simple struct | ||
Line 81: | Line 95: | ||
INT32 specLevel | INT32 specLevel | ||
INT32 casShadow | INT32 casShadow | ||
+ | |||
+ | struct Override is a simple struct | ||
+ | BYTE region | ||
+ | FLOAT layer | ||
+ | |||
+ | struct TGI table in I64GT format (not TGI64) | ||
+ | BYTE count | ||
+ | --repeat(count) | ||
+ | UINT64 instance | ||
+ | UINT32 group | ||
+ | UINT32 type | ||
==Format== | ==Format== |
Latest revision as of 14:26, 16 August 2015
[edit] Format from Maxis Documentation
This information was provided on June 13, 2015 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 UINT32 TagCount struct Tag[TagCount] //tag/value pairs used for categorization. See below. UINT32 SimoleonPrice UINT32 PartTitleKey // Index into STBLs for the title - unused? UINT32 PartDescKey // Index into STBLs for the description - unused? BYTE UniqueTextureSpace INT32 BodyType // Part Type INT32 --UNUSED1-- // Value is 0x08 UINT32 AgeGender // Age/Gender flags ---- 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 UINT32 Color[usedColorCount] // Data is RGBA value, used for swatch, max 3 so far BYTE BuffResKey // Index in keyTable for buff resource - no longer used BYTE VariantThumbKey // Index in keyTable for swatch image if any ---- 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] // see below BYTE numSlotKeys // always 0? BYTE mSlotKey[numSlotKeys] // never 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 Override[NumberOverrides] // see below 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 to resources, see below
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 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 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, pointing to GEOMs
struct LODAsset is a simple struct
INT32 sorting INT32 specLevel INT32 casShadow
struct Override is a simple struct
BYTE region FLOAT layer
struct TGI table in I64GT format (not TGI64)
BYTE count --repeat(count) UINT64 instance UINT32 group UINT32 type
[edit] 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