Sims 4:0x034AEECB

From SimsWiki
Jump to: navigation, search

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

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
Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox