EFFDIR
The information in this article was copied from the SimsWiki and may be outdated. This article has not been reviewed for technical accuracy or updated knowledge on this topic. If you are knowledgeable enough on the topic to review the article, please do so and remove this label. (more info). |
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.
Contents
- 1 Specification
- 1.1 Header
- 1.2 Section 1 - Main Section - Terrain Independent FSHs and S3Ds
- 1.3 Section 2 - Terrain Dependent FSHs
- 1.4 Section 3 - Screen Shake
- 1.5 Section 4 - Saturation and Lightness
- 1.6 Section 5 - Brush (Cursor) Exemplars (Terrain Modelling)
- 1.7 Section 6 - LUA Occupant Groups, Generators, and Attractors
- 1.8 Section 7 - Destructive Effect Properties
- 1.9 Section 8 - Randomized Picks
- 1.10 Section 9 - Sounds
- 1.11 Section 10 - Effective Radius?
- 1.12 Section 11 - UDI Collisions?
- 1.13 Section 12 - Main Script Index
- 1.14 Section 13 - Main Effect Directory
- 1.15 Section 14 - Tools FX Linking?
- 1.16 Section 15 - Class ID Calls
- 2 Index Flags
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
|
|