PTCL (ParTiCLe) is a file format used on the Nintendo Switch. It contains visual effects, made from emitters, models and textures. It also may contain shader data.
File Format
The file format starts with the following header:
Offset |
Type |
Description
|
0x00 |
Char[8] |
File magic. Always VFXB in ASCII, or 56 46 58 42 20 20 20 20.
|
0x08 |
UInt32 |
Version number.
|
0x0C |
UInt16 |
Byte-order-mark. FE FF for big endian, FF FE for little endian.
|
0x0E |
Byte |
Alignment shift. 2 raised by this value is the alignment required by this file when loaded into memory.
|
0x0F |
Byte |
Target address size. Size of a pointer in bits, thus 64.
|
0x10 |
UInt32 |
File name offset. The offset links to 0 bytes, which probably explains the 0x20 empty bytes after the header.
|
0x14 |
UInt16 |
A flag which is only used on runtime. One bit sets wether the file is relocated. It is unknown if this is used to indicate whether the embedded files are relocated.
|
0x16 |
UInt16 |
Offset to the first section.
|
0x18 |
UInt32 |
Relocation table offset. Since PTCL files don't have a relocation table, this is always 0.
|
0x1C |
UInt32 |
Size of the file in bytes.
|
Every section starts with the following section header. All offsets are relative to the start of the section, and may be 0xFFFFFFFF if unused. It has the following structure:
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Offset to the child data.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset.
|
0x14 |
UInt32 |
Image offset. By default it is set to the size of this structure.
|
0x18 |
UInt32 |
Unique ID. Unknown usage, always 0. The IDs seem to be generated at runtime.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag. Set at runtime if the file endianness doesn't match the system endianness, and all values need to be flipped.
|
0x1F |
Byte |
Endianness flag. Determines the endianness of this structure, 0 for little endian, 1 is big endian.
|
Texture Pattern Animation
Offset |
Type |
Description
|
0x00 |
Float |
Number of used pattern tables.
|
0x04 |
Float |
Pattern frequency.
|
0x08 |
Float |
Number of random patterns.
|
0x0C |
Float |
Padding.
|
0x10 |
Int32[32] |
Pattern table.
|
Texture UV Shift Animation
Offset |
Type |
Description
|
0x00 |
Float[2] |
Scroll add.
|
0x08 |
Float[2] |
Scroll init.
|
0x10 |
Float[2] |
Scroll init random.
|
0x18 |
Float[2] |
Scale add.
|
0x20 |
Float[2] |
Scale init.
|
0x28 |
Float[2] |
Scale init random.
|
0x30 |
Float |
Rotation add.
|
0x34 |
Float |
Rotation init.
|
0x38 |
Float |
Rotation init random.
|
0x3C |
Float |
Random type.
|
0x40 |
Float[2] |
UV scale.
|
0x48 |
Float[2] |
UV divisions.
|
Animation 8 Key Parameter
Offset |
Type |
Description
|
0x00 |
Float[4][8] |
Animation values.
|
Animation 8 Key Parameter Set
Offset |
Type |
Description
|
0x00 |
UInt32 |
Enable.
|
0x04 |
UInt32 |
Loop.
|
0x08 |
UInt32 |
Start random.
|
0x0C |
Int32 |
Number of keys.
|
0x10 |
Int32 |
Number of loops.
|
0x14 |
Float[4][8] |
Key values.
|
Animation Emitter Key Parameter Set
Offset |
Type |
Description
|
0x00 |
Byte |
Enable.
|
0x01 |
Byte |
Loop.
|
0x02 |
Byte |
Start random.
|
0x03 |
Byte |
Padding.
|
0x04 |
Int32 |
Number of keys (N).
|
0x08 |
Int32 |
Number of loops.
|
0x0C |
Float[N][4] |
Key values.
|
ESTA
The ESTA section (Effect SeT Array) contains a list of emitter sets. All offsets are relative to the start of this section.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always ESTA in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
First ESET offset (child offset).
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub binary data. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset. Unused.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of ESETs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
ESET
The ESET section (Effect SET) contains a list of emitters. All offsets are relative to the start of this section.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always ESET in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
EMTR offset (child offset).
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of EMTRs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
ESET Image Data
Offset |
Type |
Description
|
0x00 |
UInt32 |
Flag.
|
0x04 |
UInt32 |
Random seed.
|
0x08 |
UInt32[2] |
Padding.
|
0x10 |
Char[64] |
Name.
|
0x50 |
UInt32 |
Number of emitters in all sub sections.
|
0x54 |
UInt16 |
User data bit.
|
0x56 |
UInt16 |
Padding.
|
0x58 |
UInt32 |
User data value 1.
|
0x5C |
UInt32 |
User data value 2.
|
EMTR
The EMTR section (EMiTter Resource) describes effect data. Each entry has the following structure:
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EMTR in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
EMTR child offset.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Points to the different data sections, for example FRND and FRN1.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of EMTR childen.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EMTR Image Data
The image data is always aligned by 0x100. It has the following structure:
Emitter Static Uniform Block
Offset |
Type |
Description
|
0x00 |
Int32[4] |
Flag.
|
0x10 |
Int32 |
Number of color 0 animation keys.
|
0x14 |
Int32 |
Number of alpha 0 animation keys.
|
0x18 |
Int32 |
Number of color 1 animation keys.
|
0x1C |
Int32 |
Number of alpha 1 animation keys.
|
0x20 |
Int32 |
Number of scale animation keys.
|
0x24 |
Int32 |
Number of shader animation keys.
|
0x28 |
Int32[2] |
Padding.
|
0x30 |
Float |
Color 0 animation loop rate.
|
0x34 |
Float |
Alpha 0 animation loop rate.
|
0x38 |
Float |
Color 1 animation loop rate.
|
0x3C |
Float |
Alpha 1 animation loop rate.
|
0x40 |
Float |
Scale animation loop rate.
|
0x44 |
Float |
Color 0 animation loop init random.
|
0x48 |
Float |
Alpha 0 animation loop init random.
|
0x4C |
Float |
Color 1 animation loop init random.
|
0x50 |
Float |
Alpha 1 animation loop init random.
|
0x54 |
Float |
Scale animation loop init random.
|
0x58 |
Float[2] |
Padding.
|
0x60 |
Float[3] |
Gravity.
|
0x6C |
Float |
Gravity scale.
|
0x70 |
Float |
Air regist.
|
0x74 |
Float[3] |
Padding.
|
0x80 |
Float[2] |
Center.
|
0x88 |
Float |
Offset.
|
0x8C |
Float |
Padding.
|
0x90 |
Float[2] |
Fluctuation amplitude.
|
0x98 |
Float[2] |
Fluctuation cycle.
|
0xA0 |
Float[2] |
Fluctuation phase random.
|
0xA8 |
Float[2] |
Fluctuation phase init.
|
0xB0 |
Float |
Coefficient 0.
|
0xB4 |
Float |
Coefficient 1.
|
0xB8 |
Float[2] |
Padding.
|
0xC0 |
Texture Pattern Animation |
Pattern animation 0.
|
0x150 |
Texture Pattern Animation |
Pattern animation 1.
|
0x1E0 |
Texture Pattern Animation |
Pattern animation 2.
|
0x270 |
Texture UV Shift Animation |
Texture shift animation 0.
|
0x2C0 |
Texture UV Shift Animation |
Texture shift animation 1.
|
0x310 |
Texture UV Shift Animation |
Texture shift animation 2.
|
0x360 |
Float |
Color scale.
|
0x364 |
Float[3] |
Padding.
|
0x370 |
Animation 8 Key Parameter |
Color 0 animation.
|
0x3F0 |
Animation 8 Key Parameter |
Alpha 0 animation.
|
0x470 |
Animation 8 Key Parameter |
Color 1 animation.
|
0x4F0 |
Animation 8 Key Parameter |
Alpha 1 animation.
|
0x570 |
Float[2] |
Soft edge parameter.
|
0x578 |
Float[2] |
Fresnel alpha parameter.
|
0x580 |
Float[2] |
Near distance alpha parameter.
|
0x588 |
Float[2] |
Far distance alpha parameter.
|
0x590 |
Float[2] |
Decal parameter.
|
0x598 |
Float |
Alpha threshold.
|
0x59C |
Float |
Padding.
|
0x5A0 |
Float |
Add velocity to scale.
|
0x5A4 |
Float |
Soft particle distance.
|
0x5A8 |
Float |
Soft particle volume.
|
0x5AC |
Float |
Padding.
|
0x5B0 |
Animation 8 Key Parameter |
Scale key animation.
|
0x630 |
Animation 8 Key Parameter |
Shader animation.
|
0x6B0 |
Float[4] |
Rotate init.
|
0x6C0 |
Float[4] |
Rotate init random.
|
0x6D0 |
Float[3] |
Rotate add.
|
0x6DC |
Float |
Rotate regist.
|
0x6E0 |
Float[3] |
Rotate add random.
|
0x6EC |
Float |
Padding.
|
0x6F0 |
Float |
Scale limit distance near.
|
0x6F4 |
Float |
Scale limit distance far.
|
0x6F8 |
Float[2] |
Padding.
|
Emitter Fnd
Offset |
Type |
Description
|
0x00 |
Byte |
Is particle draw.
|
0x01 |
Byte |
Sort type.
|
0x02 |
Byte |
Calculation type.
|
0x03 |
Byte |
Follow type.
|
0x04 |
Byte |
Is fade emitter.
|
0x05 |
Byte |
Is fade alpha fade.
|
0x06 |
Byte |
Is scale fade.
|
0x07 |
Byte |
Random seed type.
|
0x08 |
Byte |
Is update matrix by emitter.
|
0x09 |
Byte |
Test always.
|
0x0A |
Byte |
Interpolate emission amount.
|
0x0B |
Byte |
Is alpha fade in.
|
0x0C |
Byte |
Is scale fade in.
|
0x0D |
Byte[3] |
Padding.
|
0x10 |
UInt32 |
Random seed.
|
0x14 |
UInt32 |
Draw path.
|
0x18 |
UInt32 |
Alpha fade time.
|
0x1C |
UInt32 |
Fade in time.
|
0x20 |
Float[3] |
Translation.
|
0x2C |
Float[3] |
Random translation.
|
0x38 |
Float[3] |
Rotation.
|
0x44 |
Float[3] |
Random rotation.
|
0x50 |
Float[3] |
Scale.
|
0x5C |
Float[4] |
Color 0.
|
0x6C |
Float[4] |
Color 1.
|
0x7C |
Float |
Emission range near.
|
0x80 |
Float |
Emission range far.
|
0x84 |
Int32 |
Emission ratio far.
|
Inherit
Offset |
Type |
Description
|
0x00 |
Byte |
Velocity.
|
0x01 |
Byte |
Scale.
|
0x02 |
Byte |
Rotate.
|
0x03 |
Byte |
Color scale.
|
0x04 |
Byte |
Color 0.
|
0x05 |
Byte |
Color 1.
|
0x06 |
Byte |
Alpha 0.
|
0x07 |
Byte |
Alpha 1.
|
0x08 |
Byte |
Draw path.
|
0x09 |
Byte |
Pre draw.
|
0x0A |
Byte |
Alpha 0 each frame.
|
0x0B |
Byte |
Alpha 1 each frame.
|
0x0C |
Byte |
Enable emitter particle.
|
0x0D |
Byte[3] |
Padding.
|
0x10 |
Float |
Velocity rate.
|
0x14 |
Float |
Scale rate.
|
Emission
Offset |
Type |
Description
|
0x00 |
Byte |
Is one time.
|
0x01 |
Byte |
Is world gravity.
|
0x02 |
Byte |
Is emitter distance enabled.
|
0x03 |
Byte |
Is world oriented velocity.
|
0x04 |
UInt32 |
Start.
|
0x08 |
UInt32 |
Emitter timing.
|
0x0C |
UInt32 |
Emitter duration.
|
0x10 |
Float |
Rate.
|
0x14 |
Int32 |
Rate random.
|
0x18 |
Int32 |
Interval.
|
0x1C |
Int32 |
Interval random.
|
0x20 |
Float |
Position random.
|
0x24 |
Float |
Gravity scale.
|
0x28 |
Float[3] |
Gravity direction.
|
0x34 |
Float |
Emitter distance unit.
|
0x38 |
Float |
Emitter distance minimum.
|
0x3C |
Float |
Emitter distance maximum.
|
0x40 |
Float |
Emitter distance margin.
|
0x44 |
Int32 |
Emitter distance particle max.
|
Emitter Volume
Offset |
Type |
Description
|
0x00 |
Byte |
Volume type.
|
0x01 |
Byte |
Sweep start random.
|
0x02 |
Byte |
Arc type.
|
0x03 |
Byte |
Is volume latitude enabled.
|
0x04 |
Byte |
Volume table index.
|
0x05 |
Byte |
Volume table index 64.
|
0x06 |
Byte |
Volume latitude direction.
|
0x07 |
Byte |
Is GPU emitter.
|
0x08 |
Float |
Sweep longitude.
|
0x0C |
Float |
Sweep latitude.
|
0x10 |
Float |
Sweep start.
|
0x14 |
Float |
Volume surface position random.
|
0x18 |
Float |
Caliber ratio.
|
0x1C |
Float |
Line center.
|
0x20 |
Float |
Line length.
|
0x24 |
Float[3] |
Volume radius.
|
0x30 |
Float[3] |
Volume form scale.
|
0x3C |
UInt32 |
Primitive emitter type.
|
0x40 |
UInt64 |
Primitive index.
|
0x48 |
UInt32 |
Number of divide circles.
|
0x4C |
UInt32 |
Number of divide circles random.
|
0x50 |
UInt32 |
Number of divide lines.
|
0x54 |
UInt32 |
Number of divide lines random.
|
0x58 |
Byte |
Is on another binary volume primitive.
|
0x59 |
Byte[7] |
Padding.
|
Render State
Offset |
Type |
Description
|
0x00 |
Byte |
Blend enabled.
|
0x01 |
Byte |
Depth test enabled.
|
0x02 |
Byte |
Depth function.
|
0x03 |
Byte |
Depth mask.
|
0x04 |
Byte |
Alpha mask.
|
0x05 |
Byte |
Alpha function.
|
0x06 |
Byte |
Blend type.
|
0x07 |
Byte |
Display side.
|
0x08 |
Float |
Alpha threshold.
|
0x0C |
Byte[4] |
Padding.
|
Particle Fnd
Offset |
Type |
Description
|
0x00 |
Byte |
Life is infinity.
|
0x01 |
Byte |
Is trimming.
|
0x02 |
Byte |
Billboard type.
|
0x03 |
Byte |
Rotation type.
|
0x04 |
Byte |
Offset type.
|
0x05 |
Byte |
Rotation direction random X.
|
0x06 |
Byte |
Rotation direction random Y.
|
0x07 |
Byte |
Rotation direction random Z.
|
0x08 |
Byte |
Is rotate X.
|
0x09 |
Byte |
Is rotate Y.
|
0x0A |
Byte |
Is rotate Z.
|
0x0B |
Byte |
Primitive scale type.
|
0x0C |
Byte |
Is texture common random.
|
0x0D |
Byte |
Connect particle scale and Z offset.
|
0x0E |
Byte |
Enable avoid Z-fighting.
|
0x0F |
Byte |
Padding.
|
0x10 |
Int32 |
Life.
|
0x14 |
Int32 |
Life random.
|
0x18 |
Float |
Momentum random.
|
0x1C |
UInt32 |
Primitive vertex info flags.
|
0x20 |
UInt64 |
Primitive index.
|
0x28 |
UInt64 |
Trimming primitive index.
|
0x30 |
Byte |
Color 0 animation is loop.
|
0x31 |
Byte |
Alpha 0 animation is loop.
|
0x32 |
Byte |
Color 1 animation is loop.
|
0x33 |
Byte |
Alpha 1 animation is loop.
|
0x34 |
Byte |
Scale animation is loop.
|
0x35 |
Byte |
Color 0 animation loop init random.
|
0x36 |
Byte |
Alpha 0 animation loop init random.
|
0x37 |
Byte |
Color 1 animation loop init random.
|
0x38 |
Byte |
Alpha 1 animation loop init random.
|
0x39 |
Byte |
Scale animation loop init random.
|
0x3A |
Byte |
Is on another binary primitive.
|
0x3B |
Byte |
Is on another binary trimming primitive.
|
0x3C |
Int32 |
Color 0 animation loop rate.
|
0x40 |
Int32 |
Alpha 0 animation loop rate.
|
0x44 |
Int32 |
Color 1 animation loop rate.
|
0x48 |
Int32 |
Alpha 1 animation loop rate.
|
0x4C |
Int32 |
Scale animation loop rate.
|
Combiner
Offset |
Type |
Description
|
0x00 |
Byte |
Color combiner process.
|
0x01 |
Byte |
Alpha combiner process.
|
0x02 |
Byte |
Texture 1 color blend.
|
0x03 |
Byte |
Texture 2 color blend.
|
0x04 |
Byte |
Primitive color blend.
|
0x05 |
Byte |
Texture 1 alpha blend.
|
0x06 |
Byte |
Texture 2 alpha blend.
|
0x07 |
Byte |
Primitive alpha blend.
|
0x08 |
Byte |
Texture color 0 input type.
|
0x09 |
Byte |
Texture color 1 input type.
|
0x0A |
Byte |
Texture color 2 input type.
|
0x0B |
Byte |
Texture alpha 0 input type.
|
0x0C |
Byte |
Texture alpha 1 input type.
|
0x0D |
Byte |
Texture alpha 2 input type.
|
0x0E |
Byte |
Primitive color input type.
|
0x0F |
Byte |
Primitive alpha input type.
|
0x10 |
Byte |
Shader type:
- 0 = Standard
- 1 = Color Buffer Refraction
- 2 = Texture Distortion
|
0x11 |
Byte |
Apply alpha.
|
0x12 |
Byte |
Is distortion by camera distance.
|
0x13 |
Byte[5] |
Padding.
|
Shader
Offset |
Type |
Description
|
0x00 |
Byte |
Shader type:
- 0 = Standard
- 1 = Color Buffer Refraction
- 2 = Texture Distortion
|
0x01 |
Byte[3] |
Padding.
|
0x04 |
UInt32 |
Vertex shader index.
|
0x08 |
UInt32 |
Fragment shader index.
|
0x0C |
UInt32 |
User vertex shader index 1.
|
0x10 |
UInt32 |
User fragment shader index 1.
|
0x14 |
UInt32 |
User vertex shader index 2.
|
0x18 |
UInt32 |
User fragment shader index 2.
|
0x1C |
UInt32 |
Custom shader index.
|
0x20 |
UInt64 |
Custom shader flag.
|
0x28 |
UInt64 |
Custom shader switch.
|
0x30 |
UInt32 |
Effect combiner shader index.
|
0x34 |
UInt32 |
Reserved shader index.
|
0x38 |
Char[16] |
User shader define 1.
|
0x48 |
Char[16] |
User shader define 2.
|
Action
Offset |
Type |
Description
|
0x00 |
Int32 |
Custom action index.
|
Particle Velocity
Offset |
Type |
Description
|
0x00 |
Float |
All direction.
|
0x04 |
Float |
Designated direction scale.
|
0x08 |
Float[3] |
Designated direction.
|
0x14 |
Float |
Diffusion direction angle.
|
0x18 |
Float |
XZ diffusion.
|
0x1C |
Float[3] |
Diffusion.
|
0x28 |
Float |
Velocity random.
|
0x2C |
Float |
Emitter velocity inheritance.
|
Particle Color
Offset |
Type |
Description
|
0x00 |
Byte |
Is soft particle.
|
0x01 |
Byte |
Is fresnel alpha.
|
0x02 |
Byte |
Is near distance alpha.
|
0x03 |
Byte |
Is far distance alpha.
|
0x04 |
Byte |
Is decal.
|
0x05 |
Byte[3] |
Padding.
|
0x08 |
Byte |
Color 0 type.
|
0x09 |
Byte |
Color 1 type.
|
0x0A |
Byte |
Alpha 0 type.
|
0x0B |
Byte |
Alpha 1 type.
|
0x0C |
Float[3] |
Color 0.
|
0x18 |
Float |
Alpha 0.
|
0x1C |
Float[3] |
Color 1.
|
0x28 |
Float |
Alpha 1.
|
Particle Scale
Offset |
Type |
Description
|
0x00 |
Float[3] |
Base.
|
0x0C |
Float[3] |
Base random.
|
0x18 |
Byte |
Enable scaling by camera distance near.
|
0x19 |
Byte |
Enable scaling by camera distance far.
|
0x1A |
Byte |
Enable add scale Y.
|
0x1B |
Byte |
Enable link fovy to scale value.
|
0x1C |
Float |
Scale limit distance near.
|
0x20 |
Float |
Scale limit distance far.
|
Particle Fluctuation
Offset |
Type |
Description
|
0x00 |
Byte |
Is apply alpha.
|
0x01 |
Byte |
Is apply scale.
|
0x02 |
Byte |
Is apply scale Y.
|
0x03 |
Byte |
Is wave type.
|
0x04 |
Byte |
Is phase random X.
|
0x05 |
Byte |
Is phase random Y.
|
0x06 |
Byte[6] |
Padding.
|
Texture Sampler
Offset |
Type |
Description
|
0x00 |
UInt64 |
Unique ID.
|
0x08 |
Byte |
Wrap U.
|
0x09 |
Byte |
Wrap V.
|
0x0A |
Byte |
Filter.
|
0x0B |
Byte |
Is sphere map.
|
0x0C |
Float |
Mipmap level.
|
0x10 |
Float |
Mipmap bias.
|
0x14 |
Byte |
Is density fixed U.
|
0x15 |
Byte |
Is density fixed V.
|
0x16 |
Byte |
Is square RGB.
|
0x17 |
Byte |
Is on another binary.
|
If version ≥ 21.4.0
|
0x18 |
Byte[8] |
Unknown.
|
Texture Animation
Offset |
Type |
Description
|
0x00 |
Byte |
Pattern animation type.
|
0x01 |
Byte |
Is scroll.
|
0x02 |
Byte |
Is rotate.
|
0x03 |
Byte |
Is scale.
|
0x04 |
Byte |
Repeat.
|
0x05 |
Byte |
Inverse random U.
|
0x06 |
Byte |
Inverse random V.
|
0x07 |
Byte |
Is pattern animation loop random.
|
0x08 |
Byte |
UV channel.
|
0x09 |
Byte[7] |
Padding.
|
FRND
The FRND section (Field RaNDom) stores information about field randomness.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always FRND in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
Byte |
Enable unified phase.
|
0x01 |
Byte |
Enable detailed option.
|
0x02 |
Byte |
Enable air regist.
|
0x03 |
Byte |
Padding.
|
0x04 |
Float[3] |
Random velocity.
|
0x10 |
Int32 |
Random timing.
|
0x14 |
Float |
Unified phase speed.
|
0x18 |
Float |
Unified phase distribution.
|
0x1C |
Float |
Wave parameter 0.
|
0x20 |
Float |
Wave parameter 1.
|
0x24 |
Float |
Wave parameter 2.
|
0x28 |
Float |
Wave parameter 3.
|
0x2C |
Float |
Wave parameter frequency 0.
|
0x30 |
Float |
Wave parameter frequency 1.
|
0x34 |
Float |
Wave parameter frequency 2.
|
0x38 |
Float |
Wave parameter frequency 3.
|
0x3C |
Animation 8 Key Parameter Set |
Animation parameter.
|
FRN1
The FRN1 section (Field RaNdom FE1) stores information about field randomness compatible with Wii U PTCL.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always FRN1 in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
Float[3] |
Random velocity.
|
0x0C |
Int32 |
Random application interval in frames.
|
0x10 |
Animation 8 Key Parameter Set |
Animation parameter.
|
FMAG
The FMAG section (Field MAGnet) stores information about field magnetic force.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always FMAG in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
Byte |
Is follow emitter.
|
0x01 |
Byte |
Field magnet flag X.
|
0x02 |
Byte |
Field magnet flag Y.
|
0x03 |
Byte |
Field magnet flag Z.
|
0x04 |
Float |
Field magnet power.
|
0x08 |
Float[3] |
Field magnet position.
|
0x14 |
Animation 8 Key Parameter Set |
Animation parameter.
|
FSPN
The FSPN section (Field SPiN) stores information about field spin.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always FSPN in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
FCOL
The FCOL section (Field COLlision) stores information about field simple collision.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always FCOL in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
Byte |
Field collision type.
|
0x01 |
Byte |
Field collision is world.
|
0x02 |
Byte |
Field collision is common coord.
|
0x03 |
Byte |
Padding.
|
0x04 |
Float |
Field collision coord.
|
0x08 |
Float |
Field collision coefficients.
|
0x0C |
Int32 |
Field collision count.
|
0x10 |
Float |
Field collision regist.
|
FCOV
The FCOV section (Field COnVergence) stores information about field convergence.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always FCOV in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
Byte |
Field convergence type.
|
0x01 |
Byte[3] |
Padding.
|
0x04 |
Float[3] |
Field convergence position.
|
0x10 |
Float |
Field convergence ratio.
|
0x14 |
Animation 8 Key Parameter Set |
Animation parameter.
|
FCLN
The FCLN section (Field CurL Noise) stores information about field curl noise.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always FCLN in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
Byte |
Is field curl noise interpolation.
|
0x01 |
Byte |
Is field curl noise base random.
|
0x02 |
Byte |
Is world coordinate.
|
0x03 |
Byte |
Padding.
|
0x04 |
Float[3] |
Field curl noise speed.
|
0x10 |
Float[3] |
Field curl noise influence.
|
0x1C |
Float |
Field curl noise scale.
|
0x20 |
Float |
Field curl noise base.
|
FPAD
The FPAD section (Field Position ADd) stores information about field add to position.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always FPAD in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
Byte |
Is field position add global.
|
0x01 |
Byte[3] |
Padding.
|
0x04 |
Float[3] |
Field position add.
|
0x10 |
Animation 8 Key Parameter Set |
Animation parameter.
|
FCSF
The FCSF section (Field CuStom Field) stores information about custom field data.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always FCSF in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
UInt32 |
Flags.
|
0x04 |
Float |
Value 0.
|
0x08 |
Float |
Value 1.
|
0x0C |
Float |
Value 2.
|
0x10 |
Float |
Value 3.
|
0x14 |
Float |
Value 4.
|
0x18 |
Float |
Value 5.
|
0x1C |
Float |
Value 6.
|
0x20 |
Float |
Value 7.
|
0x24 |
Float |
Value 8.
|
0x28 |
Float |
Value 9.
|
0x2C |
Float |
Value 10.
|
0x30 |
Float |
Value 11.
|
0x34 |
Float |
Value 12.
|
0x38 |
Float |
Value 13.
|
0x3C |
Float |
Value 14.
|
0x40 |
Float |
Value 15.
|
EP01
The EP01 section (Emitter Plugin 01) stores information about complex stripe.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EP01 in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
Int32 |
Calculation type.
|
0x04 |
Int32 |
Emitter follow.
|
0x08 |
Int32 |
Option.
|
0x0C |
Int32 |
Texturing.
|
0x10 |
Int32 |
Number of divides.
|
0x14 |
Int32 |
Connection type.
|
0x18 |
Float |
Head alpha.
|
0x1C |
Float |
Tail alpha.
|
0x20 |
Float |
History interpolate.
|
0x24 |
Float |
Direction interpolate.
|
EP02
The EP02 section (Emitter Plugin 02) stores information about history stripe.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EP02 in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
Int32 |
Calculation type.
|
0x04 |
Int32 |
Emitter follow.
|
0x08 |
Int32 |
Option.
|
0x0C |
Int32 |
Texturing.
|
0x10 |
Float |
Number of divides.
|
0x14 |
Float |
Number of histories.
|
0x18 |
Float |
Interval.
|
0x1C |
Float |
Head alpha.
|
0x20 |
Float |
Tail alpha.
|
0x24 |
Float |
History interpolate.
|
0x28 |
Float |
Direction interpolate.
|
EP03
The EP03 section (Emitter Plugin 03) stores information about history tail stripe.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EP03 in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Offset |
Type |
Description
|
0x00 |
Int32 |
Calculation type.
|
0x04 |
Int32 |
Emitter follow.
|
0x08 |
Int32 |
Option.
|
0x0C |
Int32 |
Texturing 0.
|
0x10 |
Int32 |
Texturing 1.
|
0x14 |
Int32 |
Texturing 2.
|
0x18 |
Float |
Number of histories.
|
0x1C |
Int32 |
Connection type.
|
0x20 |
Float |
Head alpha.
|
0x24 |
Float |
Tail alpha.
|
0x28 |
Int32 |
Number of divides.
|
0x2C |
Float |
History interpolate.
|
0x30 |
Float |
Direction interpolate.
|
0x34 |
Float |
History air regist.
|
0x38 |
Float[3] |
History acceleration.
|
0x44 |
Float |
History regulation.
|
0x48 |
Float |
History init speed.
|
0x4C |
Float[3] |
History init rotation cycle.
|
0x58 |
Int32 |
Texture UV map type.
|
0x5C |
Float |
Head scale.
|
0x60 |
Float |
Tail scale.
|
0x64 |
Float |
Experimental parameter 0.
|
0x68 |
Float |
Experimental parameter 1.
|
0x6C |
Float |
Experimental parameter 2.
|
0x70 |
Float |
Experimental parameter 3.
|
0x74 |
Float |
Experimental parameter 4.
|
0x78 |
Float |
Experimental parameter 5.
|
0x7C |
Float |
Experimental parameter 6.
|
0x80 |
Float |
Experimental parameter 7.
|
EP04
The EP04 section (Emitter Plugin 04) stores information about area looping system.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EP04 in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset. The image data is identical to the one in EP03.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
CUDP
The CUDP section (Custom User Data Parameters) stores information about custom data parameters.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always CUDP in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Unknown.
CADP
The CADP section (Custom Action Data Parameters) stores information about custom action parameters.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always CADP in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Unknown.
CSDP
The CSDP section (Custom Shader Data Parameters) stores information about custom shader parameters.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always CSDP in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
- Image Data
Unknown.
EASL
The EASL section (Emitter Animation ScaLe) stores information about particle scale animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EASL in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EAES
The EAES section (Emitter Animation Emitter Scale) stores information about emitter scale animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EAES in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EAER
The EAER section (Emitter Animation Emitter Rotation) stores information about emitter rotation animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EAER in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EAET
The EAET section (Emitter Animation Emitter Translation) stores information about emitter translation animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EAET in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EATR
The EATR section (Emitter Animation Time Rate) stores information about emission rate animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EATR in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EAOV
The EAOV section (Emitter Animation Omni-Directional Velocity) stores information about omni-directional velocity animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EAOV in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EADV
The EADV section (Emitter Animation Designated Velocity) stores information about designated direction velocity animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EADV in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EAGV
The EAGV section (Emitter Animation GraVity) stores information about gravity animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EAGV in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EAPL
The EAPL section (Emitter Animation Particle Life) stores information about particle life animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EAPL in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EAC0
The EAC0 section (Emitter Animation Color 0) stores information about global color 0 animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EAC0 in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EAC1
The EAC1 section (Emitter Animation Color 1) stores information about global color 1 animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EAC1 in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EAA0
The EAA0 section (Emitter Animation Alpha 0) stores information about global alpha 0 animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EAA0 in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EAA1
The EAA1 section (Emitter Animation Alpha 1) stores information about global alpha 1 animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EAA1 in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
EASS
The EASS section (Emitter Animation Shape Scale) stores information about emitter volume scale animation.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always EASS in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub data offset. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
ESFT
The ESFT section (Effect Set F T) stores effect set file names.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always ESFT in ASCII.
|
0x04 |
UInt32 |
Size of all ESFT entries in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub binary data. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
ESFT entry offset (image offset).
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs. Unused, thus 0.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
ESFT Entry
Offset |
Type |
Description
|
0x00 |
Byte[16] |
Unknown.
|
0x10 |
UInt32 |
Next entry offset. 0 means this is the last entry.
|
0x14 |
UInt32 |
Length of file name, including a null-terminated byte.
|
0x18 |
String |
File name.
|
GRTF
The GRTF section (Graphics Resource Texture File) stores the textures used in the particle effects. The textures are stored in a BNTX, embedded in the file. It has the following structure:
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always GRTF in ASCII.
|
0x04 |
UInt32 |
Size of BNTX in bytes.
|
0x08 |
UInt32 |
GTNT offset (child offset).
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub binary data. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
BNTX offset (image offset).
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of GTNTs. Will always be 1.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
GTNT
The GTNT section (Graphics Texture Name Table) stores the texture names as well as a unique ID for all of them. It has the following structure:
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always GTNT in ASCII.
|
0x04 |
UInt32 |
Size of all texture entries in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub binary data. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
First texture entry offset (image offset).
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs. Unused, thus 0.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
Texture Entry
Each texture entry has the following structure:
Offset |
Type |
Description
|
0x00 |
UInt64 |
Unique ID.
|
0x08 |
UInt32 |
Next texture entry offset. 0 means this is the last entry.
|
0x0C |
UInt32 |
Length of texture name, including a null-terminated byte.
|
0x10 |
String |
Texture name.
|
PRMA
The PRMA section (PRiMitive Array) stores primitive data in a raw format. It has the following structure:
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always PRMA in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes, excluding this header.
|
0x08 |
UInt32 |
PRIM offset (child offset).
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub binary data. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Image offset. Unused.
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of PRIMs.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
PRIM
The PRIM section (PRIMitive) stores primitive data in a raw format. Each entry has the following structure:
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always PRMA in ASCII.
|
0x04 |
UInt32 |
Size of this section in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, this 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub binary data. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
Primitive offset (image offset).
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs. Unused, thus 0.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
Primitive
The primitive structure contains the actual data. All of the offsets are relative to the start of this entry. It has the following structure:
Offset |
Type |
Description
|
0x00 |
UInt64 |
Unique ID.
|
0x08 |
Int32 |
Position count.
|
0x0C |
Int32 |
Position element count.
|
0x10 |
Int32 |
Normal count.
|
0x14 |
Int32 |
Normal element count.
|
0x18 |
Int32 |
Tangent count.
|
0x1C |
Int32 |
Tangent element count.
|
0x20 |
Int32 |
Vertex color count.
|
0x24 |
Int32 |
Vertex color element count.
|
0x28 |
Int32 |
UV 0 count.
|
0x2C |
Int32 |
UV 0 element count.
|
0x30 |
Int32 |
UV 1 color count.
|
0x34 |
Int32 |
UV 1 color element count.
|
0x38 |
Int32 |
Index buffer count. Number of indices in the index buffer.
|
0x3C |
UInt32 |
Position buffer offset.
|
0x40 |
UInt32 |
Normal buffer offset.
|
0x44 |
UInt32 |
Tangent buffer offset.
|
0x48 |
UInt32 |
Vertex color buffer offset.
|
0x4C |
UInt32 |
UV buffer offset.
|
0x50 |
UInt32 |
Index buffer offset.
|
If version ≥ 22.4.0
|
0x54 |
UInt32 |
Unknown, possibly padding.
|
The buffer data is aligned by 0x40 with padding byte 0xCC.
G3PR
The G3PR section (G3D PRimitive) stores models used for particle effects. The models are stored into a BFRES, embedded in the file. It has the following structure:
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always G3PR in ASCII.
|
0x04 |
UInt32 |
Size of BFRES in bytes.
|
0x08 |
UInt32 |
G3NT offset (child offset).
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub binary data. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
BFRES offset (image offset).
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of G3NTs. Will always be 1.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
G3NT
The G3NT section (G3D Name Table) stores the model names as well as a unique ID for all of them. It has the following structure:
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always G3NT in ASCII.
|
0x04 |
UInt32 |
Size of all model entries in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub binary data. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
First model entry offset (image offset).
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of childs. Unused, thus 0.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
Model Entry
Even though the structure specifies the length of a model name, the name doesn't seem to be stored. Each model entry has the following structure:
Offset |
Type |
Description
|
0x00 |
UInt64 |
Unique ID.
|
0x08 |
UInt32 |
Next model entry offset. 0 means this is the last entry.
|
0x0C |
UInt32 |
Length of model name, including a null-terminated byte. This seems to be a dummy value, and is always 8.
|
0x10 |
Byte |
Position (_p0) attribute index. 0xFF if it's unused.
|
0x11 |
Byte |
Normal (_n0) attribute index. 0xFF if it's unused.
|
0x12 |
Byte |
Tangent (_t0) attribute index. 0xFF if it's unused.
|
0x13 |
Byte |
Vertex color (_c0) attribute index. 0xFF if it's unused.
|
0x14 |
Byte |
UV channel 0 (_u0) attribute index. 0xFF if it's unused.
|
0x15 |
Byte |
UV channel 1 (_u1) attribute index. 0xFF if it's unused.
|
0x16 |
Byte[2] |
Padding.
|
GRSN
The GRSN section (Graphics Resource Shader Normal) stores vertex and fragment shaders used in the particle effects. The shaders are stored in a BNSH, embedded in the file. It has the following structure:
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always GRSN in ASCII.
|
0x04 |
UInt32 |
Vertex/Fragment shader data size in bytes.
|
0x08 |
UInt32 |
GRSC offset (child offset).
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub binary data. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
BNSH offset (image offset).
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of GRSCs. Always be 0, even if one entry is stored.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
GRSC
The GRSC section (Graphics Resource Shader Compute) stores compute shaders.
Offset |
Type |
Description
|
0x00 |
Char[4] |
Section magic. Always GRSC in ASCII.
|
0x04 |
UInt32 |
Compute shader data size in bytes.
|
0x08 |
UInt32 |
Child offset. Unused, thus 0xFFFFFFFF.
|
0x0C |
UInt32 |
Offset to the next section.
|
0x10 |
UInt32 |
Sub binary data. Unused, thus 0xFFFFFFFF.
|
0x14 |
UInt32 |
BNSH offset (image offset).
|
0x18 |
UInt32 |
Unique ID.
|
0x1C |
UInt16 |
Number of entries. Always 0.
|
0x1E |
Byte |
Flipped flag.
|
0x1F |
Byte |
Endianness flag.
|
Version List
Version |
Found in |
BFRES versions |
BNTX versions |
BNSH versions
|
19.4.0
|
- Mario Kart 8 Deluxe (S00018080-R00018076-A00000000 Prototype)
- Nintendo Switch System BIOS (1.0.0)
|
|
|
|
20.4.0
|
|
|
|
|
21.4.0
|
|
|
|
|
22.4.0
|
|
- 8.0.0
- 8.1.1
- 8.1.3
- 8.2.1
- 9.0.0
- 9.1.0
|
|
- 2.1.2
- 2.1.5
- 2.1.10
- 2.1.11
- 2.1.12
- 2.2.1
|
36.4.0
|
|
|
|
|
37.4.0
|
|
|
|
|
38.4.0
|
|
|
|
|
39.4.0
|
|
|
|
|
43.4.0
|
|
|
|
|
46.4.0
|
|
|
|
|
48.4.0
|
|
|
|
|
51.4.0
|
|
|
|
|
52.4.0
|
|
|
|
|
Tools
The following tools can handle PTCL files: