Particle instances (.particlebin)
Ambient effects (falling leaves and cherry blossom, bird flocks, koi, fireflies, mist, kites, streamers, light shafts)
are placed as particle instances: an effect name, a place, a size and a few strings that gate the instance. A track’s
are in Ribbon_00\ParticleInstances.particlebin; each route has its own in
Stripped\gs\<track>\routedefinitions\route<id>_<track>.particlebin, beside its sound scape. The install holds 170
such files: the Tokyo track’s, the home space’s and 168 route definitions. Proven
Container
Section titled “Container”A .particlebin is a Grub bundle with one blob, tag PCLB, no metadata
records. Proven The blob is version 7.0 in 169 files and 6.0 in the home space’s, which holds no instance; the layout of
a version 6.0 file that has instances is unknown. Observed The blob’s data is a memory image: every offset in it is
measured from the start of the data. Proven
Little-endian. The 16-byte header, then the instances, then the strings to the end of the data.
| Offset | Size | Type | Field | Confidence | Notes |
|---|---|---|---|---|---|
| 0x0 | 4 | u32 = 8 | eight | Proven | all 170 files |
| 0x4 | 4 | u32 | instance count | Proven | 0 in 92 files, 1 to 87 in 77 route definitions (508 in all), 3,959 in the track's |
| 0x8 | 4 | u32 = 16 | sixteen | Proven | the offset of the first instance |
| 0xC | 4 | u32 | first instance | Proven | 16, or 0xFFFFFFFF when the count is 0 |
| 0x10 | 129 n | instance[] | instances | Proven | |
| next | variable | cstring[] | strings | Proven | printable ASCII, each zero-terminated; each is named by some instance; empty when the count is 0 |
Little-endian, unaligned (the byte at 120 shifts what follows). R is the offset of the instance in the blob data. A string field is the offset of the first byte of a string of the strings section; a link is the offset of another slot.
| Offset | Size | Type | Field | Confidence | Notes |
|---|---|---|---|---|---|
| 0x0 | 4 | u32 | name | Proven | string; 986 distinct in the track's file, like falling_leaves_customizable_Instance12 |
| 0x4 | 4 | u32 = R + 8 | link | Proven | |
| 0x8 | 4 | u32 | effect | Proven | string; 50 distinct in the track's file, like falling_leaves_customizable |
| 0xC | 4 | u32 = R + 112 | link | Proven | |
| 0x10 | 16 | u32[4] = 1, 0, 0, 0 | constants | Proven | |
| 0x20 | 4 | f32 = 1 | one | Proven | |
| 0x24 | 12 | f32[3] | position | Observed | world frame; x −17,103 to 6,743, y 93 to 856, z −9,899 to 8,500 in the track's file |
| 0x30 | 16 | f32[4] | rotation | Observed | a unit quaternion x, y, z, w (length within 1.4e-7 of 1 on all 3,959 of the track's file) |
| 0x40 | 12 | f32[3] | extent | Unknown | whole metres up to float rounding: 2, 8, 2 for 681 instances, 5, 9, 4 for about 600 |
| 0x4C | 4 | u32 = 0xFFFFFFFF | null | Proven | |
| 0x50 | 4 | f32 | distance | Unknown | 0 for 86 instances, otherwise 50 to 6,000; 65 for 1,914 of the track's |
| 0x54 | 4 | u32 = 0 | zero | Proven | |
| 0x58 | 4 | u32 = 0xFFFFFFFF | null | Proven | |
| 0x5C | 4 | u32 = R + 96 | link | Proven | |
| 0x60 | 4 | u32 = 0xFFFFFFFF | null | Proven | |
| 0x64 | 4 | u32 | next | Proven | R + 129, or 0xFFFFFFFF on the last instance |
| 0x68 | 4 | u32 | tag | Observed | string; empty for 3,956 of the track's file, [TIME_ATTACK_DRIFT_CIRCUIT_HORIZON] for one, 0 for two |
| 0x6C | 4 | u32 = R + 121 | link | Proven | |
| 0x70 | 4 | u32 | route | Observed | string in the form of a .pgeo header's route string: empty, 0, ~1281, ~351;~8008, ... |
| 0x74 | 4 | u32 = R + 104 | link | Proven | |
| 0x78 | 1 | u8 | flag | Unknown | 0 or 1; 1 for 248 of the track's |
| 0x79 | 4 | u32 | group | Observed | string; empty for 478 of the track's, otherwise 25 names such as leaves_ginkgo_falling, seagulls_audio, koi_carps |
| 0x7D | 4 | u32 = R + 88 | link | Proven |
The links make one singly linked chain through an instance’s seven slots (the five string fields and the two null slots): 0, 8, 112, 104, 121, 88, 96, then the next instance’s 0. Proven Every one of the 4,467 instances holds the values above. Proven
What is known about the fields
Section titled “What is known about the fields”- The track’s file names 986 instances, 50 effects and 26 groups; the commonest effects are
falling_leaves_customizable(1,911 instances),cherry_blossom_falling_customizable(960),wild_birds_flock_customizable(237),wild_koicarp_customizable(168) andLight_Skyscrapper(134). Observed - The
routestring uses the same grammar as the route of a.pgeoheader (~before an id, ids joined by;); that it gates the instance the same way is not established. Unknown - The meaning of
extent,distance, the byte at 120 and thegroupstring is not established;distancetakes the values of a draw distance (50 m to 6 km) but nothing was run to show it. Unknown
The strings suggest a gating by route and gameplay tag, and an audio group; none of it was tested against the running game.