Difference between revisions of "Sims 3:0xEA5118B0"

From SimsWiki
Jump to: navigation, search
(Format)
Line 12: Line 12:
 
==Format==
 
==Format==
 
All data is in Big Endian order unless otherwise noted(most floats).  This spec is very primitive and needs work.
 
All data is in Big Endian order unless otherwise noted(most floats).  This spec is very primitive and needs work.
<pre>
 
WORD Version
 
//BlockSections
 
--Repeat until BlockType 0xFFFF
 
// Block List
 
WORD BlockType
 
WORD BlockVersion
 
DWORD BlockCount
 
--BlockCount times
 
--Insert block data(depending on type)
 
 
// Insert Shader Effects
 
  
+
WORD Version
// Main Effect Section
+
[[#Effect_Blocks|Effect Block Section]]
BYTE[4]
+
[[#Shader_Effects|Effect Shader Section]]
DWORD EffectCount
+
[[#Effect_Compilations|Effect Compilation Section]]
--Repeat EffectCount
+
[[#Effect_Handles|Effect Handle Section]]
// Effect Block Table
+
DWORD
+
BYTE[8]
+
FLOAT
+
FLOAT
+
BYTE[5]
+
DWORD Count1
+
FLOAT[Count1]
+
BYTE[16]
+
DWORD BlockIndexCount
+
--repeat BlockIndexCount
+
BYTE BlockType
+
BYTE[6]
+
FLOAT
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
//Offset relative to the slot
+
FLOAT X_Offset //Little Endian
+
FLOAT Y_Offset //Little Endian
+
FLOAT Z_Offset //Little Endian
+
BYTE
+
BYTE
+
DWORD Count
+
--repeat Count
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT
+
BYTE[12]
+
FLOAT
+
DWORD BlockIndex
+
BYTE
+
BYTE
+
+
--Repeat until index 0xFFFFFFFF
+
// Effect Index
+
DWORD BlockTableIndex
+
ZSTRING EffectName
+
+
</pre>
+
  
==Shader Effects==
+
===Effect Blocks===
===Format===
+
====Format====
<pre>
+
--Repeat until BlockType 0xFFFF
BYTE[6]
+
// Block List
DWORD
+
WORD BlockType
WORD
+
WORD BlockVersion
DWORD Count
+
DWORD BlockCount
QWORD Shader Id?
+
--BlockCount times
QWORD Effect Type
+
--Insert block data(depending on type)
DWORD Count1
+
====Blocks====
QWORD //Property ID
+
BYTE dataType
+
switch(dataType)
+
case 06: QWORD // DDS Instance Id
+
case 00: FLOAT // Little Endian
+
</pre>
+
===Effect Types===
+
{| class="wikitable" border="1"
+
! ID
+
! Name
+
|-
+
| 0x8FAB3764
+
| Fluid Effect
+
|-
+
| 0x4968A478
+
| Sim Censor
+
|-
+
 
+
|}
+
 
+
===Properties===
+
[[FNV|FNV32]] Hashed property names from "Shaders_Win32.precomp"
+
 
+
{| class="wikitable" border="1"
+
! ID
+
! Name
+
|-
+
| 0x6CC0FD85
+
| Diffuse Map
+
|-
+
| 0x6E56548A
+
| Normal Map
+
|-
+
| 0x8C27D8C9
+
| Edge Darkening
+
|-
+
| 0xC3C472A1
+
| Refraction Distortion Scale
+
|-
+
| 0x6A203374
+
| Clip Alpha Opacity
+
|-
+
| 0x556010DC
+
| Alpha Cutoff
+
|-
+
| 0xF2FCAD8C
+
| Specular Scale
+
|-
+
| 0xF43D2BDC
+
| Multiply Value
+
|-
+
| 0x3965ECE0
+
| Additive Value
+
|-
+
|}
+
 
+
==Blocks==
+
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
! BlockType
 
! BlockType
Line 197: Line 76:
 
|-
 
|-
 
|}
 
|}
===Particle Effect===
+
====Particle Effect====
====Format====
+
<pre>
+
BYTE
+
BYTE
+
BYTE
+
BYTE
+
FLOAT DurationMin //Little Endian
+
FLOAT DurationMax //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT
+
  
//Angle(Degrees)
+
======Format======
DWORD Count1
+
BYTE
FLOAT  
+
BYTE
FLOAT
+
BYTE
WORD
+
BYTE
FLOAT
+
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT
 +
 +
//Angle(Degrees)
 +
DWORD Count1
 +
FLOAT  
 +
FLOAT
 +
WORD
 +
FLOAT
 +
//Scale Delta
 +
DWORD Count2
 +
FLOAT
 +
FLOAT
 +
DWORD Count3
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
BYTE[4]
 +
DWORD Count4
 +
FLOAT
 +
DWORD Count5
 +
FLOAT
 +
FLOAT
 +
//Particle Color Delta
 +
DWORD Count6
 +
FLOAT Red //Little Endian
 +
  FLOAT Green //Little Endian
 +
FLOAT Blue //Little Endian
 +
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
QWORD //I<sub>64</sub> of a an image(DDS), model(VPXY), or shader(see shader section below)
 +
BYTE[10]
 +
FLOAT
 +
BYTE[8] // FFFFFFFFFFFFFFFF
 +
BYTE
 +
WORD
 +
BYTE
 +
BYTE
 +
FLOAT
 +
BYTE
 +
BYTE
 +
BYTE
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
FLOAT //Little Endian
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
DWORD Count7
 +
FLOAT
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
BYTE[4] // 00FF00FF
 +
BYTE[4]
 +
DWORD Count8
 +
FLOAT
 +
DWORD Count9
 +
DWORD
 +
QWORD
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
BYTE[4]
 +
ZSTRING
 +
ZSTRING
 +
DWORD Count
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT
 +
BYTE[16]
 +
FLOAT //-1000000000.0
 +
FLOAT // 0.0
 +
FLOAT //-10000.0 Little Endian
 +
FLOAT // 10000.0 Little Endian
 +
BYTE[24] //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
DWORD Count10
 +
  FLOAT
 +
BYTE
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
DWORD Count11
 +
FLOAT
 +
FLOAT
 +
DWORD
 +
BYTE[16]
 +
DWORD Count12
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
BYTE
  
//Scale Delta
 
DWORD Count2
 
FLOAT
 
FLOAT
 
DWORD Count3
 
FLOAT
 
FLOAT
 
FLOAT
 
BYTE[4]
 
DWORD Count4
 
FLOAT
 
DWORD Count5
 
FLOAT
 
FLOAT
 
  
//Particle Color Delta
+
====Metaparticle Effect====
DWORD Count6
+
=====Overview=====
FLOAT Red //Little Endian
+
This type takes an existing effect and modifies it
FLOAT Green //Little Endian
+
=====Format=====
FLOAT Blue //Little Endian
+
BYTE[6]
 +
WORD
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT
 +
DWORD Count1
 +
FLOAT
 +
FLOAT
 +
DWORD
 +
DWORD Count2
 +
FLOAT
 +
FLOAT
 +
DWORD
 +
BYTE[4]
 +
DWORD
 +
BYTE[4]
 +
DWORD Count3
 +
FLOAT
 +
BYTE[24]
 +
DWORD Count4
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
BYTE[8]
 +
DWORD Count5
 +
  BYTE[3]
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
BYTE[9]
 +
DWORD Count6
 +
FLOAT
 +
FLOAT
 +
ZSTRING Base Effect //See effect handles below
 +
ZSTRING Death Effect //See effect handles below
 +
BYTE
 +
BYTE[8]
 +
FLOAT //Little Endian
 +
BYTE[20]
 +
FLOAT
 +
BYTE[12]
 +
FLOAT
 +
BYTE[8]
 +
BYTE[4] //00FF00FF
 +
BYTE[8]
 +
DWORD Count7
 +
DWORD
 +
BYTE[30]
 +
DWORD Count
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT
 +
BYTE[16]
 +
FLOAT //-1000000000.0
 +
FLOAT // 0.0
 +
FLOAT //-10000.0 Little Endian
 +
FLOAT // 10000.0 Little Endian
 +
BYTE[24] //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
DWORD Count8
 +
FLOAT
 +
BYTE
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
BYTE
 +
DWORD Count9
 +
BYTE[8]
 +
FLOAT //Little Endian
 +
  FLOAT //Little Endian
 +
DWORD Count
 +
  FLOAT
 +
FLOAT
 +
FLOAT
 +
DWORD Count10
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT timecode
 +
BYTE[4]
  
FLOAT //Little Endian
+
====Decal Effect====
FLOAT //Little Endian
+
====Overview====
FLOAT //Little Endian
+
This is mostly used for things like the build tool UI tools(i.e. the terrain tool circle).
QWORD //IID of a an image(DDS), model(VPXY), or shader(see shader section above)
+
=====Format=====
BYTE[10]
+
FLOAT
+
BYTE[8] // FFFFFFFFFFFFFFFF
+
BYTE
+
WORD
+
BYTE
+
BYTE
+
FLOAT
+
BYTE
+
BYTE
+
BYTE
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT //Little Endian
+
FLOAT
+
FLOAT
+
FLOAT
+
DWORD Count7
+
FLOAT
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
BYTE[4] // 00FF00FF
+
BYTE[4]
+
DWORD Count8
+
FLOAT
+
DWORD Count9
+
DWORD
+
QWORD
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT
+
BYTE[4]
+
ZSTRING
+
ZSTRING
+
DWORD Count
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT
+
BYTE[16]
+
FLOAT //-1000000000.0
+
FLOAT // 0.0
+
FLOAT //-10000.0 Little Endian
+
FLOAT // 10000.0 Little Endian
+
BYTE[24] //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT
+
FLOAT
+
FLOAT
+
DWORD Count10
+
FLOAT
+
BYTE
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
DWORD Count11
+
FLOAT
+
FLOAT
+
DWORD
+
BYTE[16]
+
DWORD Count12
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
BYTE
+
</pre>
+
  
===Metaparticle Effect===
+
BYTE[4]
====Format====
+
QWORD //I<sub>64</sub> of a DDS resource
<pre>
+
BYTE[6]
BYTE[6]
+
FLOAT
WORD
+
DWORD Count1
FLOAT DurationMin //Little Endian
+
FLOAT
FLOAT DurationMax//Little Endian
+
DWORD Count2  
FLOAT //Little Endian
+
FLOAT
FLOAT //Little Endian
+
DWORD Count3  
FLOAT //Little Endian
+
FLOAT
FLOAT //Little Endian
+
//Color Deltas
FLOAT //Little Endian
+
DWORD Count4
FLOAT //Little Endian
+
FLOAT Red //Little Endian
FLOAT //Little Endian
+
FLOAT Green //Little Endian
FLOAT //Little Endian
+
FLOAT Blue //Little Endian
FLOAT //Little Endian
+
DWORD Count5
FLOAT //Little Endian
+
FLOAT
FLOAT //Little Endian
+
FLOAT
FLOAT //Little Endian
+
FLOAT
FLOAT //Little Endian
+
BYTE[4]
FLOAT //Little Endian
+
FLOAT
FLOAT //Little Endian
+
BYTE[8]
FLOAT //Little Endian
+
BYTE[8] //FFFFFFFFFFFFFFFF
FLOAT //Little Endian
+
BYTE
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT  
+
DWORD Count1
+
FLOAT
+
FLOAT
+
DWORD
+
DWORD Count2
+
FLOAT
+
FLOAT
+
DWORD
+
BYTE[4]
+
DWORD
+
BYTE[4]
+
DWORD Count3
+
FLOAT
+
BYTE[24]
+
DWORD Count4
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
BYTE[8]
+
DWORD Count5
+
BYTE[3]
+
FLOAT
+
FLOAT
+
FLOAT
+
BYTE[9]
+
DWORD Count6
+
FLOAT
+
FLOAT
+
ZSTRING
+
ZSTRING
+
BYTE
+
BYTE[8]
+
FLOAT //Little Endian
+
BYTE[20]
+
FLOAT
+
BYTE[12]
+
FLOAT
+
BYTE[8]
+
BYTE[4] //00FF00FF
+
BYTE[8]
+
DWORD Count7
+
DWORD
+
BYTE[30]
+
DWORD Count
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT
+
BYTE[16]
+
FLOAT //-1000000000.0
+
FLOAT // 0.0
+
FLOAT //-10000.0 Little Endian
+
FLOAT // 10000.0 Little Endian
+
BYTE[24] //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT
+
FLOAT
+
FLOAT
+
DWORD Count8
+
FLOAT
+
BYTE
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT
+
FLOAT
+
FLOAT
+
BYTE
+
DWORD Count9
+
BYTE[8]
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
DWORD Count
+
FLOAT
+
FLOAT
+
FLOAT
+
DWORD Count10
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT timecode
+
BYTE[4]
+
</pre>
+
  
===Decal Effect===
+
====Effect Sequence====
====Format====
+
=====Overivew=====
<pre>
+
Combines effect compilations so they play out sequentially
BYTE[4]
+
=====Format=====
QWORD //I64 of a DDS resource
+
BYTE[6]
+
FLOAT
+
DWORD Count1
+
FLOAT
+
DWORD Count2
+
FLOAT
+
DWORD Count3
+
FLOAT
+
DWORD Count4
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
DWORD Count5
+
FLOAT
+
FLOAT
+
FLOAT
+
BYTE[4]
+
FLOAT
+
BYTE[8]
+
BYTE[8] //FFFFFFFFFFFFFFFF
+
BYTE
+
</pre>
+
===Effect Sequence===
+
====Format====
+
<pre>
+
DWORD Count1
+
FLOAT DurationMin //Little Endian
+
FLOAT DurationMax //Little Endian
+
ZSTRING Effect Name
+
DWORD
+
</pre>
+
  
===Sound Effect===
+
DWORD Count1
====Format====
+
FLOAT //Little Endian
<pre>
+
FLOAT //Little Endian
DWORD
+
ZSTRING Effect Name //See Effect Compilations below
QWORD //I64 of an Audio resource
+
DWORD
FLOAT
+
FLOAT
+
FLOAT
+
</pre>
+
  
===Shake Effect===
 
====Format====
 
<pre>
 
FLOAT
 
FLOAT
 
DWORD Count1
 
FLOAT
 
DWORD Count2
 
FLOAT
 
FLOAT
 
BYTE
 
FLOAT
 
</pre>
 
  
===Camera Effect===
+
====Sound Effect====
====Format====
+
=====Overview=====
<pre>
+
Plays a sound
DWORD
+
=====Format=====
WORD
+
FLOAT
+
DWORD Count1
+
FLOAT
+
DWORD Count2
+
FLOAT
+
DWORD Count3
+
FLOAT
+
DWORD Count4
+
FLOAT
+
BYTE[17]
+
DWORD
+
BYTE
+
</pre>
+
  
===Model Effect===
+
DWORD
====Format====
+
QWORD //I<sub>64</sub> of an Audio resource
<pre>
+
FLOAT
BYTE[12]
+
FLOAT
FLOAT
+
FLOAT
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT
+
BYTE[4]
+
BYTE[8] //FFFFFFFFFFFFFFFF
+
BYTE
+
</pre>
+
  
===Screen Effect===
+
====Shake Effect====
====Format====
+
=====Format=====
<pre>
+
BYTE type
+
DWORD
+
DWORD Count1
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
DWORD Count2
+
FLOAT
+
FLOAT
+
FLOAT
+
if(type == 0) BYTE[4] else BYTE[12]
+
BYTE[8]
+
BYTE[21]
+
BYTE[3]
+
</pre>
+
  
===P10Block===
+
FLOAT
 +
FLOAT
 +
DWORD Count1
 +
FLOAT
 +
DWORD Count2
 +
FLOAT
 +
FLOAT
 +
BYTE
 +
FLOAT
 +
 
 +
====Camera Effect====
 +
=====Format=====
 +
 
 +
DWORD
 +
WORD
 +
FLOAT
 +
DWORD Count1
 +
FLOAT
 +
DWORD Count2
 +
FLOAT
 +
DWORD Count3
 +
FLOAT
 +
DWORD Count4
 +
FLOAT
 +
BYTE[17]
 +
DWORD
 +
BYTE
 +
 
 +
====Model Effect====
 +
=====Format=====
 +
 
 +
BYTE[12]
 +
FLOAT
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT
 +
BYTE[4]
 +
BYTE[8] //FFFFFFFFFFFFFFFF
 +
BYTE
 +
 
 +
====Screen Effect====
 +
=====Format=====
 +
 
 +
BYTE type
 +
DWORD
 +
DWORD Count1
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
DWORD Count2
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
if(type == 0) BYTE[4] else BYTE[12]
 +
BYTE[8]
 +
BYTE[21]
 +
BYTE[3]
 +
 
 +
 
 +
====P10Block====
 
No examples to decode
 
No examples to decode
  
===P11Block===
+
====P11Block====
 
No examples to decode
 
No examples to decode
  
===P12Block===
+
====P12Block====
 
No examples to decode
 
No examples to decode
  
===Distribution Effect===
+
====Distribution Effect====
====Format====
+
=====Overview=====
<pre>
+
Note: there is only one of these
DWORD
+
=====Format=====
DWORD
+
DWORD
ZSTRING
+
DWORD
BYTE[5]
+
ZSTRING
FLOAT
+
BYTE[5]
BYTE[2]
+
FLOAT
FLOAT
+
BYTE[2]
FLOAT //Little Endian
+
FLOAT
FLOAT //Little Endian
+
FLOAT //Little Endian
FLOAT //Little Endian
+
FLOAT //Little Endian
FLOAT //Little Endian
+
FLOAT //Little Endian
FLOAT //Little Endian
+
FLOAT //Little Endian
FLOAT //Little Endian
+
FLOAT //Little Endian
FLOAT //Little Endian
+
FLOAT //Little Endian
FLOAT //Little Endian
+
FLOAT //Little Endian
FLOAT //Little Endian
+
FLOAT //Little Endian
BYTE[84]
+
FLOAT //Little Endian
BYTE[24] //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+
BYTE[84]
FLOAT //Little Endian
+
BYTE[24] //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FLOAT //Little Endian
+
FLOAT //Little Endian
BYTE[8] //FFFFFFFFFFFFFFFF
+
FLOAT //Little Endian
BYTE[14]
+
BYTE[8] //FFFFFFFFFFFFFFFF
BYTE[8] //FFFFFFFFFFFFFFFF
+
BYTE[14]
BYTE[5]
+
BYTE[8] //FFFFFFFFFFFFFFFF
</pre>
+
BYTE[5]  
===P14Block===
+
====P14Block====
 
No examples to decode
 
No examples to decode
 +
 +
===Shader Effects===
 +
====Overview====
 +
References shaders from "Shaders_Win32.precomp", making them available to the particle effects in the previous section and overriding some parameters.
 +
====Format====
 +
 +
BYTE[6]
 +
DWORD
 +
WORD
 +
DWORD Count
 +
QWORD Shader Id?
 +
QWORD Effect Type
 +
DWORD Count1
 +
QWORD //Property ID
 +
BYTE dataType
 +
switch(dataType)
 +
case 06: QWORD // DDS Instance Id
 +
case 00: FLOAT // Little Endian
 +
====Effect Types====
 +
{| class="wikitable" border="1"
 +
! ID
 +
! Name
 +
|-
 +
| 0x8FAB3764
 +
| Fluid Effect
 +
|-
 +
| 0x4968A478
 +
| Sim Censor
 +
|-
 +
 +
|}
 +
 +
====Properties====
 +
[[FNV|FNV32]] Hashed property names from "Shaders_Win32.precomp"
 +
 +
{| class="wikitable" border="1"
 +
! ID
 +
! Name
 +
|-
 +
| 0x6CC0FD85
 +
| Diffuse Map
 +
|-
 +
| 0x6E56548A
 +
| Normal Map
 +
|-
 +
| 0x8C27D8C9
 +
| Edge Darkening
 +
|-
 +
| 0xC3C472A1
 +
| Refraction Distortion Scale
 +
|-
 +
| 0x6A203374
 +
| Clip Alpha Opacity
 +
|-
 +
| 0x556010DC
 +
| Alpha Cutoff
 +
|-
 +
| 0xF2FCAD8C
 +
| Specular Scale
 +
|-
 +
| 0xF43D2BDC
 +
| Multiply Value
 +
|-
 +
| 0x3965ECE0
 +
| Additive Value
 +
|-
 +
|}
 +
 +
===Effect Compilations===
 +
====Overview====
 +
This section combines multiple effects from the previous sections.  The same effects are often used more than once here but with different offsets and parameters.
 +
====Format====
 +
BYTE[4]
 +
DWORD EffectCount
 +
--Repeat EffectCount
 +
// Effect Block Table
 +
DWORD
 +
BYTE[8]
 +
FLOAT
 +
FLOAT
 +
BYTE[5]
 +
DWORD Count1
 +
FLOAT[Count1]
 +
BYTE[16]
 +
DWORD BlockIndexCount
 +
--repeat BlockIndexCount
 +
BYTE BlockType
 +
BYTE[6]
 +
FLOAT
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
FLOAT //Little Endian
 +
//Offset relative to the slot
 +
FLOAT X_Offset //Little Endian
 +
FLOAT Y_Offset //Little Endian
 +
FLOAT Z_Offset //Little Endian
 +
BYTE
 +
BYTE
 +
DWORD Count
 +
--repeat Count
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
FLOAT
 +
BYTE[12]
 +
FLOAT
 +
DWORD BlockIndex
 +
BYTE
 +
BYTE
 +
===Effect Handles===
 +
====Overview====
 +
This is the root of an effect tree.  Effects are called via scripts and clip events by the name provided in this section, which links to the other parts. 
 +
====Format====
 +
--Repeat until index 0xFFFFFFFF
 +
DWORD CompilationIndex //see previous section
 +
ZSTRING EffectName
  
 
{{TS3AdvancedModdingHeader}}
 
{{TS3AdvancedModdingHeader}}

Revision as of 02:10, 15 July 2010

Modding Reference by Category

Sims 3 :DBPF | File Types | RCOL(Scene) | Catalog Resource | String Table | Key Table | TS3 Programmer's Reference 

Effect Resource Tree - SWB
TypeID:0xEA5118B0
Game Version:The Sims 3



Contents

Overview

Defines special effects.

Format

All data is in Big Endian order unless otherwise noted(most floats). This spec is very primitive and needs work.

WORD	Version
Effect Block Section 		
Effect Shader Section 				
Effect Compilation Section
Effect Handle Section

Effect Blocks

Format

--Repeat until BlockType 0xFFFF

	// Block List
	WORD	BlockType
	WORD	BlockVersion
	DWORD	BlockCount
	--BlockCount times
		--Insert block data(depending on type)

Blocks

BlockType
0x0001 Particle Effect
0x0002 Metaparticle Effect
0x0003 Decal Effect
0x0004 Effect Sequence
0x0005 Sound Effect
0x0006 Shake Effect
0x0007 Camera Effect
0x0008 Model Effect
0x0009 Screen Effect
0x000A P10Block
0x000B P11Block
0x000C P12Block
0x000D Distribution Effect
0x000E P14Block

Particle Effect

Format
BYTE
BYTE
BYTE
BYTE
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT

//Angle(Degrees)
DWORD Count1
	FLOAT 
FLOAT
WORD
FLOAT
//Scale Delta
DWORD Count2 
	FLOAT 
FLOAT
DWORD Count3
	FLOAT
FLOAT
FLOAT
BYTE[4]
DWORD Count4
	FLOAT
DWORD Count5
	FLOAT
FLOAT 
//Particle Color Delta
DWORD Count6	
	FLOAT Red //Little Endian
 	FLOAT Green //Little Endian
	FLOAT Blue //Little Endian

FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
QWORD //I64 of a an image(DDS), model(VPXY), or shader(see shader section below)
BYTE[10]
FLOAT
BYTE[8] // FFFFFFFFFFFFFFFF
BYTE
WORD
BYTE
BYTE
FLOAT
BYTE
BYTE
BYTE
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT
FLOAT
FLOAT
FLOAT //Little Endian
FLOAT
FLOAT
FLOAT
DWORD Count7
	FLOAT
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
BYTE[4] // 00FF00FF
BYTE[4]
DWORD Count8
	FLOAT
DWORD Count9
	DWORD
	QWORD
	FLOAT
	FLOAT
	FLOAT
	FLOAT
	BYTE[4]
	ZSTRING
	ZSTRING
	DWORD Count
		FLOAT //Little Endian
		FLOAT //Little Endian
		FLOAT //Little Endian
FLOAT
BYTE[16]
FLOAT //-1000000000.0
FLOAT // 0.0
FLOAT //-10000.0 Little Endian
FLOAT // 10000.0 Little Endian 
BYTE[24] //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT
FLOAT
FLOAT
DWORD Count10
 	FLOAT
BYTE
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
DWORD Count11
	FLOAT
FLOAT
DWORD
BYTE[16]
DWORD Count12	
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
BYTE


Metaparticle Effect

Overview

This type takes an existing effect and modifies it

Format
BYTE[6]
WORD
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT 
DWORD Count1
	FLOAT
FLOAT
DWORD
DWORD Count2
	FLOAT
FLOAT
DWORD
BYTE[4]
DWORD
BYTE[4]
DWORD Count3
	FLOAT
BYTE[24] 
DWORD Count4
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
BYTE[8]
DWORD Count5
 	BYTE[3]
	FLOAT
	FLOAT
	FLOAT
	BYTE[9]
DWORD Count6
	FLOAT
FLOAT
ZSTRING Base Effect //See effect handles below
ZSTRING Death Effect //See effect handles below
BYTE
BYTE[8]
FLOAT //Little Endian
BYTE[20]
FLOAT
BYTE[12]
FLOAT
BYTE[8]
BYTE[4] //00FF00FF
BYTE[8]
DWORD Count7
	DWORD
	BYTE[30]
	DWORD Count
		FLOAT //Little Endian
		FLOAT //Little Endian
		FLOAT //Little Endian
FLOAT
BYTE[16]
FLOAT //-1000000000.0
FLOAT // 0.0
FLOAT //-10000.0 Little Endian
FLOAT // 10000.0 Little Endian 
BYTE[24] //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT
FLOAT
FLOAT
DWORD Count8
	FLOAT
BYTE
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT
FLOAT
FLOAT
BYTE
DWORD Count9
	BYTE[8]
	FLOAT //Little Endian
 	FLOAT //Little Endian
	DWORD Count
 		FLOAT
FLOAT
FLOAT
DWORD Count10
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT timecode
BYTE[4]

Decal Effect

Overview

This is mostly used for things like the build tool UI tools(i.e. the terrain tool circle).

Format
BYTE[4]
QWORD //I64 of a DDS resource
BYTE[6]
FLOAT
DWORD Count1
	FLOAT
DWORD Count2 
	FLOAT
DWORD Count3 
	FLOAT
//Color Deltas
DWORD Count4
	FLOAT Red //Little Endian
	FLOAT Green //Little Endian
	FLOAT Blue //Little Endian
DWORD Count5
	FLOAT
	FLOAT
	FLOAT
BYTE[4]
FLOAT
BYTE[8]
BYTE[8] //FFFFFFFFFFFFFFFF
BYTE

Effect Sequence

Overivew

Combines effect compilations so they play out sequentially

Format
DWORD Count1 
	FLOAT //Little Endian
	FLOAT //Little Endian
	ZSTRING Effect Name //See Effect Compilations below
DWORD


Sound Effect

Overview

Plays a sound

Format
DWORD
QWORD //I64 of an Audio resource
FLOAT
FLOAT
FLOAT

Shake Effect

Format
FLOAT
FLOAT
DWORD Count1
	FLOAT
DWORD Count2
	FLOAT
FLOAT
BYTE
FLOAT

Camera Effect

Format
DWORD
WORD
FLOAT
DWORD Count1
	FLOAT
DWORD Count2
	FLOAT
DWORD Count3
	FLOAT
DWORD Count4
	FLOAT
BYTE[17]
DWORD
BYTE

Model Effect

Format
BYTE[12]
FLOAT
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT
BYTE[4]
BYTE[8] //FFFFFFFFFFFFFFFF
BYTE

Screen Effect

Format
BYTE type
DWORD
DWORD Count1	 
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
DWORD Count2
	FLOAT
	FLOAT
	FLOAT
if(type == 0) BYTE[4] else BYTE[12]
BYTE[8]
BYTE[21]
BYTE[3]


P10Block

No examples to decode

P11Block

No examples to decode

P12Block

No examples to decode

Distribution Effect

Overview

Note: there is only one of these

Format
DWORD
DWORD
ZSTRING
BYTE[5]
FLOAT
BYTE[2]
FLOAT
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
BYTE[84]
BYTE[24] //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FLOAT //Little Endian
FLOAT //Little Endian
BYTE[8] //FFFFFFFFFFFFFFFF
BYTE[14]
BYTE[8] //FFFFFFFFFFFFFFFF
BYTE[5] 

P14Block

No examples to decode

Shader Effects

Overview

References shaders from "Shaders_Win32.precomp", making them available to the particle effects in the previous section and overriding some parameters.

Format

BYTE[6]
DWORD
WORD
DWORD Count
	QWORD Shader Id?
	QWORD Effect Type
	DWORD Count1
		QWORD //Property ID
		BYTE dataType
		switch(dataType)
			case 06: QWORD // DDS Instance Id
			case 00: FLOAT // Little Endian

Effect Types

ID Name
0x8FAB3764 Fluid Effect
0x4968A478 Sim Censor

Properties

FNV32 Hashed property names from "Shaders_Win32.precomp"

ID Name
0x6CC0FD85 Diffuse Map
0x6E56548A Normal Map
0x8C27D8C9 Edge Darkening
0xC3C472A1 Refraction Distortion Scale
0x6A203374 Clip Alpha Opacity
0x556010DC Alpha Cutoff
0xF2FCAD8C Specular Scale
0xF43D2BDC Multiply Value
0x3965ECE0 Additive Value

Effect Compilations

Overview

This section combines multiple effects from the previous sections. The same effects are often used more than once here but with different offsets and parameters.

Format

BYTE[4]
DWORD EffectCount
--Repeat EffectCount
	// Effect Block Table
	DWORD
	BYTE[8]
	FLOAT
	FLOAT
	BYTE[5]
	DWORD Count1
	FLOAT[Count1]
	BYTE[16]
	DWORD BlockIndexCount
	--repeat BlockIndexCount
		BYTE BlockType
		BYTE[6]
		FLOAT
		FLOAT //Little Endian
		FLOAT //Little Endian
		FLOAT //Little Endian
		FLOAT //Little Endian
		FLOAT //Little Endian
		FLOAT //Little Endian
		FLOAT //Little Endian
		FLOAT //Little Endian
		FLOAT //Little Endian
		//Offset relative to the slot
		FLOAT X_Offset //Little Endian
		FLOAT Y_Offset //Little Endian
		FLOAT Z_Offset //Little Endian
		BYTE
		BYTE
		DWORD Count
		--repeat Count
			FLOAT
			FLOAT
			FLOAT
		FLOAT
		FLOAT
		FLOAT
		FLOAT
		FLOAT
		FLOAT
		BYTE[12]
		FLOAT
		DWORD BlockIndex
		BYTE
		BYTE

Effect Handles

Overview

This is the root of an effect tree. Effects are called via scripts and clip events by the name provided in this section, which links to the other parts.

Format

--Repeat until index 0xFFFFFFFF
	DWORD CompilationIndex //see previous section
	ZSTRING EffectName
Modding Reference by Category

Sims 3 :DBPF | File Types | RCOL(Scene) | Catalog Resource | String Table | Key Table | TS3 Programmer's Reference 

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox