040386c0fb
Volumes: the reference that did not generalise
ReaperOfVeriod2026-10-13 07:35:58 +02:00
ca277a0a01
Volumes: a candidate table found, explicitly not called volumes
ReaperOfVeriod2026-10-13 07:33:26 +02:00
28ab7e094b
SBlk head characterised: four constants and one word that is not a count
ReaperOfVeriod2026-10-13 07:29:07 +02:00
bc5ebe559f
Tie slots 3, 6, 7: two readings excluded, and why the LOD test stops working
ReaperOfVeriod2026-10-13 07:24:29 +02:00
e86de3c73e
Tie i16[0..2] are the vertex positions, with a control in the test
ReaperOfVeriod2026-10-13 07:21:57 +02:00
06cf2fd46d
Tie vertex slot 3 is a byte-sized index, not a coordinate
ReaperOfVeriod2026-10-13 07:18:13 +02:00
1fa1913e38
Reconcile the docs after the last three corrections
ReaperOfVeriod2026-10-13 07:13:45 +02:00
282e633a7c
Withdraw the collision anchor: it was a byte-order bug in my own search
ReaperOfVeriod2026-10-13 07:10:17 +02:00
1f903efe23
An external decomp turns two overlay constants from measured into named
ReaperOfVeriod2026-10-13 07:07:21 +02:00
26a0918178
Gate the PCSX2 claims as tests; two corrections fall out of writing them
ReaperOfVeriod2026-10-13 06:59:22 +02:00
9f938f47de
Assert the tie vertex layout finding in a test, and audit which claims are asserted
ReaperOfVeriod2026-10-13 06:54:52 +02:00
922248a4ec
Tie: the element layout differs by i16[3] high byte, and (6,7) is a real pair
ReaperOfVeriod2026-10-13 06:53:22 +02:00
ed3e85a0f2
Refine the tie texcoord finding: it is i16[3]'s HIGH byte that selects
ReaperOfVeriod2026-10-13 06:50:08 +02:00
e27c40e738
Explain the tie texcoord residual: i16[3] selects the encoding
ReaperOfVeriod2026-10-13 05:19:06 +02:00
3ee0b3d0dc
Disprove that morphing causes the tfrag byte changes: LOD selection does
ReaperOfVeriod2026-10-13 05:14:40 +02:00
aff977e8c5
Correct the tfrag pointer-field claim, and show morphing regenerates VU packets
ReaperOfVeriod2026-10-13 05:08:08 +02:00
93591a79de
Verify the tfrag record framing against RAM: two pointer fields, morphed vertices
ReaperOfVeriod2026-10-13 05:04:25 +02:00
6d0c1b6fd1
Close out tfrag on the disc side, and fix two stale "not recovered" claims
ReaperOfVeriod2026-10-13 04:50:28 +02:00
d56b439502
Exclude the collision segmentation theories on the full population, and name the unblock
ReaperOfVeriod2026-10-13 04:46:10 +02:00
338af9b7bd
Fix the collision grid dims, and disprove two sample artifacts in the payload
ReaperOfVeriod2026-10-13 04:44:09 +02:00
d5e637930b
Show the collision payload is verbatim in RAM, and retract the "not in RAM" claim
ReaperOfVeriod2026-10-13 04:40:01 +02:00
180fc27b04
Locate the tie texcoord field at i16[4]/i16[5], and rule out the (6,7) artifact
ReaperOfVeriod2026-10-13 04:30:45 +02:00
35b087c882
Establish the tie vertex element is 16 bytes, and correct the roadmap's tie entry
ReaperOfVeriod2026-10-13 04:27:54 +02:00
54862b64ee
Identify the tie record as RAC1's TiePacketHeader, and retract a formula
ReaperOfVeriod2026-10-13 04:22:38 +02:00
4e90c282ad
Make the tie record relocation a command, and verify it on two levels
ReaperOfVeriod2026-10-12 15:24:48 +02:00
e6eecb871f
Decode the tie LOD block: it is a table of 16-byte records
ReaperOfVeriod2026-10-12 07:17:41 +02:00
c2af0528e3
Correct the chunk loader finding and decode a record field
ReaperOfVeriod2026-10-12 06:00:29 +02:00
8147110377
Bring the roadmap's chunk section up to date
ReaperOfVeriod2026-10-12 04:32:43 +02:00
2c4bbdc600
Use PCSX2 RAM to recover the chunk loader's transformation
ReaperOfVeriod2026-10-12 04:32:07 +02:00
e2b12a2e52
Rule out a count field in chunk record bodies; correct a six-record impression
ReaperOfVeriod2026-10-12 04:27:54 +02:00
28680b4be3
Show the first two chunk-record bytes encode the record's own index
ReaperOfVeriod2026-10-12 04:25:44 +02:00
79914c420e
Show the chunk record's leading byte is a per-chunk phase counter; every chunk has a uniform record length
ReaperOfVeriod2026-10-12 04:21:32 +02:00
a9bf74fc10
Characterise all 77 chunk types: record byte 0 is a bucket index, not data
ReaperOfVeriod2026-10-12 04:18:55 +02:00
291153a0d9
Find the tie LOD block terminator; packets == 0 means no block at that LOD
ReaperOfVeriod2026-10-12 04:13:52 +02:00
02342de31b
Decode the tie LOD block header; establish the payload is variable-length
ReaperOfVeriod2026-10-12 04:09:08 +02:00
881fd48e9a
Withdraw the 16-byte tie record claim: block size is a multiple of 16, not records
ReaperOfVeriod2026-10-12 03:56:41 +02:00
855e640f39
Establish the 16-byte tie record on measurable classes; packets[0] is a constant
ReaperOfVeriod2026-10-12 03:50:42 +02:00
60e3f129d8
Resolve both tie indirections on all 1,864 classes, and disprove a sample artifact
ReaperOfVeriod2026-10-12 03:47:49 +02:00
e5d267a810
Reconcile roadmap.md with the parsers that actually exist
ReaperOfVeriod2026-10-12 03:43:44 +02:00
d8b8ccc6d4
Follow the gameplay.bin pointers: they address position and direction arrays
ReaperOfVeriod2026-10-12 03:36:55 +02:00
b17ec17127
Rule out the moby_anim instance-table reading of the chunk types
ReaperOfVeriod2026-10-12 03:33:52 +02:00
02ced5ee83
Parse the per-level overlay: header, constant block, level data
ReaperOfVeriod2026-10-12 03:32:02 +02:00
bd012efe71
Find a 64-byte collision record stride in RAM, and record a savestate search pitfall
ReaperOfVeriod2026-10-12 03:27:14 +02:00
d3e1475f64
Characterise gameplay.bin as a flat pointer table, and record volumes as unlocated
ReaperOfVeriod2026-10-12 03:19:03 +02:00
575d1a5bdd
Correct the overlay strings from a table to a pool
ReaperOfVeriod2026-10-12 03:17:50 +02:00
a5a33b9bc0
Locate level_overlay's sections and a 16-aligned debug string table
ReaperOfVeriod2026-10-12 03:11:25 +02:00
e58ab0e815
Correct the collision table's extent: 17 entries, deltas rise then fall
ReaperOfVeriod2026-10-12 03:08:03 +02:00
b66e77855c
Locate a per-cell offset table in collision, on level 4
ReaperOfVeriod2026-10-12 03:03:18 +02:00
2569cc06ab
Decode the collision payload's leading two counts
ReaperOfVeriod2026-10-12 02:58:46 +02:00
72bbd5da38
Rule out GS packet framing in tie, with a control that nearly fooled me
ReaperOfVeriod2026-10-12 02:56:58 +02:00
86ff2e6052
Measure tie spans: a constant first word and three quantized floats
ReaperOfVeriod2026-10-12 02:52:45 +02:00
32a24574be
Identify data.bin as the level file descriptor, not geometry
ReaperOfVeriod2026-10-12 02:50:24 +02:00
5610d173b0
Narrow the collision header to two fields plus a third used by five levels
ReaperOfVeriod2026-10-12 02:49:25 +02:00
51348b214d
Report the sky reserved-word count in the test output
ReaperOfVeriod2026-10-12 02:43:40 +02:00
681e7e62ef
Parse the sky block: 149 sub-objects with a bounding sphere, and correct the count field
ReaperOfVeriod2026-10-12 02:43:28 +02:00
bbce492c91
Establish that the loader produces the RAM packet forms, not the disc
ReaperOfVeriod2026-10-12 02:37:55 +02:00
5ade83cf0a
Parse the shrub packet header, a fixed signature on all 2056 disc packets
ReaperOfVeriod2026-10-12 02:35:00 +02:00
af0b1aa949
Repeat the packet measurements per level, correcting two over-general claims
ReaperOfVeriod2026-10-12 02:31:27 +02:00
186a700f32
Establish the sub-list payload as a fixed five-block shape
ReaperOfVeriod2026-10-12 02:30:06 +02:00
3fa64b7003
Read a full sub-list payload: tagged blocks and a byte permutation table
ReaperOfVeriod2026-10-12 02:28:07 +02:00
f1cf6cd164
Show the byte-8 count sizes sub-list payloads at exactly 16 bytes each
ReaperOfVeriod2026-10-12 02:27:28 +02:00
db76319600
Find a second packet record magic interleaved with the first
ReaperOfVeriod2026-10-12 02:24:22 +02:00
2d7de9f13e
Correct the packet tag mapping: the tag does not select the payload
ReaperOfVeriod2026-10-12 02:22:06 +02:00