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.

Whenever a new particle instance is generated, a Bézier curve is subdivided into segments. The central vertices are then 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 recursive segment length
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