Source formats/zelim-binary.ksy (Kaitai Struct). Little-endian. 64-byte header, then element records (v1: 128 B, v2: 144 B), group records (64 B) and a
length-prefixed UTF-8 JSON metadata block. Writers emit v2 only; readers accept v1 and v2.
v1 (as written by Sphere zelim_service.dart): groupsOffset / metadataOffset may be 0 → computed; the 9th
interaction-matrix value never fits the 128-byte record → readers take 8 values and set the 9th to 0;
compression is informative (`quantum_lz4` was never applied → read as none); group slot id 0 = empty.
v2: explicit offsets, `parentId` (0xFFFFFFFF = root), 9 matrix values, group `memberCount` (id 0 is valid),
compression only `none` / empty, header word 60 (`flags`) = 0.
Every offset / count is checked against the file size before anything is read (length checks); trailing
bytes after the metadata are ignored, never written. Files shorter than 64 bytes are invalid.
| id | type | size / repeat | doc |
|---|---|---|---|
magic | contents [90,69,76,73,77,0,0,0] | "ZELIM" + 3 zero bytes | |
version | u4 | ||
timestamp | u8 | ms since the Unix epoch | |
scene_size | u4 | informative | |
compression | strz | 16 | NUL-padded; v2 only `none` / empty; v1 any (treated as none) |
num_elements | u4 | spec name elementsCount (02e §9.4) | |
num_groups | u4 | spec name groupsCount | |
elements_offset | u4 | ||
groups_offset | u4 | v1 may be 0 → elements_offset + num_elements * 128 | |
metadata_offset | u4 | v1 may be 0 → groups position + num_groups * 64 | |
flags | u4 | v1 reserved (ignored); v2 flags, must be 0. Also checks the computed v1 positions. |
128 bytes; matrix values 0..7 only (the 9th would overflow the record), bytes 124..127 ignored
| id | type | size / repeat | doc |
|---|---|---|---|
id | u8 | ||
orbit_angle | f8 | ||
radius | f8 | ||
phase | f8 | ||
energy_level | f8 | ||
quantum_state | u4 | ||
attraction_coefficient | f8 | ||
conservation_factor | f8 | ||
interaction_matrix | f8 | repeat expr 8 | |
tail | bytes | 4 |
144 bytes, 8-byte aligned
| id | type | size / repeat | doc |
|---|---|---|---|
id | u4 | ||
parent_id | u4 | 0xFFFFFFFF = root | |
orbit_angle | f8 | ||
radius | f8 | ||
phase | f8 | ||
energy_level | f8 | ||
quantum_state | u4 | ||
reserved1 | u4 | ||
attraction_coefficient | f8 | ||
conservation_factor | f8 | ||
interaction_matrix | f8 | repeat expr 9 | |
reserved2 | u8 |
64 bytes; member slot value 0 = empty
| id | type | size / repeat | doc |
|---|---|---|---|
id | u8 | ||
energy_transfer_rate | f8 | ||
collision_threshold | f8 | ||
group_type | strz | 16 | |
member_slots | u4 | repeat expr 5 | |
reserved | bytes | 4 |
64 bytes; the first member_count slots are members (0 is a valid element id)
| id | type | size / repeat | doc |
|---|---|---|---|
id | u4 | ||
reserved1 | u4 | ||
energy_transfer_rate | f8 | ||
collision_threshold | f8 | ||
group_type | strz | 16 | |
member_slots | u4 | repeat expr 5 | |
member_count | u1 | ||
reserved2 | bytes | 3 |
| id | type | size / repeat | doc |
|---|---|---|---|
len_json | u4 | ||
json | str | len_json | {generator, version, created, quantumElements, interactionGroups[, projectId]} |
Graphviz: zelim-binary.dot (render with dot -Tsvg).
NativeMindNONC · commercial use → NativeMind sales · [email protected]