Difference between revisions of "Sims 4:0x034AEECB"
From SimsWiki
m |
(Update for multiple versions of CASP) |
||
| Line 5: | Line 5: | ||
| − | UINT32 version // | + | UINT32 version // The latest version is 0x20 |
UINT32 dataSize // Size of following data (before ResourceKeyArray) | UINT32 dataSize // Size of following data (before ResourceKeyArray) | ||
----BEGIN dataSize---- | ----BEGIN dataSize---- | ||
UINT32 numPresets // Presets are not used in TS4 | UINT32 numPresets // Presets are not used in TS4 | ||
| − | + | 7STRING name // UnicodeBE part name | |
| − | 7STRING name // | + | |
FLOAT DisplayIndex // Sort order in catalog | FLOAT DisplayIndex // Sort order in catalog | ||
| − | UINT16 SecondaryDisplayIndex | + | UINT16 SecondaryDisplayIndex // Sort order of swatches |
| − | UINT32 | + | UINT32 OutfitID // Unique ID used for grouping in catalog |
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 TagMultimap Tags // see below | struct TagMultimap Tags // see below | ||
UINT32 SimoleaonPrice | UINT32 SimoleaonPrice | ||
| − | UINT32 PartTitleKey // Index into STBLs for the title | + | UINT32 PartTitleKey // Index into STBLs for the title - unused? |
| − | UINT32 PartDescKey // Index into STBLs for the description | + | UINT32 PartDescKey // Index into STBLs for the description - unused? |
BYTE UniqueTextureSpace | BYTE UniqueTextureSpace | ||
| − | INT32 BodyType | + | INT32 BodyType |
INT32 --UNUSED1-- // Value is 0x08 | INT32 --UNUSED1-- // Value is 0x08 | ||
| − | UINT32 AgeGender | + | UINT32 AgeGender |
| + | ---- if version >= 0x20 | ||
| + | UINT32 Reserved1 // Value must be 0x01 | ||
BYTE --UNUSED2-- // Value MUST be 0x01 | BYTE --UNUSED2-- // Value MUST be 0x01 | ||
| − | BYTE --UNUSED3-- // | + | BYTE --UNUSED3-- // If Unused2 > 0, should be 0x00 |
| − | struct SwatchColorSet SwatchColors | + | BYTE UsedColorCount |
| − | BYTE BuffResKey // | + | struct SwatchColorSet SwatchColors[UsedColorCount] |
| − | BYTE VariantThumbKey | + | 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 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] | ||
| Line 39: | Line 50: | ||
BYTE mSlotKey[numSlotKeys] // used? | BYTE mSlotKey[numSlotKeys] // used? | ||
BYTE DiffuseKey // This is the primary color texture type 0x3453cf95 | BYTE DiffuseKey // This is the primary color texture type 0x3453cf95 | ||
| − | BYTE ShadowKey // And the | + | BYTE ShadowKey // And the shadow texture 0x3453cf95 |
| − | BYTE CompositionMethod | + | BYTE CompositionMethod // Affects texture compositing |
BYTE RegionMapKey // type 0xac16fbec | BYTE RegionMapKey // type 0xac16fbec | ||
| − | BYTE Overrides | + | BYTE NumberOverrides // always 0? |
| − | BYTE NormalMapKey // | + | struct Overrides[NumberOverrides] |
| + | BYTE NormalMapKey // Index in keyTable for normalmap | ||
BYTE SpecularMapKey // texture file type 0xba856c78 | 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 referenced | struct ResourceKeyArray keyTable // List of TGI keys referenced | ||
| Line 58: | Line 74: | ||
struct TagMultimap is a counted array of struct Tag entries | struct TagMultimap is a counted array of struct Tag entries | ||
| − | UINT32 | + | UINT32 TagCount |
| − | struct Tag[] | + | struct Tag[TagCount] |
struct Tag is a simple struct | struct Tag is a simple struct | ||
UINT16 Category | UINT16 Category | ||
UINT16 tagValue | 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) | struct SwatchColorSet is a counted array of UINT32 (color values) | ||
| Line 81: | Line 102: | ||
INT32 specLevel | INT32 specLevel | ||
INT32 casShadow | INT32 casShadow | ||
| + | |||
==Format== | ==Format== | ||
Revision as of 15:10, 13 August 2015
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