Difference between revisions of "Sims 4:0x034AEECB"

From SimsWiki
Jump to: navigation, search
m
(Update for multiple versions of CASP)
Line 5: Line 5:
  
  
   UINT32  version        // currently 0x1a is only supported 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  PrototypeID
+
   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--      // Value MUST be 0x00
+
   BYTE    --UNUSED3--      // If Unused2 > 0, should be 0x00
   struct  SwatchColorSet SwatchColors
+
  BYTE    UsedColorCount
   BYTE    BuffResKey          //  These keys are all indexes into the keyTable below
+
   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 other texture 0x3453cf95
+
   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            // have not seen a normal map used
+
  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  tagCount
+
   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
Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox