JParticle
JParticle (abbreviated as "JPA") is Nintendo's included as part of JSYSTEM. There are a number of different versions of JParticle in existence, each with quite different file formats. Different versions can be identified by the first eight hex bytes of the JPA files.
Game | JPA Version |
---|---|
Super Mario Sunshine | JEFFjpa1 |
The Legend of Zelda: The Wind Waker | JPAC1-00 |
Mario Kart: Double Dash!! | JPAC2-10 |
Pikmin 2 | JPAC2-10 |
The Legend of Zelda: Twilight Princess | JPAC2-10 |
Super Mario Galaxy | JPAC2-10 |
Super Mario Galaxy 2 | JPAC2-10 |
The Legend of Zelda: Skyward Sword | JPAC2-11 |
General overview of JParticle
JParticle is a particle system, which means that it has a basic physics simulation of points in 3D space, which can then be drawn using a number of different shapes and settings. A single JParticle resource can contain an emitter, which describes how particles spawn, multiple kinds of physics fields that the particle movement will be influenced by, along with configuration for how to draw the particles over the course of their lifetime.
Each JParticle resource is made up of several blocks.
Block Magic | Name | Description |
---|---|---|
BEM1 | Base Emitter | Settings for the emitter object, which is a volume the particles will spawn inside. |
BSP1 | Basic Shape | Basic settings for how to draw the particle. |
ESP1 | Extra Shape | Extra settings for how to draw the particle. |
ETX1 | Extra Texture | Settings for configuring two or three textures on a particle. |
SSP1 | Sweep Shape | Settings for children particles, which are spawned off the main particle. |
FLD1 | Field | Different physics fields that the particles can move through. |
KFA1 | Key Frame Animation | Describes key-framed curved tracks that can affect various properties of the emitter over time. |
TDB1 | Texture DataBase | Texture references from the archive. |
Most settings are the same between JPA versions, however packing may differ. Certain options and settings were also removed in JPA2; presumably these features saw little usage and the developers decided not to support the extra features.