JPC file

From Pikmin Technical Knowledge Base
Jump to navigation Jump to search

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.

JPC header[edit]

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.

ESP1 Block (Extra Shape) - Advanced Animation[edit]

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.

ETX1 Block (Extra Texture) - Advanced Texture Effects[edit]

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