Difference between revisions of "Sims 4:0x034AEECB"

From SimsWiki
Jump to: navigation, search
(Update for multiple versions of CASP)
m (CAS Part format)
Line 1: Line 1:
 
==Format from Maxis Documentation==
 
==Format from Maxis Documentation==
This information was provided on Sept 5, 2014 by SimGuruModSquad on [[http://forums.thesims.com/|the official forums]] as part of the Modding Documentation.
+
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       // The latest version is 0x20
+
   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               // UnicodeBE part name
   FLOAT    DisplayIndex //  Sort order in catalog
+
   FLOAT    DisplayIndex       //  Sort order in catalog
 
   UINT16  SecondaryDisplayIndex // Sort order of swatches
 
   UINT16  SecondaryDisplayIndex // Sort order of swatches
   UINT32  OutfitID     // Unique ID used for grouping in catalog
+
   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    // Bitmask of part types excluded  
 
   UINT64  ExcludePartFlags    // Bitmask of part types excluded  
 
   UINT32  ExcludeModifierRegionFlags
 
   UINT32  ExcludeModifierRegionFlags
   struct  TagMultimap Tags    // see below
+
  UINT32  TagCount
 +
   struct  Tag[TagCount]      //tag/value pairs used for categorization. See below.
 
   UINT32  SimoleaonPrice
 
   UINT32  SimoleaonPrice
   UINT32  PartTitleKey     // Index into STBLs for the title - unused?
+
   UINT32  PartTitleKey       // Index into STBLs for the title - unused?
   UINT32  PartDescKey       // Index into STBLs for the description - unused?
+
   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
 
   ---- if version >= 0x20
       UINT32    Reserved1   // Value must be 0x01
+
       UINT32    Reserved1     // Value must be 0x01
   BYTE    --UNUSED2--     // Value MUST be 0x01
+
   BYTE    --UNUSED2--         // Value MUST be 0x01
   BYTE    --UNUSED3--     // If Unused2 > 0, should be 0x00
+
   BYTE    --UNUSED3--         // If Unused2 > 0, should be 0x00
 
   BYTE    UsedColorCount
 
   BYTE    UsedColorCount
   struct   SwatchColorSet SwatchColors[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    BuffResKey          //  Index in keyTable for buff resource - no longer used
   BYTE    VariantThumbKey    //  Index in keyTable for swatch
+
   BYTE    VariantThumbKey    //  Index in keyTable for swatch image if any
 
   ---- if version >= 0x1c
 
   ---- if version >= 0x1c
       UINT64    VoiceEffect   // hash of a sound effect
+
       UINT64    VoiceEffect // hash of a sound effect
 
   ---- if version >= 0x1e
 
   ---- if version >= 0x1e
       BYTE      UsedMaterialCount   // if not 0, should be 3
+
       BYTE      UsedMaterialCount     // if not 0, should be 3
 
       UINT32    MaterialSetUpperBody  // Hash
 
       UINT32    MaterialSetUpperBody  // Hash
 
       UINT32    MaterialSetLowerBody  // Hash
 
       UINT32    MaterialSetLowerBody  // Hash
 
       UINT32    MaterialSetShoes      // Hash
 
       UINT32    MaterialSetShoes      // Hash
 
   ---- if version >= 0x1f
 
   ---- if version >= 0x1f
       UINT32    OccultBitField     // bitmask: Disabled for occult types - ex: 0x00000000 means enabled for all
+
       UINT32    OccultBitField // bitmask: Disabled for occult types, ex: 0x00000000 means enabled for all
 
   BYTE    NakedKey
 
   BYTE    NakedKey
 
   BYTE    ParentKey
 
   BYTE    ParentKey
 
   INT32    SortLayer          // Affects layering of textures
 
   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]   // used?
+
   BYTE    mSlotKey[numSlotKeys] // never 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 shadow texture 0x3453cf95
+
   BYTE    ShadowKey           // And the shadow texture 0x3453cf95
   BYTE    CompositionMethod       // Affects texture compositing
+
   BYTE    CompositionMethod   // Affects texture compositing
   BYTE    RegionMapKey             // type 0xac16fbec
+
   BYTE    RegionMapKey       // type 0xac16fbec
   BYTE    NumberOverrides         // always 0?
+
   BYTE    NumberOverrides     // always 0?
   struct  Overrides[NumberOverrides]
+
   struct  Override[NumberOverrides] // see below
   BYTE    NormalMapKey             //  Index in keyTable for normalmap
+
   BYTE    NormalMapKey       //  Index in keyTable for normalmap
   BYTE    SpecularMapKey           // texture file type 0xba856c78
+
   BYTE    SpecularMapKey     // texture file type 0xba856c78
 
   ---- if version >= 0x1b
 
   ---- if version >= 0x1b
       UINT32  UVoverride         // usually same as BodyType, may affect texture layering
+
       UINT32  UVoverride     // usually same as BodyType, may affect texture layering
 
   ---- if version >= 0x1d
 
   ---- if version >= 0x1d
       BYTE    EmissionIndex       //  Index in keyTable for "Alien Glow" emission map
+
       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, in IGT format
  
 
struct ParmFlags is a bitfield of size BYTE
 
struct ParmFlags is a bitfield of size BYTE
Line 72: Line 73:
 
   [1]      DefaultThumnailPart
 
   [1]      DefaultThumnailPart
 
   [0]      DefaultForBodyType       
 
   [0]      DefaultForBodyType       
 
struct TagMultimap is a counted array of struct Tag entries
 
  UINT32  TagCount
 
  struct  Tag[TagCount]
 
  
 
struct Tag is a simple struct
 
struct Tag is a simple struct
Line 85: Line 82:
 
   [1]      Alien
 
   [1]      Alien
 
   [0]      Human       
 
   [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
 
struct LOD is a complex struct
Line 96: Line 89:
 
   struct  LODAsset assets[numAssets]
 
   struct  LODAsset assets[numAssets]
 
   BYTE    numLODKeys
 
   BYTE    numLODKeys
   BYTE    lodKey[numLODKeys]         // These keys are all indexes into the keyTable
+
   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 103: Line 96:
 
   INT32    casShadow
 
   INT32    casShadow
  
 +
struct Override is a simple struct
 +
  BYTE    region
 +
  FLOAT    layer
  
 
==Format==
 
==Format==

Revision as of 14:49, 14 August 2015

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   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
 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 referenced, in IGT format

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

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