Difference between revisions of "ELSC (File Format)"
From Retro Modding Wiki
(Created page with "The '''ELSC format''' is used for particle electric data in the Prime series. {{researchmajor|reason=There is nothing known about this format.}} Category:File Formats ...") |
(→Properties) |
||
(10 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | The '''ELSC | + | {{research|1|Properties beyond MP1 need to be discovered and documented}} |
+ | The '''ELSC''' [[Particle Script|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 [[wikipedia:Bézier curve|Bézier curve]] is subdivided into segments. |
+ | The central vertices are then displaced using a [[wikipedia:Fractal|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|particle script]] | ||
+ | file tagged with <code>ELSM</code>. Any of the following properties are loaded into a | ||
+ | ''description'' class for constructing an arbitrary number of ''particle generators''. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! FourCC | ||
+ | ! Type | ||
+ | ! Description | ||
+ | ! Scope | ||
+ | ! Notes | ||
+ | ! MP1 | ||
+ | ! MP2 | ||
+ | ! MP3 | ||
+ | ! DKCR | ||
+ | ! DKCTF | ||
+ | |- | ||
+ | {{ParticlePropertyRow|LIFE|IntElement|Particle System Lifetime|System Init|Count of frames to emit new particle instances|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|SLIF|IntElement|Segment Lifetime|Particle Creation|Count of frames for newly generated instance to last|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|GRAT|RealElement|Generation Rate|System Update|Count of particles to generate per frame; remainder is accumulated across updates|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|SCNT|IntElement|Instance Count|System Init|Maximum count of particle instances and child generators for system|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|SSEG|IntElement|Segment Count|System Init|Maximum count of line segments per instance|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|COLR|ColorElement|Swoosh Color|Particle Creation and Update|Modulation color evaluated for swoosh-based instances|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|IEMT|EmitterElement|Initial Emitter|Particle Creation|Position source for instance start-point; Velocity is used to form Bézier points to curve instance|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|FEMT|EmitterElement|Final Emitter|Particle Creation|Position source for instance end-point; Velocity is used to form Bézier points to curve instance|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|AMPL|RealElement|Length Amplitude|Particle Creation|Randomized coefficient of fractal displacement as product of recursive segment length|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|AMPD|RealElement|Direct Amplitude|Particle Creation|Separately randomized coefficient of fractal displacement|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|LWD1|RealElement|Line Width 1|Particle Creation and Update|Enables line 1 (overdrawn with same verts) and specifies its width in 480p pixels|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|LWD2|RealElement|Line Width 2|Particle Creation and Update|Enables line 2 (overdrawn with same verts) and specifies its width in 480p pixels|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|LWD3|RealElement|Line Width 3|Particle Creation and Update|Enables line 3 (overdrawn with same verts) and specifies its width in 480p pixels|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|LCL1|ColorElement|Line Color 1|Particle Creation and Update|Specifies line 1's color|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|LCL2|ColorElement|Line Color 1|Particle Creation and Update|Specifies line 2's color|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|LCL3|ColorElement|Line Color 1|Particle Creation and Update|Specifies line 3's color|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|SSWH|[[SWHC (File Format)|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|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|GPSM|[[PART (File Format)|PART]]|Start Child Particle|System Init|Draw particle system positioned at instance's start-point|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|EPSM|[[PART (File Format)|PART]]|End Child Particle|System Init|Draw particle system positioned at instance's end-point|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | {{ParticlePropertyRow|ZERY|bool|Zero Y|Particle Creation|Zero Y component of newly created particle vertices|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
+ | |} | ||
[[Category:File Formats]] | [[Category:File Formats]] |
Latest revision as of 00:08, 11 June 2017
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 | ✔ | ✖ | ✖ | ✖ | ✖ |