Sims 4:0x034AEECB

From SimsWiki
Revision as of 10:10, 13 August 2015 by CmarNYC (Talk | contribs)

Jump to: navigation, search

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

Variants
Actions
Navigation
game select
Toolbox