Editor's note: The information on this page was gathered from game.jpc. This page is not finished.
JPC files represent an indexed collection of JPA files, and contain information on the particle systems of Pikmin 2, as well as BTI images for the particles. A list of particle emitters and textures can be found here.
All field names used in this guide are sourced from Pikhacker's JPC tool https://github.com/PikHacker/jpc_conv. This tool converts JPC files to readable and easy to edit JSON files which can then be reconverted back to a JPC file.
| Fields |
Description
|
format |
JParticle Archive format version, JPAC2-10.
|
Resource_Count |
Total number of particle effects in this archive.
|
Texture_Count |
Total number of BTI format textures available for particles.
|
Particle header[edit]
| Fields |
Description
|
Index |
Particle effect ID in the resource.
|
ObjCount |
Number of blocks in this particle effect.
|
FieldCount |
Number of FLD1 (field) blocks.
|
KeyCount |
Number of KFA1 (keyframe animation) blocks.
|
unk1 |
Number of texture index values in TDB1 section.
|
unk2 |
Unused padding byte.
|
BEM1 Block (Base Emitter) - Core Particle Generation[edit]
The special BEM1 flags used in emitFlags.
| Volume Type |
Description
|
0x000 |
Cube emission
|
0x100 |
Sphere emission (particles spawn from spherical volume)
|
0x200 |
Cylinder emission (particles spawn from cylindrical volume)
|
0x300 |
Torus emission (particles spawn in a torus)
|
0x400 |
Point emission (particles spawn from single point)
|
0x500 |
Circle emission (particles spawn from a circle)
|
0x600 |
Line emission (particles spawn from a line)
|
| Extra Flags |
Description
|
0x1 |
"Fixed Density"
|
0x2 |
"Fixed Interval"
|
0x4 |
"Inherit Scale"
|
0x8 |
"Follow Emitter"
|
0x10 |
"Follow Emitter Child"
|
BEM1 fields.
| Fields |
Type |
Description
|
emitFlags |
Flags |
Combination of a Volume type and any extra flags from the above tables.
|
unk |
Flags |
"ResUserWork". Appears to affect culling radius and global color changes?
|
emitterScale |
Emitter Positioning |
Scales the entire emitter volume (X/Y/Z multipliers).
|
emitterTranslation |
Emitter Positioning |
World position offset of the emitter.
|
emitterDirection |
Emitter Positioning |
Direction vector for emission (uses s16 format, 32767 = max positive).
|
initialVelOmni |
Initial Velocity System |
Omnidirectional velocity (random sphere direction).
|
initialVelAxis |
Initial Velocity System |
Velocity along emitter's direction axis.
|
initialVelRndm |
Initial Velocity System |
Random variation applied to velocity.
|
initialVelDir |
Initial Velocity System |
Directional velocity magnitude.
|
spread |
Initial Velocity System |
Cone spread angle for directional emission (0.0-1.0).
|
initialVelDir |
Initial Velocity System |
Ratio between different velocity components.
|
rate |
Emission Rate & Timing |
Base emission rate (particles per frame).
|
rateRndm |
Emission Rate & Timing |
Random variation in emission rate (0.0-1.0).
|
lifeTimeRndm |
Emission Rate & Timing |
Random variation in lifetime (0.0-1.0).
|
volumeSweep |
Volume Parameters |
Angular sweep for circular/spherical emission (0.0-1.0).
|
volumeMinRad |
Volume Parameters |
Minimum radius ratio for hollow shapes (0.0-1.0).
|
airResist |
Physics |
Air resistance coefficient (1.0 = no resistance, <1.0 = drag).
|
momentRndm |
Physics |
Random momentum variation applied to particles.
|
emitterRotX/Y/Z |
Emitter Positioning |
Rotation angles in degrees for the emitter orientation.
|
maxFrame |
Emission Rate & Timing |
Maximum frames emitter stays active (0 = infinite).
|
startFrame |
Emission Rate & Timing |
Frame delay before emission begins.
|
lifeTime |
Emission Rate & Timing |
Particle lifetime in frames.
|
volumeSize |
Volume Parameters |
Angular sweep for circular/spherical emission (0.0-1.0).
|
divNumber |
Volume Parameters |
Subdivision count for fixed interval emission.
|
rateStep |
Emission Rate & Timing |
Frame interval for rate stepping.
|
FLD1 Block (Field Forces) - Physics Effects[edit]
The special FLD1 flags used in flags.
| Add Type |
Description
|
0x000 |
Acceleration
|
0x100 |
Base Velocity
|
0x200 |
Velocity
|
| Field Type |
Description
|
0x0 |
Gravity
|
0x1 |
Air
|
0x2 |
Magnet
|
0x3 |
Newton
|
0x4 |
Vortex
|
0x5 |
Random
|
0x6 |
Drag
|
0x7 |
Convection
|
0x8 |
Spin
|
| Flags |
Description
|
0x20000 |
LocalSpace
|
0x40000 |
AirDrag
|
0x80000 |
FadeUseEnTime
|
0x100000 |
FadeUseDisTime
|
0x200000 |
FadeUseFadeIn
|
0x400000 |
FadeUseFadeOut
|
0x800000 |
UseMaxDist
|
FLD1 fields.
| Fields |
Type |
Description
|
flags |
Flags |
Combination of values from the three above tables.
|
position |
Field Parameters |
Local offset position of the field effect.
|
direction |
Field Parameters |
Direction vector for directional fields (gravity, wind).
|
param1 |
Field Parameters |
Field strength/magnitude (varies by field type).
|
param2/param3 |
Field Parameters |
Additional parameters (field-type specific).
|
fadeIn |
Timing Controls |
Time ratio for field to fade in (0.0-1.0).
|
fadeOut |
Timing Controls |
Time ratio for field to fade out (0.0-1.0).
|
enTime |
Timing Controls |
Enable time (when field becomes active).
|
disTime |
Timing Controls |
Disable time (when field deactivates).
|
cycle |
Timing Controls |
Cycle period for oscillating fields.
|
BSP1 Block (Base Shape) - Visual Appearance[edit]
The special BSP1 flags used in flags.
| Type |
Description
|
0x0 |
Point
|
0x1 |
Line
|
0x2 |
Billboard
|
0x3 |
Direction
|
0x4 |
DirectionCross
|
0x5 |
Stripe
|
0x6 |
StripeCross
|
0x7 |
Rotation
|
0x8 |
RotationCross
|
0x9 |
DirBillboard
|
0xa |
YBillboard
|
| Dir Type |
Description
|
0x00 |
Vel
|
0x10 |
Pos
|
0x20 |
PosInv
|
0x30 |
Emitter Dir
|
0x40 |
PrevPctl
|
| Rot Type |
Description
|
0x0 |
Y
|
0x80 |
X
|
0x100 |
Z
|
0x200 |
XYZ
|
| Plane Type |
Description
|
0x0 |
XY
|
0x400 |
XZ
|
0x800 |
X
|
| Projection Type |
Description
|
Default |
None
|
0x1000000 |
Normal
|
0x2000000 |
Anim
|
| TEV Color Arg |
Description
|
Default |
Unk
|
0x8000 |
Unk0
|
0x10000 |
Unk1
|
0x18000 |
Unk2
|
0x20000 |
Unk3
|
0x28000 |
Unk4
|
| TEV Alpha Arg |
Description
|
0x0 |
{ GX_CA_ZERO, GX_CA_TEXA, GX_CA_A0, GX_CA_ZERO }
|
0x40000 |
{ GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0 }
|
| Misc. |
Description
|
0x1000 |
isGlblClrAnm
|
0x4000 |
isGlblTexAnm
|
0x100000 |
isPrjTex
|
0x200000 |
isDrawFwdAhead
|
0x400000 |
isDrawPrntAhead
|
0x800000 |
isClipOn
|
0x1000000 |
isTexCrdAnm
|
0x2000000 |
Tiling S On
|
0x4000000 |
Tiling T On
|
0x8000000 |
isNoDrawParent
|
0x10000000 |
isNoDrawChild
|
The special BSP1 flags used in blendModeFlags.
| Blend Mode |
Description
|
0x0 |
GX_BM_NONE (No blending)
|
0x1 |
GX_BM_BLEND (Standard blending)
|
0x2 |
GX_BM_LOGIC (Logic Op)
|
| Blend Source Factor |
Description
|
Default |
GX_BL_ZERO (0.0)
|
0x4 |
GX_BL_ONE (1.0)
|
0x8 |
GX_BL_SRCCOL (Frame Buffer Color)
|
0xc |
GX_BL_INVSRCCOL (1.0 - Frame Buffer Color)
|
0x10 |
GX_BL_SRCALPHA (Source Alpha)
|
0x14 |
GX_BL_INVSRCALPHA (1.0 - Source Alpha)
|
0x18 |
GX_BL_DSTALPHA (1.0 - Frame Buffer Alpha)
|
0x1c |
GX_BL_INVDSTALPHA (1.0 - Frame Buffer Alpha)
|
| Blend Destination Factor |
Description
|
Default |
GX_BL_ZERO (0.0)
|
0x40 |
GX_BL_ONE (1.0)
|
0x80 |
GX_BL_SRCCOL (Frame Buffer Color)
|
0xc0 |
GX_BL_INVSRCCOL (1.0 - Frame Buffer Color)
|
0x100 |
GX_BL_SRCALPHA (Source Alpha)
|
0x140 |
GX_BL_INVSRCALPHA (1.0 - Source Alpha)
|
0x180 |
GX_BL_DSTALPHA (1.0 - Frame Buffer Alpha)
|
0x1c0 |
GX_BL_INVDSTALPHA (1.0 - Frame Buffer Alpha)
|
| Logic Operation |
Description
|
Default |
GX_LO_CLEAR (FALSE)
|
0x400 |
GX_LO_AND (Source AND Destination)
|
0x800 |
GX_LO_REVAND (Source AND NOT Destination)
|
0xC00 |
GX_LO_COPY (Source)
|
0x1000 |
GX_LO_INVAND (NOT Source AND Destination)
|
0x1400 |
GX_LO_NOOP (Destination)
|
0x1800 |
GX_LO_XOR (Source XOR Destination)
|
0x1C00 |
GX_LO_OR (Source OR Destination)
|
0x2000 |
GX_LO_NOR NOT (Source OR Destination)
|
0x2400 |
GX_LO_EQUIV NOT (Source XOR Destination)
|
0x2800 |
GX_LO_INV (NOT Destination)
|
0x2C00 |
GX_LO_REVOR (Source OR NOT Destination)
|
0x3000 |
GX_LO_INVCOPY (NOT Source)
|
0x3400 |
GX_LO_INVOR (NOT Source OR Destination)
|
0x3800 |
GX_LO_NAND NOT (Source AND Destination)
|
0x3C00 |
GX_LO_SET (TRUE)
|
The special BSP1 flags used in zModeFlags.
| Z Mode Comparison |
Description
|
Default |
Z Comparison GX_NEVER (0)
|
0x2 |
Z Comparison GX_LESS (<)
|
0x4 |
Z Comparison GX_LEQUAL (<=)
|
0x6 |
Z Comparison GX_EQUAL (==)
|
0x8 |
Z Comparison GX_NEQUAL (!=)
|
0xa |
Z Comparison GX_GEQUAL (>=)
|
0xc |
Z Comparison GX_GREATER (>)
|
0xe |
Z Comparison GX_ALWAYS (1)
|
| Z Mode Flags |
Description
|
0x1 |
Z Mode Enabled
|
0x10 |
Z Update Enabled
|
0x20 |
Z Compare Local Enabled
|
The special BSP1 flags used in alphaCompareFlags.
| Alpha Compare 0 |
Description
|
Default |
Z Comparison GX_NEVER (0)
|
0x2 |
Z Comparison GX_LESS (<)
|
0x4 |
Z Comparison GX_LEQUAL (<=)
|
0x6 |
Z Comparison GX_EQUAL (==)
|
0x8 |
Z Comparison GX_NEQUAL (!=)
|
0xa |
Z Comparison GX_GEQUAL (>=)
|
0xc |
Z Comparison GX_GREATER (>)
|
0xe |
Z Comparison GX_ALWAYS (1)
|
| Alpha Operator |
Description
|
Default |
Z Comparison GX_AOP_AND
|
0x8 |
Z Comparison GX_AOP_OR
|
0x10 |
Z Comparison GX_AOP_XOR
|
0x18 |
Z Comparison GX_AOP_XNOR
|
| Alpha Compare 1 |
Description
|
Default |
Z Comparison GX_NEVER (0)
|
0x20 |
Z Comparison GX_LESS (<)
|
0x40 |
Z Comparison GX_LEQUAL (<=)
|
0x60 |
Z Comparison GX_EQUAL (==)
|
0x80 |
Z Comparison GX_NEQUAL (!=)
|
0xa0 |
Z Comparison GX_GEQUAL (>=)
|
0xc0 |
Z Comparison GX_GREATER (>)
|
0xe0 |
Z Comparison GX_ALWAYS (1)
|
The special BSP1 flags used in texFlags.
| Tex Anim Type |
Description
|
0x1 |
Tex Anim Enabled
|
0x4 |
Tex Anim Type JPACalcTexIdxNormal
|
0x8 |
Tex Anim Type JPACalcTexIdxRepeat
|
0xc |
Tex Anim Type JPACalcTexIdxReverse
|
0x10 |
Tex Anim Type JPACalcTexIdxMerge
|
0x14 |
Tex Anim Type JPACalcTexIdxRandom
|
The special BSP1 flags used in colorFlags.
| Color Flags |
Description
|
0x2 |
isPrmAnm
|
0x8 |
isEnvAnm
|
Default |
Anim Type Normal
|
0x10 |
Anim Type Repeat
|
0x20 |
Anim Type Reverse
|
0x30 |
Anim Type Merge
|
0x40 |
Anim Type Random
|
BSP1 fields.
| Fields |
Type |
Description
|
flags |
Flags |
Refer to prior table for flags stuff.
|
baseSizeX/Y |
Size & Scaling |
Base particle size in world units.
|
blendModeFlags |
Size & Scaling |
GX blend mode configuration (1113 = additive, 1497 = alpha blend, 1029 and 1177 also exist but are rarely used) (See above table)
|
alphaCompareFlags |
Alpha Testing |
Alpha comparison settings (231 = standard alpha test) (See above table)
|
alphaRef0/alphaRef1 |
Alpha Testing |
Alpha reference values for testing.
|
zModeFlags |
Alpha Testing |
Z-buffer settings (37 = standard depth testing). (see above table)
|
texFlags |
Texture Settings |
Texture behavior flags. (See above table)
|
texIdx |
Texture Settings |
Base texture index in texture database.
|
texIdxAnimCount |
Texture Settings |
Number of texture animation frames.
|
colorFlags |
Color Animation |
Color animation behavior (47 = both primary and environment color animation). (See above table)
|
ColorTable1Count/2Count |
Color Animation |
Number of keyframes for color animations.
|
repeatDiv |
Color Animation |
Animation repeat divisor for cycling.
|
ColorPrm/ColorEnv |
Color Animation |
Base primary and environment colors (RGBA hex format).
|
anmRndm |
Color Animation |
Random offset for animation timing.
|
colorLoopOfStMask |
Color Animation |
Mask for color animation loop offset.
|
texIdxLoopOfstMask |
Color Animation |
Mask for texture animation loop offset.
|
MatId |
Color Data Entries |
Time point in particle life (0-30 scale typically).
|
color |
Color Data Entries |
RGBA color at that time point.
|
The special ESP1 flags used in flags.
| Flags |
Description
|
0x1 |
isEnableScaleAnm
|
0x2 |
isScaleXYDiff
|
0x1000 |
Scale Center X (can be 0-2 (0, 0x1000 or 0x2000))
|
0x4000 |
Scale Center Y (can be 0-2 (0, 0x4000 or 0x8000))
|
0x10000 |
isEnableAlphaAnm
|
0x20000 |
isEnableAlphaFlick
|
0x1000000 |
isEnableRotateAnm
|
| Scale Anim Type X |
Description
|
Default |
JPACalcScaleAnmNormal
|
0x100 |
JPACalcScaleAnmRepeatX
|
0x200 |
JPACalcScaleAnmReverseX
|
| Scale Anim Type Y |
Description
|
Default |
JPACalcScaleAnmNormal
|
0x400 |
JPACalcScaleAnmRepeatY
|
0x800 |
JPACalcScaleAnmReverseY
|
ESP1 fields.
| Fields |
Type |
Description
|
flags |
Flags |
Refer to prior table for flags stuff.
|
scaleInTiming/scaleOutTiming |
Scale Animation |
When scale-in/out begins (0.0-1.0 of particle life).
|
scaleInValueX/Y |
Scale Animation |
Starting scale values.
|
scaleOutValueX/Y |
Scale Animation |
Ending scale values.
|
scaleOutRandom |
Scale Animation |
Random variation in scale-out timing.
|
scaleAnmMaxFrameX/Y |
Scale Animation |
Animation cycle length for scale oscillation.
|
alphaInTiming/alphaOutTiming |
Alpha Animation |
When alpha fade-in/out occurs.
|
alphaInValue/alphaBaseValue/alphaOutValue |
Alpha Animation |
Alpha values at different life stages.
|
alphaWaveFrequency |
Alpha Animation |
Frequency of alpha oscillation.
|
alphaWaveRandom |
Alpha Animation |
Random variation in wave timing.
|
alphaWaveAmplitude |
Alpha Animation |
Amplitude of alpha wave effect.
|
rotateAngle |
Rotation Animation |
Initial rotation angle (16384 = 90 degrees).
|
rotateAngleRandom |
Rotation Animation |
Random variation in initial angle (66536 = full random).
|
rotateSpeed |
Rotation Animation |
Rotation speed in units per frame.
|
rotateSpeedRandom |
Rotation Animation |
Random variation in rotation speed.
|
rotateDirection |
Rotation Animation |
Rotation direction bias.
|
SSP1 Block (Child Shape) - Secondary Particles[edit]
The special SSP1 flags used in flags.
| Draw Type |
Description
|
0x0 |
JPADrawPoint
|
0x1 |
JPADrawLine
|
0x2 |
JPADrawBillboard
|
0x3 |
JPADrawDirection
|
0x4 |
JPADrawDirection
|
0x5 |
JPADrawStripe
|
0x6 |
JPADrawStripeX
|
0x7 |
JPADrawRotation
|
0x8 |
JPADrawRotation
|
0x9 |
JPADrawDBillboard
|
0xa |
JPADrawYBillboard
|
| Flags |
Description
|
0x10000 |
isScaleInherited
|
0x20000 |
isAlphaInherited
|
0x40000 |
isColorInherited
|
0x100000 |
isClipOn
|
0x200000 |
isFieldAffected
|
0x400000 |
isScaleOutOn
|
0x800000 |
isAlphaOutOn
|
0x1000000 |
isRotateOn
|
| Base Plane Type |
Description
|
Default |
XY
|
0x400 |
XZ
|
SSP1 fields.
| Fields |
Type |
Description
|
flags |
Flags |
Refer to prior table for flags stuff.
|
posRndm |
Child Particle Properties |
Random position offset from parent particle.
|
baseVel/baseVelRndm |
Child Particle Properties |
Base velocity and random variation for child.
|
velInfRate |
Child Particle Properties |
Velocity inheritance rate from parent (0.0-1.0).
|
gravity |
Child Particle Properties |
Gravity effect strength on child particles.
|
globalScale2DX/Y |
Inheritance System |
Global 2D scaling factors.
|
inheritScale/inheritAlpha/inheritRGB |
Inheritance System |
How much child inherits from parent (0.0-1.0).
|
ColorPrm/ColorEnv |
Child Particle Properties |
Base primary and environment colors (RGBA hex format).
|
timing |
Child Timing & Generation |
When in parent's life children are spawned (0.0-1.0)
|
life |
Child Timing & Generation |
Child particle lifetime.
|
rate |
Child Timing & Generation |
Child generation rate.
|
step |
Child Timing & Generation |
Frame step for child generation.
|
rotateSpeed |
Child Timing & Generation |
Child rotation speed.
|
KFA1 Block (Keyframe Animation) - Dynamic Property Controller[edit]
The special KFA1 flags used in flags.
| Key Type |
Description
|
0x0 |
Set Rate
|
0x1 |
Set Volume Size
|
0x2 |
Set Volume Sweep (Missing in Pikmin 2)
|
0x3 |
Set Volume Min Radius
|
0x4 |
Set Life Time
|
0x5 |
Set Moment (Missing in Pikmin 2)
|
0x6 |
Set InitialVelOmni
|
0x7 |
Set InitialVelAxis
|
0x8 |
Set InitialVelRndm
|
0x9 |
Set Spread
|
0xa |
Set Scale
|
KFA1 fields.
| Fields |
Description
|
flags |
Refer to prior table for flags stuff.
|
KeyFrameCount |
Number of keyframe data points.
|
isLoopEnable |
Loop behavior (0 = no loop, 1 = loop).
|
unk2 |
Changes how the current frame is calculated? (See JPAKeyBlock::calc)
|
Keyframe Data Structure
| Fields |
Description
|
time |
Time point in animation (0.0-100.0 typically).
|
value |
Parameter value at this time.
|
tangent_in |
Incoming tangent for smooth interpolation.
|
tangent_out |
Outgoing tangent for smooth interpolation.
|
The special ETX1 flags used in flags.
| Flags |
Description
|
0x1 |
isUseIndirect
|
0x100 |
isUseSecTex
|
ETX1 fields.
| Fields |
Description
|
flags |
Refer to prior table for flags stuff.
|
texMtx00 |
Texture matrix element [0,0].
|
texMtx01 |
Texture matrix element [0,1].
|
texMtx02 |
Texture matrix element [0,2] (U translation).
|
texMtx10 |
Texture matrix element [1,0].
|
texMtx11 |
Texture matrix element [1,1].
|
texMtx12 |
Texture matrix element [1,2] (V translation).
|
scale |
Texture coordinate scale multiplier.
|
indTextureID |
Indirect texture index for distortion.
|
secondTextureIndex |
Secondary texture for multi-texturing.
|
TDB1 Block (Texture Reference List) - Per-Effect Texture Registry[edit]
| Field |
Description
|
TextureIDList |
References an array of textures used in TEX1.
|
example: 10 |
Index 11 in the array of TEX1.
|
example: 0 |
Index 1 in the array of TEX1.
|
TEX1 Block (Texture Database) - Texture Resource List[edit]
| Field |
Description
|
text |
Array of BTI texture filenames.
|
example: IP2_star5_i |
Index 0: Star particle texture.
|
example: IP2_kemuri6_ia |
Index 1: Smoke texture with alpha.
|
example: IP2_hire2_ia |
Index 2: Flare texture with alpha.
|
Credits: JaySalty, Pikhacker