Difference between revisions of "Sims 3:0xEA5118B0"

From SimsWiki
Jump to: navigation, search
(Added changes in Resource reference block; these changes made the effects resource in patch 1.55 work for me)
(Format: Added Particle Effect field names based on findings made by Rick)
Line 85: Line 85:
  
 
======Format======
 
======Format======
  DWORD //Flags?
+
  DWORD   //BE; Flags
  FLOAT //Little Endian
+
  FLOAT[2] //le; Particle Lifetime
  FLOAT //Little Endian
+
  FLOAT   //BE; Preroll Time
  FLOAT //Little Endian
+
  FLOAT[2] //le; Emit Delay
  FLOAT //Little Endian
+
  FLOAT[2] //le; Emit Retrigger
  FLOAT //Little Endian
+
  FLOAT[3] //le; Emit Direction Bounding Box Minimum
  FLOAT //Little Endian
+
  FLOAT[3] //le; Emit Direction Bounding Box Maximum
  FLOAT //Little Endian
+
  FLOAT[2] //le; Emit Speed
  FLOAT //Little Endian
+
  FLOAT[3] //le; Emit Volume Bounding Box Minimum
  FLOAT //Little Endian
+
  FLOAT[3] //le; Emit Volume Bounding Box Maximum
  FLOAT //Little Endian
+
  FLOAT   //BE; Emit Torus Width
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
+
 
   
 
   
  //Particle Emission Rate (Particles/Sim-Minute)
+
  // Emit Rate Curve (Particles/Sim-Minute)
  DWORD Count
+
  DWORD Count //BE
FLOAT  
+
    FLOAT   //BE
  FLOAT
+
  FLOAT   //BE; Emit Rate Curve Time
  WORD
+
  WORD     //BE; Emit Rate Curve Cycles
  FLOAT
+
  FLOAT   //BE; Emit Rate Speed Scale
  //Scale Delta
+
  DWORD Count  
+
  // Size Curve
FLOAT  
+
  DWORD Count //BE
  FLOAT
+
    FLOAT   //BE
  //Width Delta (1 is normal)
+
  FLOAT   //BE; Size Vary
  DWORD Count
+
FLOAT
+
  // Aspect Ratio Curve (1 is normal)
  //Randomization Multipliers:  
+
  DWORD Count //BE
 +
    FLOAT   //BE
 +
 +
  // Randomization Multipliers:  
 
  //  If > 0, randomly scaled between 0 and value for each particle  
 
  //  If > 0, randomly scaled between 0 and value for each particle  
 
  //  and multiplied to each value of the specified delta list
 
  //  and multiplied to each value of the specified delta list
Line 128: Line 119:
 
  //  a lot more particles were very wide and spinning rapidly,
 
  //  a lot more particles were very wide and spinning rapidly,
 
  //  and very few particles were narrow and spinning slowly.
 
  //  and very few particles were narrow and spinning slowly.
  FLOAT //Width
+
//  UPDATE: The basic formula is: (1 + random(-1,1) * vary) * value
  FLOAT //Rotation
+
  FLOAT // BE; Aspect Ratio Vary
 +
FLOAT // BE; Rotation Vary
 +
  FLOAT // BE; Rotation Offset
 
   
 
   
FLOAT
+
  // Rotation Curve (1 = one clockwise rotation = 360 degrees)
  //Rotation Delta (1 = one clockwise rotation = 360 degrees)
+
  DWORD Count //BE
  DWORD Count
+
    FLOAT   //BE
FLOAT
+
//Particle Opacity (0 - 1 ; transparent - opaque)
+
DWORD Count
+
FLOAT
+
FLOAT
+
//Particle Color Delta
+
DWORD Count
+
FLOAT Red //Little Endian
+
  FLOAT Green //Little Endian
+
FLOAT Blue //Little Endian
+
 
   
 
   
  //Color Delta that is added at a random intensity to each particle
+
// Alpha Curve (0 - 1 = transparent - opaque)
 +
DWORD Count //BE
 +
    FLOAT  //BE
 +
FLOAT //BE; Alpha Vary; 0 - 1 = transparent - opaque
 +
 +
  // Color Curve
 +
DWORD Count //BE
 +
    FLOAT //le ; Red  ; 0 - 1
 +
    FLOAT //le ; Green ; 0 - 1
 +
    FLOAT //le ; Blue  ; 0 - 1
 +
 +
//Color Vary that is added at a random intensity to each particle
 
  //Example: if set to (0,0,1) with white particles,  
 
  //Example: if set to (0,0,1) with white particles,  
 
  //    some particles will be bright yellow, some will be pale yellow, and most will be white
 
  //    some particles will be bright yellow, some will be pale yellow, and most will be white
  FLOAT //Little Endian ; Cyan
+
  FLOAT //le ; Red  ; 0 - 1
  FLOAT //Little Endian ; Magenta
+
  FLOAT //le ; Green ; 0 - 1
  FLOAT //Little Endian ; Yellow
+
  FLOAT //le ; Blue  ; 0 - 1
 
   
 
   
 
  //Resource reference block
 
  //Resource reference block
  QWORD //I<sub>64</sub> of a an image([[Sims_3:0x00B2D882|DDS]]), model([[Sims_3:0x736884F1|VPXY]]), or material(see [[#Materials|Material Section]] below)
+
  QWORD //BE; IID<sub>64</sub> of a an image([[Sims_3:0x00B2D882|DDS]]), model([[Sims_3:0x736884F1|VPXY]]), or material(see [[#Materials|Material Section]] below)
  BYTE
+
  BYTE //BE; Format
  BYTE flag
+
  BYTE //BE; DrawMode
  if((flag & 0x80)==0x80) DWORD
+
  if ((DrawMode & 0x80) == 0x80) DWORD //BE; ???
  if((flag & 0x40)==0x40) BYTE
+
  if ((DrawMode & 0x40) == 0x40) BYTE //BE; ???
  BYTE
+
   
  BYTE
+
// BE; Draw Flags
  WORD
+
if (Version >= 6) WORD
  FLOAT
+
else              BYTE
  QWORD //0xFFFFFFFFFFFFFFFF
+
 +
  BYTE //BE; Buffer
 +
  WORD //BE; Layer
 +
  FLOAT //BE; Sort Offset
 +
  QWORD //BE; Second IID<sub>64</sub>; almost always 0xFFFFFFFFFFFFFFFF
 +
 +
BYTE    //BE; Physics Type
 +
BYTE    //BE; Override Set
 +
BYTE    //BE; Tile Count U
 +
BYTE    //BE; Tile Count V
 +
BYTE    //BE; Align Mode
 +
FLOAT    //BE; Frame Speed
 +
BYTE    //BE; Frame Start
 +
BYTE    //BE; Frame Count
 +
BYTE    //BE; Frame Random
 +
FLOAT[3] //le; Directional Forces Sum
 +
FLOAT    //BE; Wind Strength
 +
FLOAT    //BE; Gravity Strength
 +
FLOAT    //BE; Radial Force
 +
FLOAT[3] //le; Radial Force Location
 +
FLOAT    //BE; Drag
 +
FLOAT    //BE; Velocity Stretch
 +
FLOAT    //BE; Screw Rate
 +
 +
// Wiggles
 +
DWORD Count //BE
 +
    FLOAT    //BE; Time Rate
 +
    FLOAT[3] //le; Rate Direction
 +
    FLOAT[3] //le; Wiggle Direction
 +
 +
BYTE //BE; Screen Bloom Alpha Rate; usually 0x00
 +
BYTE //BE; Screen Bloom Alpha Base; usually 0xFF
 +
BYTE //BE; Screen Bloom Size Rate;  usually 0x00
 +
BYTE //BE; Screen Bloom Size Base;  usually 0xFF
 +
 +
// Loop Box Color Curve
 +
DWORD Count //BE
 +
    FLOAT //le ; Red  ; 0 - 1
 +
    FLOAT //le ; Green ; 0 - 1
 +
    FLOAT //le ; Blue  ; 0 - 1
 +
 +
// Loop Box Alpha Curve
 +
DWORD Count //BE
 +
    FLOAT //BE; 0 - 1 = transparent - opaque
 +
 +
// Surfaces
 +
DWORD Count //BE
 +
    DWORD //BE; Flags; 0x3FFF mask?
 +
    QWORD //BE; IID<sub>64</sub> of a surface map(see [[#Materials|Material Section]] below)?
 +
    FLOAT //BE; Bounce            ; Should be DWORD?
 +
    FLOAT //BE; Slide            ; Should be DWORD?
 +
    FLOAT //BE; Collision Radius  ; Should be DWORD?
 +
    FLOAT //BE; Death Probability ; Should be DWORD?
 +
    DWORD //BE; Pin Offset
 +
    ZSTRING //???
 +
    ZSTRING //???
 +
    DWORD Count //BE
 +
        FLOAT[3] //le; Surface Point
 +
 +
FLOAT    //BE; Map Bounce
 +
FLOAT    //BE; Map Repulse Height
 +
FLOAT    //BE; Map Repulse Strength
 +
FLOAT    //BE; Map Repulse Scout Distance
 +
FLOAT    //BE; Map Repulse Vertical
 +
FLOAT    //BE; Map Repulse Kill Height; usually -1000000000.0
 +
FLOAT    //BE; Probability Death; usually 0.0
 +
FLOAT[2] //le; Altitude Range; usually (-10000.0, 10000.0)
 +
QWORD    //BE; Force Map IID<sub>64</sub>;      usually 0xFFFFFFFFFFFFFFFF
 +
QWORD    //BE; Emit Rate Map IID<sub>64</sub>;  usually 0xFFFFFFFFFFFFFFFF
 +
QWORD    //BE; Emit Color Map IID<sub>64</sub>; usually 0xFFFFFFFFFFFFFFFF
 
   
 
   
  BYTE
+
  // Random Walk
BYTE
+
  FLOAT[2] //le; Time
BYTE
+
  FLOAT[2] //le; Strength
BYTE
+
  FLOAT   //BE; Turn Range
BYTE
+
  FLOAT   //BE; Turn Offset
FLOAT
+
  FLOAT   //BE; Mix
BYTE
+
  // Turn Offset Curve
BYTE
+
  DWORD Count //BE
BYTE
+
      FLOAT //BE
FLOAT //Little Endian
+
  BYTE     //BE; Walk Loop Type
  FLOAT //Little Endian
+
  FLOAT //Little Endian
+
FLOAT
+
FLOAT
+
FLOAT
+
  FLOAT //Little Endian
+
  FLOAT //Little Endian
+
  FLOAT //Little Endian
+
  FLOAT
+
FLOAT
+
FLOAT
+
DWORD Count
+
FLOAT
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
BYTE[4] // 00FF00FF
+
  DWORD Count
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
  DWORD Count
+
FLOAT
+
DWORD Count
+
DWORD
+
QWORD
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT
+
BYTE[4]
+
ZSTRING
+
ZSTRING
+
DWORD Count
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT
+
FLOAT
+
 
   
 
   
  FLOAT //-1000000000.0
+
  FLOAT[3] //le; Attractor Origin
  FLOAT // 0.0
+
  // Attractor Strength Curve
  FLOAT //-10000.0 Little Endian
+
  DWORD Count //BE
FLOAT // 10000.0 Little Endian
+
    FLOAT   //BE
  QWORD //0xFFFFFFFFFFFFFFFF
+
  FLOAT //BE; Range
  QWORD //0xFFFFFFFFFFFFFFFF
+
  FLOAT //BE; Kill Range
QWORD //0xFFFFFFFFFFFFFFFF
+
 
   
 
   
  FLOAT //Little Endian
+
  // Path Points
FLOAT //Little Endian
+
  DWORD Count //BE
FLOAT //Little Endian
+
    FLOAT[3] //le; Position
FLOAT //Little Endian
+
    FLOAT[3] //le; Velocity
FLOAT
+
    FLOAT   //BE; Time
FLOAT
+
FLOAT
+
  DWORD Count
+
  FLOAT
+
BYTE
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
DWORD Count
+
FLOAT
+
FLOAT
+
FLOAT
+
DWORD Count
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT
+
 
   
 
   
  if(Version >= 2)
+
  if (Version >= 2)
FLOAT //Little Endian
+
    FLOAT[3] //le; ???
FLOAT //Little Endian
+
    DWORD Count //BE
FLOAT //Little Endian
+
        FLOAT[3] //le; ???
DWORD Count
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
FLOAT //Little Endian
+
 
   
 
   
  if(Version >=3)BYTE
+
  if (Version >=3) BYTE //BE; ???
  if(Version >=4)FLOAT
+
  if (Version >=4) FLOAT //BE; ???
  if(Version >=5)FLOAT
+
  if (Version >=5) FLOAT //BE; ???
  
 
====Metaparticle Effect====
 
====Metaparticle Effect====

Revision as of 17:11, 12 August 2014

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 Sections 		
Resource Sections 				
VisualEffect Section
BYTE[4] //FFFFFFFF
VisualEffect Handles

Effect Sections

Format

--Repeat until BlockType 0xFFFF
	// Block List
	WORD	BlockType
	WORD	Version
	DWORD	Count
	--repeat(Count)
		--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 Unused
0x000B Game Effect
0x000C Fast Particle Effect
0x000D Distribute Effect
0x000E Ribbon Effect
0x000F Sprite Effect

Particle Effect

Format
DWORD    //BE; Flags
FLOAT[2] //le; Particle Lifetime
FLOAT    //BE; Preroll Time
FLOAT[2] //le; Emit Delay
FLOAT[2] //le; Emit Retrigger
FLOAT[3] //le; Emit Direction Bounding Box Minimum
FLOAT[3] //le; Emit Direction Bounding Box Maximum
FLOAT[2] //le; Emit Speed
FLOAT[3] //le; Emit Volume Bounding Box Minimum
FLOAT[3] //le; Emit Volume Bounding Box Maximum
FLOAT    //BE; Emit Torus Width

// Emit Rate Curve (Particles/Sim-Minute)
DWORD Count //BE
    FLOAT   //BE
FLOAT    //BE; Emit Rate Curve Time
WORD     //BE; Emit Rate Curve Cycles
FLOAT    //BE; Emit Rate Speed Scale

// Size Curve
DWORD Count //BE
    FLOAT   //BE
FLOAT    //BE; Size Vary

// Aspect Ratio Curve (1 is normal)
DWORD Count //BE 
    FLOAT   //BE

// Randomization Multipliers: 
//  If > 0, randomly scaled between 0 and value for each particle 
//  and multiplied to each value of the specified delta list
//  Seems to favor higher values, since when I set each to 10, 
//  a lot more particles were very wide and spinning rapidly,
//  and very few particles were narrow and spinning slowly.
//  UPDATE: The basic formula is: (1 + random(-1,1) * vary) * value
FLOAT // BE; Aspect Ratio Vary
FLOAT // BE; Rotation Vary
FLOAT // BE; Rotation Offset

// Rotation Curve (1 = one clockwise rotation = 360 degrees)
DWORD Count //BE
    FLOAT   //BE

// Alpha Curve (0 - 1 = transparent - opaque)
DWORD Count //BE
    FLOAT   //BE
FLOAT //BE; Alpha Vary; 0 - 1 = transparent - opaque

// Color Curve
DWORD Count //BE
    FLOAT //le ; Red   ; 0 - 1
    FLOAT //le ; Green ; 0 - 1
    FLOAT //le ; Blue  ; 0 - 1

//Color Vary that is added at a random intensity to each particle
//Example: if set to (0,0,1) with white particles, 
//    some particles will be bright yellow, some will be pale yellow, and most will be white
FLOAT //le ; Red   ; 0 - 1
FLOAT //le ; Green ; 0 - 1
FLOAT //le ; Blue  ; 0 - 1

//Resource reference block
QWORD //BE; IID64 of a an image(DDS), model(VPXY), or material(see Material Section below)
BYTE  //BE; Format
BYTE  //BE; DrawMode
if ((DrawMode & 0x80) == 0x80) DWORD //BE; ??? 
if ((DrawMode & 0x40) == 0x40) BYTE  //BE; ???

// BE; Draw Flags
if (Version >= 6) WORD
else              BYTE

BYTE  //BE; Buffer
WORD  //BE; Layer
FLOAT //BE; Sort Offset
QWORD //BE; Second IID64; almost always 0xFFFFFFFFFFFFFFFF

BYTE     //BE; Physics Type
BYTE     //BE; Override Set
BYTE     //BE; Tile Count U
BYTE     //BE; Tile Count V
BYTE     //BE; Align Mode
FLOAT    //BE; Frame Speed
BYTE     //BE; Frame Start
BYTE     //BE; Frame Count
BYTE     //BE; Frame Random
FLOAT[3] //le; Directional Forces Sum
FLOAT    //BE; Wind Strength
FLOAT    //BE; Gravity Strength
FLOAT    //BE; Radial Force
FLOAT[3] //le; Radial Force Location
FLOAT    //BE; Drag
FLOAT    //BE; Velocity Stretch
FLOAT    //BE; Screw Rate

// Wiggles 
DWORD Count //BE
    FLOAT    //BE; Time Rate
    FLOAT[3] //le; Rate Direction
    FLOAT[3] //le; Wiggle Direction

BYTE //BE; Screen Bloom Alpha Rate; usually 0x00
BYTE //BE; Screen Bloom Alpha Base; usually 0xFF
BYTE //BE; Screen Bloom Size Rate;  usually 0x00
BYTE //BE; Screen Bloom Size Base;  usually 0xFF

// Loop Box Color Curve
DWORD Count //BE
    FLOAT //le ; Red   ; 0 - 1
    FLOAT //le ; Green ; 0 - 1
    FLOAT //le ; Blue  ; 0 - 1

// Loop Box Alpha Curve
DWORD Count //BE
    FLOAT //BE; 0 - 1 = transparent - opaque

// Surfaces
DWORD Count //BE
    DWORD //BE; Flags; 0x3FFF mask?
    QWORD //BE; IID64 of a surface map(see Material Section below)?
    FLOAT //BE; Bounce            ; Should be DWORD?
    FLOAT //BE; Slide             ; Should be DWORD?
    FLOAT //BE; Collision Radius  ; Should be DWORD?
    FLOAT //BE; Death Probability ; Should be DWORD?
    DWORD //BE; Pin Offset
    ZSTRING //???
    ZSTRING //???
    DWORD Count //BE
        FLOAT[3] //le; Surface Point

FLOAT    //BE; Map Bounce
FLOAT    //BE; Map Repulse Height
FLOAT    //BE; Map Repulse Strength
FLOAT    //BE; Map Repulse Scout Distance
FLOAT    //BE; Map Repulse Vertical
FLOAT    //BE; Map Repulse Kill Height; usually -1000000000.0
FLOAT    //BE; Probability Death; usually 0.0
FLOAT[2] //le; Altitude Range; usually (-10000.0, 10000.0)
QWORD    //BE; Force Map IID64;      usually 0xFFFFFFFFFFFFFFFF
QWORD    //BE; Emit Rate Map IID64;  usually 0xFFFFFFFFFFFFFFFF
QWORD    //BE; Emit Color Map IID64; usually 0xFFFFFFFFFFFFFFFF

// Random Walk
FLOAT[2] //le; Time
FLOAT[2] //le; Strength
FLOAT    //BE; Turn Range
FLOAT    //BE; Turn Offset
FLOAT    //BE; Mix
// Turn Offset Curve
DWORD Count //BE
     FLOAT  //BE
BYTE     //BE; Walk Loop Type

FLOAT[3] //le; Attractor Origin
// Attractor Strength Curve
DWORD Count //BE
    FLOAT   //BE
FLOAT //BE; Range
FLOAT //BE; Kill Range

// Path Points
DWORD Count //BE
    FLOAT[3] //le; Position
    FLOAT[3] //le; Velocity
    FLOAT    //BE; Time

if (Version >= 2)
    FLOAT[3] //le; ???
    DWORD Count //BE
        FLOAT[3] //le; ???

if (Version >=3) BYTE  //BE; ???
if (Version >=4) FLOAT //BE; ???
if (Version >=5) FLOAT //BE; ???

Metaparticle Effect

Overview

This type takes an existing effect and modifies it

Format
DWORD
DWORD
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 Count
	FLOAT
FLOAT
DWORD
DWORD Count
	FLOAT
FLOAT 
DWORD Count
	FLOAT 
DWORD Count
	FLOAT 
DWORD Count
	FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
DWORD Count
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
DWORD Count
	FLOAT
FLOAT
ZSTRING Base Effect //See Effect Handles below
ZSTRING Death Effect //See Effect Handles below
BYTE
FLOAT //Little Endian 
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian

FLOAT
FLOAT
FLOAT

FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian

FLOAT
FLOAT
DWORD Count
	FLOAT
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
BYTE[4] //00FF00FF
DWORD Count
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
DWORD Count
	FLOAT
DWORD Count
	DWORD
	QWORD
	FLOAT
	FLOAT
	FLOAT
	FLOAT
	BYTE[4]
	ZSTRING
	ZSTRING
	DWORD Count
		FLOAT //Little Endian
		FLOAT //Little Endian
		FLOAT //Little Endian
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT  
FLOAT //-1000000000.0
FLOAT // 0.0
FLOAT //-10000.0 Little Endian
FLOAT // 10000.0 Little Endian 
QWORD //0xFFFFFFFFFFFFFFFF
QWORD //0xFFFFFFFFFFFFFFFF
QWORD //0xFFFFFFFFFFFFFFFF 
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT
FLOAT
FLOAT
DWORD Count
	FLOAT
BYTE 
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT
FLOAT
FLOAT
DWORD Count
	FLOAT
BYTE

FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian

FLOAT
FLOAT
FLOAT

FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian

DWORD Count
	FLOAT
FLOAT
FLOAT
DWORD Count
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT //Little Endian
	FLOAT timecode
FLOAT

Decal Effect

Overview

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

Format
DWORD
QWORD //I64 of a DDS Resource
BYTE
FLOAT
BYTE
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
FLOAT
FLOAT
FLOAT //Little Endian
FLOAT //Little Endian
QWORD //0xFFFFFFFFFFFFFFFF
if(version >= 2)BYTE

Sequence Effect

Overivew

Combines effect compilations so they play out sequentially

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


Sound Effect

Overview

Plays a sound

Format
DWORD
QWORD //I64 of an Audio Tuner
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
DWORD Count5
	FLOAT
DWORD Count6
    FLOAT
DWORD Count7
    FLOAT
QWORD
WORD

Model Effect

Format
DWORD
QWORD
FLOAT
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT
DWORD Count
	FLOAT //Little Endian
	FLOAT //Little Endian
	DWORD Count
	--repeat(Count)
	     FLOAT
	DWORD
	DWORD
	BYTE
	BYTE
QWORD //0xFFFFFFFFFFFFFFFF
BYTE

Screen Effect

Format
BYTE
DWORD
DWORD Count
	FLOAT Red //Little Endian
	FLOAT Green //Little Endian
	FLOAT Blue //Little Endian
DWORD Count
	FLOAT
DWORD Count
	FLOAT
FLOAT
DWORD
DWORD
DWORD
QWORD
DWORD Count
    BYTE
    BYTE
    QWORD
    DWORD Count
        BYTE
DWORD Count
    FLOAT
    FLOAT
DWORD Count
    DWORD
DWORD Count
    FLOAT //Little Endian
    FLOAT //Little Endian
DWORD Count
    FLOAT //Little Endian
    FLOAT //Little Endian
DWORD Count
    DWORD     

Game Effect

No examples to decode

FastParticle Effect

No examples to decode

Distribute Effect

Overview

Note: there is only one of these

Format
DWORD
DWORD
ZSTRING
DWORD
BYTE
FLOAT 
WORD
FLOAT
FLOAT[12] Transform Matrix//Little Endian 
DWORD Count
	FLOAT
DWORD
DWORD Count
	FLOAT
DWORD Count
    FLOAT
DWORD Count
    FLOAT
DWORD
DWORD
DWORD
DWORD
DWORD
DWORD
DWORD Count
	FLOAT Red //Little Endian
	FLOAT Green //Little Endian
	FLOAT Blue //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
DWORD Count
    FLOAT
DWORD
DWORD Count
    DWORD
    QWORD
    FLOAT 
    FLOAT
    FLOAT
    FLOAT
    DWORD
    ZSTRING
    ZSTRING
    DWORD Count
         FLOAT //Little Endian  
         FLOAT //Little Endian  
         FLOAT //Little Endian          	
      	
QWORD //0xFFFFFFFFFFFFFFFF
QWORD //0xFFFFFFFFFFFFFFFF
QWORD //0xFFFFFFFFFFFFFFFF
FLOAT //Little Endian
FLOAT //Little Endian
QWORD //0xFFFFFFFFFFFFFFFF
BYTE
BYTE flag
if(flag & 0x80) DWORD
BYTE
BYTE
WORD
DWORD
QWORD //0xFFFFFFFFFFFFFFFF
BYTE
DWORD

Ribbon Effect

Overview

Examples of this effect first appear in the Create A Pet Demo

Format
DWORD
DWORD
DWORD
DWORD Count
        FLOAT
DWORD Count
        FLOAT
FLOAT
FLOAT
FLOAT
DWORD Count
        FLOAT Red //Little Endian
        FLOAT Green //Little Endian
        FLOAT Blue //Little Endian
DWORD Count
        FLOAT
DWORD Count
        FLOAT //Little Endian
        FLOAT //Little Endian
        FLOAT //Little Endian
DWORD Count
        FLOAT
DWORD Count
        FLOAT //Little Endian
        FLOAT //Little Endian
        FLOAT //Little Endian
DWORD Count
        FLOAT
DWORD Count
        FLOAT
DWORD Count
        FLOAT
DWORD
FLOAT

//Resource reference block
QWORD //I64 of a an image(DDS), model(VPXY), or material(see Material Section below)
BYTE
BYTE flag
if((flag & 0x80)==0x80) DWORD
BYTE
BYTE
WORD
FLOAT
QWORD //0xFFFFFFFFFFFFFFFF 

DWORD //0xFFFFFFFF
FLOAT
FLOAT
FLOAT
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT
FLOAT
QWORD //0xFFFFFFFFFFFFFFFF
QWORD //0xFFFFFFFFFFFFFFFF
DWORD

Sprite Effect

Overview

Examples of this effect first appear in the Create A Pet Demo

Format
DWORD
DWORD
DWORD
FLOAT
WORD
DWORD Count
        FLOAT
DWORD Count
        FLOAT Red //Little Endian
        FLOAT Green //Little Endian
        FLOAT Blue //Little Endian
DWORD Count
        FLOAT
FLOAT
FLOAT
FLOAT
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT //Little Endian
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT

//Resource reference block
QWORD //I64 of a an image(DDS), model(VPXY), or material(see Material Section below)
BYTE
BYTE flag
if((flag & 0x80)==0x80) DWORD
BYTE
BYTE
WORD
FLOAT
QWORD //0xFFFFFFFFFFFFFFFF

BYTE

Resource Sections

Format

 --Repeat until ResourceType 0xFFFF
   // Block List
   WORD    ResourceType
   WORD    Version
   DWORD    Count
   --repeat(Count)
       --Insert resource data(depending on type)

Resources

ID Name
0x0000 Map
0x0001 Material
Map

No examples to decode

Material
Overview

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

Format
QWORD Hashed name
QWORD Shader
DWORD Count1
	QWORD Property Id
	BYTE dataType
	switch(dataType)
		case 06: QWORD // DDS Instance Id
		case 00: FLOAT // Little Endian
Shaders

FNV32 Hashed shader names from "Shaders_Win32.precomp"

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

VisualEffect Section

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

WORD SectionType //0x0000
WORD Version //0x0002 		
DWORD EffectCount
--Repeat EffectCount
    // Effect Block Table
    DWORD
    DWORD
    DWORD
    FLOAT //Little Endian
    FLOAT //Little Endian
    DWORD
    BYTE
    DWORD Count
         FLOAT
    FLOAT //Little Endian
    FLOAT //Little Endian
    FLOAT //Little Endian
    DWORD
    DWORD BlockIndexCount
    --repeat BlockIndexCount
         BYTE BlockType
         DWORD
         WORD
         FLOAT
         FLOAT[12] Transformation Matrix //Little Endian
         BYTE
         BYTE
         DWORD Count
         --repeat Count
            FLOAT
            FLOAT
            FLOAT
         FLOAT[6] // always 1.0
         FLOAT
         FLOAT
         WORD
         WORD
         FLOAT
         DWORD BlockIndex
         if(version >=2)
             BYTE
             BYTE

VisualEffect 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