PTCL (File Format)/Switch

From Wexos's Wiki
Revision as of 17:58, 1 May 2024 by Wexos (talk | contribs) (Imported from avsys wiki)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

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

Header

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.

Section Header

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:

Offset Type Description
0x00 UInt32 Flag.
0x04 UInt32 Random seed.
0x08 UInt32[2] Padding.
0x10 Char[64] Name.
0x50 Emitter static uniform block.
0x750 Emitter fnd.
0x7D8 Inherit.
0x7F0 Emission.
0x838 Emitter volume.
0x898 Render state.
0x8A8 Particle fnd.
0x8F8 Combiner.
0x910 Shader.
0x968 Action.
0x96C Particle velocity.
0x99C Particle color.
0x9C8 Particle scale.
0x9EC Particle fluctuation.
0x9F8 Texture sampler 0.
0xA10 Texture sampler 1.
0xA28 Texture sampler 2.
0xA40 Texture animation 0.
0xA50 Texture animation 1.
0xA60 Texture animation 2.
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
Offset Type Description
0x00 Float Field spin rotate.
0x04 UInt32 Field spin axis.
0x08 Float Field spin outer.
0x0C Animation 8 Key Parameter Set Rotation animation parameter.
0xA0 Animation 8 Key Parameter Set Outer animation parameter.
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)
  • 5.0.3
  • 4.0.0
  • 2.1.2
20.4.0
  • 5.0.3
  • 4.0.0
  • 2.1.2
21.4.0
  • 5.0.3
  • 4.0.0
  • 2.1.2
22.4.0
  • 8.0.0
  • 8.1.1
  • 8.1.3
  • 8.2.1
  • 9.0.0
  • 9.1.0
  • 4.0.0
  • 4.1.0
  • 2.1.2
  • 2.1.5
  • 2.1.10
  • 2.1.11
  • 2.1.12
  • 2.2.1
36.4.0
  • 9.0.0
  • 4.0.0
  • 2.1.11
37.4.0
  • 9.0.0
  • 4.0.0
  • 2.1.11
38.4.0
  • 9.0.0
  • 4.1.0
  • 2.1.11
39.4.0
  • 9.0.0
  • 4.1.0
  • 2.1.11
43.4.0
  • 9.1.1
  • 4.1.0
  • 2.1.12
46.4.0
  • 10.0.0
  • 4.1.0
  • 2.1.12
48.4.0
  • 9.1.0
  • 4.1.0
  • 2.1.12
51.4.0
  • 10.0.0
  • 4.1.0
  • 2.2.1
52.4.0
  • 10.0.0
  • 4.1.0
  • 2.2.1
Game PTCL Version BNTX version BFRES version BNSH version
Animal Crossing: New Horizons
  • 38.4.0
  • 4.1.0
  • 9.0.0
  • 2.1.11
Big Brain Academy: Brain vs. Brain
  • 22.4.0
  • 4.1.0
  • 2.1.11
Clubhouse Games: 51 Worldwide Classics
  • 22.4.0
  • 4.1.0
  • 9.0.0
  • 2.1.11
Everybody 1-2-Switch!
  • 22.4.0
  • 4.1.0
  • 9.0.0
  • 2.1.11
F-ZERO 99
  • 22.4.0
  • 4.1.0
  • 9.1.0
  • 2.2.1
Game Builder Garage
  • 22.4.0
  • 4.0.0
  • 8.1.1
  • 2.1.5
Kirby's Dream Buffet
  • 48.4.0
  • 4.1.0
  • 9.1.0
  • 2.1.12
Kirby Fighters 2
  • 39.4.0
  • 4.1.0
  • 9.0.0
  • 2.1.11
Mario Kart 8 Deluxe
  • 21.4.0
  • 4.0.0
  • 5.3.0
  • 2.1.2
Mario Kart 8 Deluxe (S00018080-R00018076-A00000000 Prototype)
  • 19.4.0
  • 4.0.0
  • 5.3.0
  • 2.1.2
Mario Party Superstars
  • 22.4.0
  • 4.0.0
  • 8.1.1
  • 2.1.5
Mario Tennis Aces
  • 21.4.0
  • 4.0.0
  • 8.1.1
  • 2.1.5
Momotaro Dentetsu: Showa, Heisei, Reiwa mo Teiban!
  • 22.4.0
  • 4.0.0
  • 2.1.11
New Super Mario Bros U. Deluxe
  • 22.4.0
  • 4.0.0
  • 8.1.1
  • 2.1.5
Nintendo Switch Sports
  • 43.4.0
  • 4.1.0
  • 9.1.1
  • 2.1.12
PAC-MAN 99
  • 22.4.0
  • 4.1.0
  • 2.1.11
Paper Mario: The Origami King
  • 22.4.0
  • 4.1.0
  • 9.0.0
  • 2.1.11
Pikmin 3 Deluxe
  • 22.4.0
  • 4.0.0
  • 8.1.1
  • 2.1.11
Pokémon Legends: Arceus
  • 22.4.0
  • 4.1.0
  • 9.0.0
  • 2.1.11
Pokémon Scarlet
  • 22.4.0
  • 4.1.0
  • 9.1.0
  • 2.1.12
Pokémon Shield
  • 22.4.0
  • 4.0.0
  • 9.0.0
  • 2.1.11
Pokémon Sword
  • 22.4.0
  • 4.0.0
  • 9.0.0
  • 2.1.11
Pokémon Violet
  • 22.4.0
  • 4.1.0
  • 9.1.0
  • 2.1.12
Ring Fit Adventure
  • 36.4.0
  • 4.0.0
  • 9.0.0
  • 2.1.11
Splatoon 2
  • 22.4.0
  • 4.0.0
  • 8.0.0
  • 2.1.5
Splatoon 3
  • 46.4.0
  • 4.1.0
  • 10.0.0
  • 2.1.12
Super Kirby Clash
  • 22.4.0
  • 4.0.0
  • 9.0.0
  • 2.1.11
Super Mario 3D World + Bowser's Fury
  • 22.4.0
  • 4.1.0
  • 9.0.0
  • 2.1.11
Super Mario Bros. Wonder
  • 52.4.0
  • 4.1.0
  • 10.0.0
  • 2.2.1
Super Mario Maker 2
  • 37.4.0
  • 4.0.0
  • 9.0.0
  • 2.1.11
Super Mario Odyssey
  • 22.4.0
  • 4.0.0
  • 8.0.0
  • 2.1.5
Super Mario Party
  • 22.4.0
  • 4.0.0
  • 8.1.1
  • 2.1.5
Sushi Striker: The Way of Sushido (Nintendo Switch)
  • 22.4.0
  • 4.0.0
  • 2.1.5
Tetris 99
  • 22.4.0
  • 4.0.0
  • 2.1.10
The Legend of Zelda: Breath of the Wild (Nintendo Switch)
  • 20.4.0
  • 4.0.0
  • 5.0.3
  • 2.1.2
The Legend of Zelda: Link's Awakening
  • 22.4.0
  • 4.1.0
  • 9.0.0
  • 2.1.11
The Legend of Zelda: Tears of the Kingdom
  • 51.4.0
  • 4.1.0
  • 10.0.0
  • 2.2.1
Tokyo Mirage Sessions ♯FE Encore
  • 22.4.0
  • 4.0.0
  • 9.0.0
  • 2.1.11
WarioWare: Get It Together!
  • 22.4.0
  • 4.1.0
  • 9.0.0
  • 2.1.11
WarioWare: Move It!
  • 22.4.0
  • 4.1.0
  • 9.1.0
  • 2.1.12

Tools

The following tools can handle PTCL files:

  • (none)