Difference between revisions of "EFFDIR"

From SC4D Encyclopaedia
Jump to navigation Jump to search
sc4e>Whatevermind
(Created page)
 
m (41 revisions imported)
 
(40 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{MTS2}}
 
{{MTS2}}
  
'''EFFDIR''' is the Effect Resource Tree for [[SimCity 4]].  The EFFDIR is located in SimCity_1.dat and has [[TGI]] ea5118b0 ea5118b1 00000001.
+
'''EFFDIR''' is the Effect Resource Tree for [[SimCity 4]].  The Maxis EFFDIR is located in SimCity_1.dat and has [[TGI]] ''0xEA5118B0 0xEA5118B1 0x00000001''.
  
 +
Multiple EFFDIRs can exist in one installation, as long as they all have their own IID.
 +
 +
Its [[DBPF]] 1.0/1.1/2.0/3.0 [[Type ID]] is '''EA5118B0'''
 +
 +
This article details the specification used in SimCity 4. The implementations of the EFFDIR in The Sims 2, Spore, The Sims 3 and [[SimCity (2013)]] may be vastly different than that described below.
 +
 +
==Specification==
 
The specification is as follows:
 
The specification is as follows:
 +
 +
===Header===
 +
The header calls out the version number of the file. Vanilla SC4 is 3.1, [[Rush Hour]]/Deluxe is 4.2.
 
<pre>
 
<pre>
''' Vanilla is 3.1, Rush Hour is 4.2
+
WORD - Major Version EFFDIR
WORD - Major Version EFDIR
+
WORD - Minor Version EFFDIR
WORD - Minor Version EFDIR
+
</pre>
  
'''Start Section #1 - Main Section - Terrain Independent FSHs and S3Ds'''
+
===Section 1 - Main Section - Terrain Independent FSHs and S3Ds===
 +
<pre>
 
DWORD (Number of Entries)
 
DWORD (Number of Entries)
DWORD
+
DWORD <<<--- Behavior_1, each bit represents a behavior property, see below for partial spec
 
DWORD (0x00000000) <<<---Constant
 
DWORD (0x00000000) <<<---Constant
DWORD
+
DWORD <<<--- Behavior_2, each bit represents a behavior property, see below for partial spec
 
DWORD <<<---Effect Duration Minimum
 
DWORD <<<---Effect Duration Minimum
 
DWORD <<<---Effect Duration Maximum
 
DWORD <<<---Effect Duration Maximum
Line 40: Line 51:
 
DWORD <<<---Initial X-Axis Stretch Max
 
DWORD <<<---Initial X-Axis Stretch Max
 
DWORD <<<---Initial Spin Variation Max
 
DWORD <<<---Initial Spin Variation Max
DWORD
+
DWORD <<<---Initial Rotation % (1=360 degrees), probably for FSH resources only
 
DWORD <<<---Initial Alpha Variation Max
 
DWORD <<<---Initial Alpha Variation Max
 
DWORD <<<---Initial Color Variation % (Red)
 
DWORD <<<---Initial Color Variation % (Red)
Line 46: Line 57:
 
DWORD <<<---Initial Color Variation % (Blue)
 
DWORD <<<---Initial Color Variation % (Blue)
 
DWORD (Number of reps)
 
DWORD (Number of reps)
DWORD reps
+
DWORD reps   <<<--- (Probably) specifies the number of particles generated every time the 'generator' is triggered.
 
DWORD (Number of reps) <<<---Color Adjustments Over Time (Percentage of red, green, and blue)
 
DWORD (Number of reps) <<<---Color Adjustments Over Time (Percentage of red, green, and blue)
 
12-Byte reps <<<---Float32(1st DWORD=Red, 2nd DWORD=Green, 3rd DWORD=Blue)
 
12-Byte reps <<<---Float32(1st DWORD=Red, 2nd DWORD=Green, 3rd DWORD=Blue)
Line 55: Line 66:
 
DWORD (Number of reps) <<<---X-Axis Shrink/Stretch Over Time (Percentage)
 
DWORD (Number of reps) <<<---X-Axis Shrink/Stretch Over Time (Percentage)
 
DWORD reps <<<---Float32
 
DWORD reps <<<---Float32
DWORD (Number of reps) <<<---Spin Over Time (Might Be Rotation Speed Spread[Randomized])
+
DWORD (Number of reps) <<<---Spin Over Time (Might Be Rotation Speed Spread [Randomized])
 
DWORD reps
 
DWORD reps
 
DWORD (Resource Key)  
 
DWORD (Resource Key)  
2 Bytes
+
2 Bytes <<<--- Second byte seems to affect resource texture behavior
 +
                      (If set to 5, texture transparency is set to 0%, if set to zero texture behavior is
 +
                      controlled as specified by brightness and color).
 
DWORD
 
DWORD
DWORD <<<---Direction of Travel Blur (0=none,<>0 decreasing amounts of blur)
+
DWORD <<<---Direction of Travel Blur (0=none, <>0 decreasing amounts of blur)
 
DWORD <<<---X-Axis Force (Wind)
 
DWORD <<<---X-Axis Force (Wind)
 
DWORD <<<---Z-Axis Force (Lift/Gravity)
 
DWORD <<<---Z-Axis Force (Lift/Gravity)
Line 89: Line 102:
 
DWORD (usually0x3f800000 or 0x00000000)
 
DWORD (usually0x3f800000 or 0x00000000)
 
DWORD (usually 0x3f800000=1)
 
DWORD (usually 0x3f800000=1)
DWORD (usually 0xc61c4000=-10,000)
+
DWORD (usually 0xc61c4000=-10,000) <<--- max value of terrain height range in which particle/resource should be created
DWORD (usually 0x461c4000=10,000)
+
DWORD (usually 0x461c4000=10,000) <<--- min value of terrain height range in which particle/resource should be created
DWORD (String Length)
+
DWORD (String Length) <<<--- pointer to section 13 entry (with added suffix _terrain, _water, _slave or _death)
String (Only if String Length > 0)
+
String (Only if String Length > 0)  
 
DWORD (Usually 0x00010000)
 
DWORD (Usually 0x00010000)
 
DWORD (Usually 0x3f800000=1)
 
DWORD (Usually 0x3f800000=1)
Line 119: Line 132:
 
DWORD
 
DWORD
 
DWORD
 
DWORD
DWORD
+
DWORD <<<---S3D animation frame rate (unit unknown, higher numbers increase animation speed)
 
DWORD (Number of reps) <<<---List of Resource Keys (Used to place random S3Ds)
 
DWORD (Number of reps) <<<---List of Resource Keys (Used to place random S3Ds)
 
DWORD reps <<<---Uint32
 
DWORD reps <<<---Uint32
Line 128: Line 141:
 
DWORD (0x40800000) -- End of entry
 
DWORD (0x40800000) -- End of entry
 
0x0001 - End of Section
 
0x0001 - End of Section
 +
</pre>
  
 +
====Behavior_1 Bits====
 +
*Bit 17: display on land only.
 +
*Bit 18: display on water only.
 +
*Bit 20: random location on map
 +
*Bit 24: if unset then height at which resource is displayed is absolute, otherwise it's relative to terrain height
 +
*Bit 30: probably used for steady (non moving) effects
 +
*Bit 32: unaltered (high) brightness during night.
  
'''Start Section #2 - Terrain Dependent FSHs'''
+
====Behavior_2 Bits====
 +
*Bit 22: either rotate resource with game rotation, or display texture on back face.
 +
 
 +
===Section 2 - Terrain Dependent FSHs===
 +
<pre>
 
DWORD (Number of Entries)
 
DWORD (Number of Entries)
 
DWORD
 
DWORD
Line 154: Line 179:
 
DWORD
 
DWORD
 
0x0000 - End of section
 
0x0000 - End of section
 +
</pre>
  
 
+
===Section 3 - Screen Shake===
'''Start Section #3'''
+
<pre>
 
DWORD (Number of Entries)
 
DWORD (Number of Entries)
DWORD
+
        DWORD
DWORD
+
        DWORD
DWORD (Number of reps)
+
        DWORD (Number of reps)
DWORD reps
+
                DWORD reps
DWORD (Number of reps)
+
        DWORD (Number of reps)
DWORD reps
+
                DWORD reps
5 bytes
+
        5 bytes
 
0x0000 End of Section
 
0x0000 End of Section
 +
</pre>
  
 
+
===Section 4 - Saturation and Lightness===
'''Start Section #4 - Terrain Effects? (craters and erosion)'''
+
This section contains information about game ambient saturation and lightness (e.g. as used for fireworks and lightning flash effects).
 +
<pre>
 
DWORD (Number of Entries)
 
DWORD (Number of Entries)
DWORD (Number of reps)
+
        DWORD (Number of reps) <<<--- Color variation over time
12-byte reps
+
                DWORD <<<--- Red
DWORD (Number of reps)
+
                DWORD <<<--- Green
DWORD reps
+
                DWORD <<<--- Blue
DWORD
+
        DWORD (Number of reps) <<<--- Brightness variation over time
 +
                DWORD reps <<<--- Brightness (negative numbers make screen go dark)
 +
        DWORD <<<--- Duration
 +
</pre>
  
 
+
===Section 5 - Brush (Cursor) Exemplars (Terrain Modelling) ===
'''Start Section #5 - Brush (Cursor) Exemplars'''
+
<pre>
 
DWORD (Number of entries)
 
DWORD (Number of entries)
 
Two bytes
 
Two bytes
Line 189: Line 220:
 
DWORD
 
DWORD
 
DWORD
 
DWORD
 +
</pre>
 +
In Section 12, there are no direct references to entries in this section. References are indirect via the corresponding entry in Section 4. Any reference from Section 12 to and entry in Section 4 also refers to the same entry in Section 5, if any.
  
 
+
===Section 6 - LUA Occupant Groups, Generators, and Attractors===
'''Start Section #6 - LUA Occupant Groups, Generators, and Attractors'''
+
<pre>
 
DWORD (Number of Entries)
 
DWORD (Number of Entries)
 
Two bytes <<<---Always 0x0000
 
Two bytes <<<---Always 0x0000
Line 197: Line 230:
 
String <<<---Points to an entry in the LUA files
 
String <<<---Points to an entry in the LUA files
 
1 byte <<<---Type ID: 00=Attractor or Generator, 01=Occupant_group
 
1 byte <<<---Type ID: 00=Attractor or Generator, 01=Occupant_group
 +
</pre>
  
 
+
===Section 7 - Destructive Effect Properties===
'''Start Section #7 -- Earthquakes(Destructive)?+'''
+
<pre>
 
DWORD (Number of Entries)
 
DWORD (Number of Entries)
 
22 Bytes
 
22 Bytes
Line 212: Line 246:
 
DWORD
 
DWORD
 
8 Bytes
 
8 Bytes
 +
</pre>
  
 
+
===Section 8 - Randomized Picks===
'''Start Section #8 -- Randomized Picks'''
+
<pre>
 
DWORD (Number of Entries)
 
DWORD (Number of Entries)
 
Two bytes
 
Two bytes
Line 223: Line 258:
 
String <<<---Used to Redirect to Another Entry in Section #13
 
String <<<---Used to Redirect to Another Entry in Section #13
 
DWORD
 
DWORD
 +
</pre>
  
 
+
===Section 9 - Sounds===
'''Start Section #9 - Sounds'''
+
<pre>
 
DWORD (Number of Entries)
 
DWORD (Number of Entries)
 
6 Bytes <<<---Always 0x000000000000
 
6 Bytes <<<---Always 0x000000000000
Line 231: Line 267:
 
DWORD  
 
DWORD  
 
DWORD <<<---Always 0x00000000
 
DWORD <<<---Always 0x00000000
 +
</pre>
  
 
+
===Section 10 - Effective Radius?===
'''Begin Section #10''' - Effective Radius? (meteor_shadow_water''', tornado_scuff_terrain, ufo_ma_topbluering''')
+
This section appears to be related to effective radius (meteor_shadow_water, tornado_scuff_terrain, ufo_ma_topbluering).
 +
<pre>
 
DWORD (Number of entries)
 
DWORD (Number of entries)
 
DWORD
 
DWORD
Line 239: Line 277:
 
DWORD
 
DWORD
 
0x0001 (End of section)
 
0x0001 (End of section)
 +
</pre>
  
 
+
===Section 11 - UDI Collisions?===
'''Start section #11 - UDI Collisions?
+
<pre>
 
DWORD (number of entries)
 
DWORD (number of entries)
 
DWORD
 
DWORD
Line 255: Line 294:
 
DWORD
 
DWORD
 
0x0002 (End of section)
 
0x0002 (End of section)
 +
</pre>
  
 
+
===Section 12 - Main Script Index===
'''Start section #12 - Main Script Index'''
+
<pre>
 
DWORD (Number of Entries)
 
DWORD (Number of Entries)
DWORD
+
DWORD <<<---If set to 1: resource only shows in North rotation, if set to 2: resource shows in all rotations
 
DWORD (0x01, 0x03, or 0x05 only)
 
DWORD (0x01, 0x03, or 0x05 only)
 
DWORD (Number of Primary Indices)
 
DWORD (Number of Primary Indices)
Line 269: Line 309:
 
8 Bytes
 
8 Bytes
 
DWORD
 
DWORD
DWORD
+
DWORD  
DWORD
+
DWORD <<<---Probably X-Axis Rotation
DWORD
+
DWORD <<<---Probably Z-Axis Rotation
DWORD
+
DWORD <<<---Probably Y-Axis Rotation
 
DWORD
 
DWORD
 
DWORD <<<---X-Axis Shift (Float32)
 
DWORD <<<---X-Axis Shift (Float32)
 
DWORD <<<---Z-Axis Shift (Float32)
 
DWORD <<<---Z-Axis Shift (Float32)
 
DWORD <<<---Y-Axis Shift (Float32)
 
DWORD <<<---Y-Axis Shift (Float32)
DWORD
+
DWORD <<<---Probably multiplier for x,y,z axis shift as defined above
10 Bytes
+
10 Bytes <<<---First byte represents upper limit, and last byte the lower limit of
DWORD
+
                              the game zoom range in which the resource referred to appears.
DWORD
+
DWORD <<<---Probably related to zoom level dependent scaling factor
DWORD
+
DWORD <<<---Probably related to zoom level dependent scaling factor
DWORD
+
DWORD <<<---Probably related to zoom level dependent scaling factor
2 Bytes (Random) <<<---0x0000=Always Appears, Non-Zero=Randomized chance (Can be set into groups with this number)
+
DWORD <<<---Probably related to zoom level dependent scaling factor
 +
2 Bytes (Random) <<<---0x0000=Always Appears, Non-Zero=Randomized chance
 +
                                      (Can be set into groups with this number)
 
2 Bytes (Random Chance) <<<---% Chance that effect will appear
 
2 Bytes (Random Chance) <<<---% Chance that effect will appear
 
DWORD (Index Key) <<<---Points to entry in appropriate section
 
DWORD (Index Key) <<<---Points to entry in appropriate section
DWORD (Number of Secondary Indices) <<<---Screen Shake Indices??
+
DWORD (Number of Secondary Indices) <<<--- Redirection to another section (usually 3 or 4)
DWORD
+
DWORD <<<--- Section identifier, usually 3 or 4
DWORD (String Length)  
+
DWORD (String Length) <<<--- Identifier, can be anything
 
String (Only if String Length > 0)
 
String (Only if String Length > 0)
 
DWORD
 
DWORD
DWORD (Index Key)
+
DWORD (Index Key) <<<--- Index key in section
 
DWORD (0x00000000)
 
DWORD (0x00000000)
 
DWORD (0x00000000)
 
DWORD (0x00000000)
 
2 DWORDs (0xCCCCCCCC or 0x00000000 each)
 
2 DWORDs (0xCCCCCCCC or 0x00000000 each)
 +
</pre>
  
 
+
===Section 13 - Main Effect Directory===
'''Start Section #13 - Main Effect Directory'''
+
<pre>
 
DWORD (String Length)
 
DWORD (String Length)
 
String
 
String
 
DWORD (Index Key) <<<---Points to entry in section #12
 
DWORD (Index Key) <<<---Points to entry in section #12
 
2 Bytes - End of Section
 
2 Bytes - End of Section
 +
</pre>
  
'''13.5 area'''
+
====13.5 area====
 +
<pre>
 
BYTE
 
BYTE
 
DWORD
 
DWORD
Line 315: Line 360:
 
FLOAT
 
FLOAT
 
FLOAT
 
FLOAT
 +
</pre>
  
 
+
===Section 14 - Tools FX Linking?===
'''Start Section #14 - Tools FX Linking?''' (Relates to Sections 3 and 5 only)
+
This section appears to relate to Sections 3 and 5 only.
 +
<pre>
 
DWORD (Number of entries)
 
DWORD (Number of entries)
 
DWORD (String Length)
 
DWORD (String Length)
Line 324: Line 371:
 
DWORD (Instance Property) <<<---Call from exe or exemplar
 
DWORD (Instance Property) <<<---Call from exe or exemplar
 
0x0000 End of section
 
0x0000 End of section
 +
</pre>
  
 
+
===Section 15 - Class ID Calls===
'''Start Final Section #15 - Class ID Calls'''
+
<pre>
 
DWORD (Number of Entries)
 
DWORD (Number of Entries)
 
DWORD (ClassID) <<<---Class ID Call (from EXE most probably)
 
DWORD (ClassID) <<<---Class ID Call (from EXE most probably)
 
DWORD (String Length)
 
DWORD (String Length)
 
String <<<---Points to an entry in section #13
 
String <<<---Points to an entry in section #13
 +
</pre>
  
 
+
==Index Flags==
''Index Flags:
+
<pre>
 
0x00 - Section #1
 
0x00 - Section #1
 
0x01 - Section #2
 
0x01 - Section #2
 
0x02 - Redirection - String Points to an entry in section #13
 
0x02 - Redirection - String Points to an entry in section #13
0x03 - Section #4
+
0x03 - Section #4 and Section#5
 
0x04 - Section #6
 
0x04 - Section #6
 
0x05 - Section #7
 
0x05 - Section #7
Line 348: Line 397:
  
 
{{navbox/FORMAT}}
 
{{navbox/FORMAT}}
 +
{{NAVBOX/SimCityFORMAT}}
 
[[Category:File Formats/SC4]]
 
[[Category:File Formats/SC4]]
 
[[Category:MTS2]]
 
[[Category:MTS2]]
 +
[[Category:File Formats/SC2013]]

Latest revision as of 19:54, 8 August 2019


EFFDIR is the Effect Resource Tree for SimCity 4. The Maxis EFFDIR is located in SimCity_1.dat and has TGI 0xEA5118B0 0xEA5118B1 0x00000001.

Multiple EFFDIRs can exist in one installation, as long as they all have their own IID.

Its DBPF 1.0/1.1/2.0/3.0 Type ID is EA5118B0

This article details the specification used in SimCity 4. The implementations of the EFFDIR in The Sims 2, Spore, The Sims 3 and SimCity (2013) may be vastly different than that described below.

Specification

The specification is as follows:

Header

The header calls out the version number of the file. Vanilla SC4 is 3.1, Rush Hour/Deluxe is 4.2.

WORD - Major Version EFFDIR 
WORD - Minor Version EFFDIR

Section 1 - Main Section - Terrain Independent FSHs and S3Ds

DWORD (Number of Entries)
	DWORD <<<--- Behavior_1, each bit represents a behavior property, see below for partial spec
	DWORD (0x00000000) <<<---Constant
	DWORD <<<--- Behavior_2, each bit represents a behavior property, see below for partial spec
	DWORD <<<---Effect Duration Minimum
	DWORD <<<---Effect Duration Maximum
	DWORD <<<---Number Released At High Detail
	DWORD <<<---Repeat flag (=0 runs continuously, >0 runs once)
	DWORD
	DWORD
	DWORD
	DWORD <<<---Time Delay Minimum
	DWORD <<<---Time Delay Maximum
	DWORD <<<---X-Axis Push Minimum
	DWORD <<<---Z-Axis Push Minimum
	DWORD <<<---Y-Axis Push Minimum
	DWORD <<<---X-Axis Push Maximum
	DWORD <<<---Z-Axis Push Maximum
	DWORD <<<---Y-Axis Push Maximum
	DWORD <<<---Initial Velocity Minimum
	DWORD <<<---Initial Velocity Maximum
	DWORD <<<---Initial X-Axis Shift Minimum
	DWORD <<<---Initial Z-Axis Shift Minimum
	DWORD <<<---Initial Y-Axis Shift Minimum
	DWORD <<<---Initial X-Axis Shift Maximum
	DWORD <<<---Initial Z-Axis Shift Maximum
	DWORD <<<---Initial Y-Axis Shift Maximum
	DWORD <<<---Initial Size Variation %
	DWORD <<<---Initial X-Axis Stretch Max
	DWORD <<<---Initial Spin Variation Max
	DWORD <<<---Initial Rotation % (1=360 degrees), probably for FSH resources only
	DWORD <<<---Initial Alpha Variation Max
	DWORD <<<---Initial Color Variation % (Red)
	DWORD <<<---Initial Color Variation % (Green)
	DWORD <<<---Initial Color Variation % (Blue)
	DWORD (Number of reps)
		DWORD reps   <<<--- (Probably) specifies the number of particles generated every time the 'generator' is triggered.
	DWORD (Number of reps) <<<---Color Adjustments Over Time (Percentage of red, green, and blue)
		12-Byte reps <<<---Float32(1st DWORD=Red, 2nd DWORD=Green, 3rd DWORD=Blue)
	DWORD (Number of reps) <<<---Brightness Adjustments Over Time (Percentage)
		DWORD reps <<<---Float32
	DWORD (Number of reps) <<<---Size Over Time (Percentage)
		DWORD reps <<<---Float32
	DWORD (Number of reps) <<<---X-Axis Shrink/Stretch Over Time (Percentage)
		DWORD reps <<<---Float32
	DWORD (Number of reps) <<<---Spin Over Time (Might Be Rotation Speed Spread [Randomized])
		DWORD reps
	DWORD (Resource Key) 
	2 Bytes <<<--- Second byte seems to affect resource texture behavior
                      (If set to 5, texture transparency is set to 0%, if set to zero texture behavior is
                       controlled as specified by brightness and color).
	DWORD
	DWORD <<<---Direction of Travel Blur (0=none, <>0 decreasing amounts of blur)
	DWORD <<<---X-Axis Force (Wind)
	DWORD <<<---Z-Axis Force (Lift/Gravity)
	DWORD <<<---Y-Axis Force (Wind)
	DWORD <<<---Carry
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD 
	DWORD <<<---Spiral Travel Pattern Maximum
	DWORD (Number of reps)
		28-byte reps
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD (Number of reps)
		DWORD reps
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD (usually 0xce6e6b28=-1,000,000,000)
	DWORD (usually0x3f800000 or 0x00000000)
	DWORD (usually 0x3f800000=1)
	DWORD (usually 0xc61c4000=-10,000) <<--- max value of terrain height range in which particle/resource should be created
	DWORD (usually 0x461c4000=10,000)  <<--- min value of terrain height range in which particle/resource should be created
	DWORD (String Length) <<<--- pointer to section 13 entry (with added suffix _terrain, _water, _slave or _death)
		String (Only if String Length > 0) 
	DWORD (Usually 0x00010000)
	DWORD (Usually 0x3f800000=1)
	DWORD (usually 0x40a00000=5)
	DWORD (usually 0x40a00000=5)
	DWORD (usually 0x42480000=50)
	DWORD (usually 0x42480000=50)
	DWORD (usually 0x3dcccccc=0.1)
	DWORD (usually 0x3e4ccccd=0.2)
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD (Number of reps)
		DWORD reps
	DWORD
	DWORD
	DWORD (Number of reps) <<<---Coordinate System For Movement
		32-byte reps <<<---8xFloat32(X,Z,Y,X,Z,Y,Sequence Number, Sequence Number)
	DWORD
	DWORD (Number of sub-entries)
		DWORD (String Length)	
		String (Only if String Length > 0)
		DWORD
	DWORD
	DWORD <<<---S3D animation frame rate (unit unknown, higher numbers increase animation speed)
	DWORD (Number of reps) <<<---List of Resource Keys (Used to place random S3Ds)
		DWORD reps <<<---Uint32
	DWORD
	DWORD
	DWORD (Number of reps)
		DWORD reps
	DWORD (0x40800000) -- End of entry
0x0001 - End of Section

Behavior_1 Bits

  • Bit 17: display on land only.
  • Bit 18: display on water only.
  • Bit 20: random location on map
  • Bit 24: if unset then height at which resource is displayed is absolute, otherwise it's relative to terrain height
  • Bit 30: probably used for steady (non moving) effects
  • Bit 32: unaltered (high) brightness during night.

Behavior_2 Bits

  • Bit 22: either rotate resource with game rotation, or display texture on back face.

Section 2 - Terrain Dependent FSHs

DWORD (Number of Entries)
	DWORD
	DWORD (Resource Key)
	1 Byte <<<---Inverse Flag: 00=Normal, 01=No Inverse (i.e. hidden by obstructions), 03=Inverse (Viewed when behind obstruction)
	1 Byte <<<---Repeat Flag:  01=Repeat Continuously, 02=Run Once-Then Disappear, 03+=Run Once-Then Hold
	DWORD <<<---Effect Speed (Higher numbers run slower)
	DWORD (Number of reps) <<<---Rotation Over Time
		DWORD reps <<<---Float32
	DWORD (Number of reps) <<<---Size Adjustments Over Time (Percentage)
		DWORD reps <<<---Float32
	DWORD (Number of reps) <<<---Alpha Adjustments Over Time (Percentage)
		DWORD reps <<<---Float32
	DWORD (Number of reps) <<<---Color Adjustments Over Time (Percentage of red, green, and blue)
		12-byte reps <<<---Float32(1st DWORD=Red, 2nd DWORD=Green, 3rd DWORD=Blue)
	DWORD (Number of reps) <<<---Always 0x00000001
		DWORD reps <<<---Y-Axis Stretch Adjustments Over Time
	DWORD <<<---Initial Intensity Variation
	DWORD <<<---Initial Size Variation
	DWORD
	DWORD
	DWORD
	DWORD
0x0000 - End of section

Section 3 - Screen Shake

DWORD (Number of Entries)
        DWORD
        DWORD
        DWORD (Number of reps)
                DWORD reps
        DWORD (Number of reps)
                DWORD reps
        5 bytes
0x0000 End of Section

Section 4 - Saturation and Lightness

This section contains information about game ambient saturation and lightness (e.g. as used for fireworks and lightning flash effects).

DWORD (Number of Entries)
        DWORD (Number of reps) <<<--- Color variation over time
                DWORD <<<--- Red
                DWORD <<<--- Green
                DWORD <<<--- Blue
        DWORD (Number of reps) <<<--- Brightness variation over time
                DWORD reps <<<--- Brightness (negative numbers make screen go dark)
        DWORD <<<--- Duration

Section 5 - Brush (Cursor) Exemplars (Terrain Modelling)

DWORD (Number of entries)
	Two bytes
	DWORD (Resource Key)
	DWORD
	DWORD
	5 Bytes
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD

In Section 12, there are no direct references to entries in this section. References are indirect via the corresponding entry in Section 4. Any reference from Section 12 to and entry in Section 4 also refers to the same entry in Section 5, if any.

Section 6 - LUA Occupant Groups, Generators, and Attractors

DWORD (Number of Entries)
	Two bytes <<<---Always 0x0000
	DWORD (Length of string)
		String <<<---Points to an entry in the LUA files
	1 byte <<<---Type ID: 00=Attractor or Generator, 01=Occupant_group

Section 7 - Destructive Effect Properties

DWORD (Number of Entries)
	22 Bytes
	DWORD
	4 Bytes
	DWORD
	8 Bytes
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD
	8 Bytes

Section 8 - Randomized Picks

DWORD (Number of Entries)
	Two bytes
	DWORD (Number of sub-entries)
		DWORD
		DWORD
		DWORD (String Length)
			String <<<---Used to Redirect to Another Entry in Section #13
	DWORD

Section 9 - Sounds

DWORD (Number of Entries)
	6 Bytes <<<---Always 0x000000000000
	DWORD (Resource Key)
	DWORD 
	DWORD <<<---Always 0x00000000

Section 10 - Effective Radius?

This section appears to be related to effective radius (meteor_shadow_water, tornado_scuff_terrain, ufo_ma_topbluering).

DWORD (Number of entries)
	DWORD
	DWORD
	DWORD
0x0001 (End of section)

Section 11 - UDI Collisions?

DWORD (number of entries)
	DWORD
	DWORD (String Length)
		String (Only if String Length > 0)
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD
	DWORD
0x0002 (End of section)

Section 12 - Main Script Index

DWORD (Number of Entries)
	DWORD <<<---If set to 1: resource only shows in North rotation, if set to 2: resource shows in all rotations
	DWORD (0x01, 0x03, or 0x05 only)
	DWORD (Number of Primary Indices)
		DWORD (String Length)
			String (Only if String Length > 0)
		Byte (Index Flag) <<<---Indicates which section the Index Key belongs to (See notes below)
		DWORD
		DWORD
		8 Bytes
		DWORD
		DWORD 
		DWORD <<<---Probably X-Axis Rotation
		DWORD <<<---Probably Z-Axis Rotation
		DWORD <<<---Probably Y-Axis Rotation
		DWORD
		DWORD <<<---X-Axis Shift (Float32)
		DWORD <<<---Z-Axis Shift (Float32)
		DWORD <<<---Y-Axis Shift (Float32)
		DWORD <<<---Probably multiplier for x,y,z axis shift as defined above
		10 Bytes <<<---First byte represents upper limit, and last byte the lower limit of
                               the game zoom range in which the resource referred to appears.
		DWORD <<<---Probably related to zoom level dependent scaling factor
		DWORD <<<---Probably related to zoom level dependent scaling factor
		DWORD <<<---Probably related to zoom level dependent scaling factor
		DWORD <<<---Probably related to zoom level dependent scaling factor
		2 Bytes (Random) <<<---0x0000=Always Appears, Non-Zero=Randomized chance
                                       (Can be set into groups with this number)
		2 Bytes (Random Chance) <<<---% Chance that effect will appear
		DWORD (Index Key) <<<---Points to entry in appropriate section
	DWORD (Number of Secondary Indices) <<<--- Redirection to another section (usually 3 or 4)
		DWORD <<<--- Section identifier, usually 3 or 4
		DWORD (String Length) <<<--- Identifier, can be anything 
			String (Only if String Length > 0)
		DWORD
		DWORD (Index Key) <<<--- Index key in section
	DWORD (0x00000000)
	DWORD (0x00000000)
	2 DWORDs (0xCCCCCCCC or 0x00000000 each)

Section 13 - Main Effect Directory

	DWORD (String Length)
		String
	DWORD (Index Key) <<<---Points to entry in section #12
2 Bytes - End of Section

13.5 area

BYTE
DWORD
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT
FLOAT

Section 14 - Tools FX Linking?

This section appears to relate to Sections 3 and 5 only.

DWORD (Number of entries)
	DWORD (String Length)
		String <<<---Points to an entry in section #13
	DWORD (Group Property) <<<---Call from exe or exemplar
	DWORD (Instance Property) <<<---Call from exe or exemplar
0x0000 End of section

Section 15 - Class ID Calls

DWORD (Number of Entries)
	DWORD (ClassID) <<<---Class ID Call (from EXE most probably)
	DWORD (String Length)
		String <<<---Points to an entry in section #13

Index Flags

0x00 - Section #1
0x01 - Section #2
0x02 - Redirection - String Points to an entry in section #13
0x03 - Section #4 and Section#5
0x04 - Section #6
0x05 - Section #7
0x06 - Section #8
0x07 - Section #9
0x08 - Section #10
0x10 - Section #11