ELSC (File Format)
This file format is almost completely documented Properties beyond MP1 need to be discovered and documented |
The ELSC particle script format is used to build electrical effects in the Metroid Prime series. Electrical effects are commonly used to dynamically draw lightning and electrical arcs.
An electrical particle instance is a single line subdivided into segments. Whenever a new instance is generated, a Bézier curve is subdivided into segments. The segment's central vertices are displaced using a random fractal algorithm. The instance's color and line-width is updated over its lifetime.
Properties
Particle generator properties are assembled into a particle script
file tagged with ELSM
. Any of the following properties are loaded into a
description class for constructing an arbitrary number of particle generators.
FourCC | Type | Description | Scope | Notes | MP1 | MP2 | MP3 | DKCR | DKCTF |
---|---|---|---|---|---|---|---|---|---|
LIFE | IntElement | Particle System Lifetime | System Init | Count of frames to emit new particle instances | ✔ | ✖ | ✖ | ✖ | ✖ |
SLIF | IntElement | Segment Lifetime | Particle Creation | Count of frames for newly generated instance to last | ✔ | ✖ | ✖ | ✖ | ✖ |
GRAT | RealElement | Generation Rate | System Update | Count of particles to generate per frame; remainder is accumulated across updates | ✔ | ✖ | ✖ | ✖ | ✖ |
SCNT | IntElement | Instance Count | System Init | Maximum count of particle instances and child generators for system | ✔ | ✖ | ✖ | ✖ | ✖ |
SSEG | IntElement | Segment Count | System Init | Maximum count of line segments per instance | ✔ | ✖ | ✖ | ✖ | ✖ |
COLR | ColorElement | Swoosh Color | Particle Creation and Update | Modulation color evaluated for swoosh-based instances | ✔ | ✖ | ✖ | ✖ | ✖ |
IEMT | EmitterElement | Initial Emitter | Particle Creation | Position source for instance start-point; Velocity is used to form Bézier points to curve instance | ✔ | ✖ | ✖ | ✖ | ✖ |
FEMT | EmitterElement | Final Emitter | Particle Creation | Position source for instance end-point; Velocity is used to form Bézier points to curve instance | ✔ | ✖ | ✖ | ✖ | ✖ |
AMPL | RealElement | Length Amplitude | Particle Creation | Randomized coefficient of fractal displacement as product of segment count | ✔ | ✖ | ✖ | ✖ | ✖ |
AMPD | RealElement | Direct Amplitude | Particle Creation | Separately randomized coefficient of fractal displacement | ✔ | ✖ | ✖ | ✖ | ✖ |
LWD1 | RealElement | Line Width 1 | Particle Creation and Update | Enables line 1 (overdrawn with same verts) and specifies its width in 480p pixels | ✔ | ✖ | ✖ | ✖ | ✖ |
LWD2 | RealElement | Line Width 2 | Particle Creation and Update | Enables line 2 (overdrawn with same verts) and specifies its width in 480p pixels | ✔ | ✖ | ✖ | ✖ | ✖ |
LWD3 | RealElement | Line Width 3 | Particle Creation and Update | Enables line 3 (overdrawn with same verts) and specifies its width in 480p pixels | ✔ | ✖ | ✖ | ✖ | ✖ |
LCL1 | ColorElement | Line Color 1 | Particle Creation and Update | Specifies line 1's color | ✔ | ✖ | ✖ | ✖ | ✖ |
LCL2 | ColorElement | Line Color 1 | Particle Creation and Update | Specifies line 2's color | ✔ | ✖ | ✖ | ✖ | ✖ |
LCL3 | ColorElement | Line Color 1 | Particle Creation and Update | Specifies line 3's color | ✔ | ✖ | ✖ | ✖ | ✖ |
SSWH | SWHC | Child Swoosh | System Init | Use swoosh system to draw effect; computed fractal points are set into swoosh's history; Omitting LWD* properties will only draw the swoosh | ✔ | ✖ | ✖ | ✖ | ✖ |
GPSM | PART | Start Child Particle | System Init | Draw particle system positioned at instance's start-point | ✔ | ✖ | ✖ | ✖ | ✖ |
EPSM | PART | End Child Particle | System Init | Draw particle system positioned at instance's end-point | ✔ | ✖ | ✖ | ✖ | ✖ |
ZERY | bool | Zero Y | Particle Creation | Zero Y component of newly created particle vertices | ✔ | ✖ | ✖ | ✖ | ✖ |