Difference between revisions of "JPC file"

From Pikmin Technical Knowledge Base
Jump to navigation Jump to search
(Created page with "{{todo|Get the info from [https://docs.google.com/document/d/1hWqf2-nGRhatDqEydvkqMbh3wsEwi8UhRadLzyaviQE this document].}} '''JPC files''' represent containers of particles...")
 
Line 1: Line 1:
{{todo|Get the info from [https://docs.google.com/document/d/1hWqf2-nGRhatDqEydvkqMbh3wsEwi8UhRadLzyaviQE this document].}}
+
{{note|The information gathered on this page is gathered from eff2d_world_map.jpc. This page is not finished.}}
  
'''JPC files''' represent containers of particles in ''Pikmin 2''.
+
'''JPC files''' represent an indexed collection of JPA files. These files contain information on particle systems and store BTI images.
  
 +
== File Header ==
 +
 +
{| class="wikitable"
 +
! Size of data || Description
 +
|-
 +
|  0x0 (8 char) || String, “JPAC2-10”
 +
|-
 +
|  0x8 (uint16) || Number of BEM1 headers, Total number of defined emitters.
 +
|-
 +
|  0xA (uint16) || Number of BTI format textures (TEX1)
 +
|-
 +
|  0xC (uint32) || Total size of data excluding the TEX1 sections.
 +
|}
 +
 +
Before the BEM1 section, every particle emitter starts off with 8 bytes of data:
 +
{| class="wikitable"
 +
! Data Type/Size || Description
 +
|-
 +
|  0x0 (uint16)|| Identifier
 +
|-
 +
|  0x2 (uint16)|| Unknown - Always set to 5
 +
|-
 +
|  0x4 (uint8)|| Unknown - Crash handler mentions something about JPAWorkData
 +
|-
 +
|  0x5 (uint8)||  Unknown - Crash handler mentions JPAKeyBlock? Related to alpha? Crashes when changed to something else: https://i.gyazo.com/5507d06343f68515f91c630545947f87.png
 +
|}
 +
== BEM1 ==
 +
{| class="wikitable"
 +
! Data Type/Size || Description
 +
|-
 +
|  0x0 (4 char)|| String, “BEM1”
 +
|-
 +
|  0x4 (uint32)|| Value is always 7C since the data size of this section is static (124 bytes).
 +
|-
 +
|  0x8 (uint16)|| Unknown - Doesn’t seem to do anything. Changing doesn’t crash.
 +
|-
 +
|  0xA (uint8)||  Can be set from 0-7. Crashes resulted when set to 7. Crash handler mentions JPADyanmicBlocks? Setting numbers higher than 7 will wrap around to represent 0-7.
 +
|-
 +
|  0xB (uint8)||  Bit flags? Upper 4 bits not used? Going right to left the 1st bit doesnt seem to do anything noticeable. 2nd seems to turn off particle cap. 3rd seems to determine if the particle system should fire continuously or once. 4th makes the particles parented to the emitter.
 +
|-
 +
|  0x10 (float)||  Scale X, these scale values may be used for the shape that particles can spawn within.
 +
|-
 +
|  0x14 (float)||  Scale Y
 +
|-
 +
|  0x18 (float)||  Scale Z
 +
|-
 +
|  0x1C (float)||  Emitter's X offset from origin
 +
|-
 +
|  0x20 (float)||  Emitter's Y offset from origin
 +
|-
 +
|  0x24 (float)||  Emitter's Z offset from origin
 +
|}
 
[[Category:File formats]]
 
[[Category:File formats]]
 
[[Category:Pikmin 2]]
 
[[Category:Pikmin 2]]

Revision as of 01:11, 8 August 2019

Editor's note: The information gathered on this page is gathered from eff2d_world_map.jpc. This page is not finished.

JPC files represent an indexed collection of JPA files. These files contain information on particle systems and store BTI images.

File Header

Size of data Description
0x0 (8 char) String, “JPAC2-10”
0x8 (uint16) Number of BEM1 headers, Total number of defined emitters.
0xA (uint16) Number of BTI format textures (TEX1)
0xC (uint32) Total size of data excluding the TEX1 sections.

Before the BEM1 section, every particle emitter starts off with 8 bytes of data:

Data Type/Size Description
0x0 (uint16) Identifier
0x2 (uint16) Unknown - Always set to 5
0x4 (uint8) Unknown - Crash handler mentions something about JPAWorkData
0x5 (uint8) Unknown - Crash handler mentions JPAKeyBlock? Related to alpha? Crashes when changed to something else: https://i.gyazo.com/5507d06343f68515f91c630545947f87.png

BEM1

Data Type/Size Description
0x0 (4 char) String, “BEM1”
0x4 (uint32) Value is always 7C since the data size of this section is static (124 bytes).
0x8 (uint16) Unknown - Doesn’t seem to do anything. Changing doesn’t crash.
0xA (uint8) Can be set from 0-7. Crashes resulted when set to 7. Crash handler mentions JPADyanmicBlocks? Setting numbers higher than 7 will wrap around to represent 0-7.
0xB (uint8) Bit flags? Upper 4 bits not used? Going right to left the 1st bit doesnt seem to do anything noticeable. 2nd seems to turn off particle cap. 3rd seems to determine if the particle system should fire continuously or once. 4th makes the particles parented to the emitter.
0x10 (float) Scale X, these scale values may be used for the shape that particles can spawn within.
0x14 (float) Scale Y
0x18 (float) Scale Z
0x1C (float) Emitter's X offset from origin
0x20 (float) Emitter's Y offset from origin
0x24 (float) Emitter's Z offset from origin