Commit Graph

  • e389d6d082 UpdateCamera_6 verified at 0x4284a8 -- three independent checks main ReaperOfVeriod 2026-10-15 03:36:08 +02:00
  • 615ff937ea Decomp advanced 18 commits to 8a174cb; 14 new matched functions land in our .text ReaperOfVeriod 2026-10-15 03:33:31 +02:00
  • 20655c7744 Stop pattern-matching RAM: follow UpdateCamera_6 from lvl.camvtbl ReaperOfVeriod 2026-10-15 03:32:18 +02:00
  • ca42793e48 Frustum search: bounded with a proper filter, not found ReaperOfVeriod 2026-10-15 03:31:19 +02:00
  • e7eec01b50 m4 is the live camera: a 20x outlier against eight controls ReaperOfVeriod 2026-10-15 03:29:14 +02:00
  • d4e81ba977 Correction: the camera region is nine matrices, not three ReaperOfVeriod 2026-10-15 03:27:01 +02:00
  • dcd4dd6246 Camera transform found at 0x18aa70: three orthonormal matrices, one position ReaperOfVeriod 2026-10-15 03:23:02 +02:00
  • b4d605a2f4 Docs audit: 15 stale figures left behind by two fixes, including a wrong numerator ReaperOfVeriod 2026-10-15 03:17:23 +02:00
  • 6e5486de88 Docs audit: nine stale class-ID counts left behind by the terminator fix ReaperOfVeriod 2026-10-15 03:15:02 +02:00
  • 3dbd384b59 The guard-band clip test: implemented and unit-tested ahead of the camera ReaperOfVeriod 2026-10-15 03:09:57 +02:00
  • 1aa94ee288 0x152c70 rejected as the camera; the savestates are not consecutive frames ReaperOfVeriod 2026-10-15 03:04:33 +02:00
  • a991088103 Camera state: 2,005 per-frame float triples, one singleton candidate ReaperOfVeriod 2026-10-15 02:15:05 +02:00
  • e3e0a30030 The GS TEX0 register set, and why TBP0 is region-relative ReaperOfVeriod 2026-10-14 13:36:16 +02:00
  • 66e83f1665 The tfrag clip cube is at +0x38, and +0x2e is the mini-sphere array ReaperOfVeriod 2026-10-14 13:09:54 +02:00
  • 3a1156d8e1 The tfrag morph is not in the data block: positions are verbatim in RAM ReaperOfVeriod 2026-10-14 12:27:38 +02:00
  • 4d66cf6214 The tie vertex element is 16 bytes and the layout cycles; correct e5cd3df ReaperOfVeriod 2026-10-14 07:01:15 +02:00
  • d4aeb94616 Extent check inconclusive; the opcode field itself is not understood ReaperOfVeriod 2026-10-14 06:28:26 +02:00
  • 91b09955c8 The shortlist points at VU microcode; the decomp extents are unverified ReaperOfVeriod 2026-10-14 06:27:05 +02:00
  • 36d8d2b00c The frequency enrichment survives the redo; the disassembly does not ReaperOfVeriod 2026-10-14 06:23:49 +02:00
  • 4a826997f6 Redone on correct bytes: the disassembly chain is gone, 0x2ee138 is VU microcode ReaperOfVeriod 2026-10-14 06:20:27 +02:00
  • cd1648571c The verified mapping is the flat memory image, not section indexing ReaperOfVeriod 2026-10-14 06:16:58 +02:00
  • e6b3e0b091 Root cause: the per-section indexing used throughout this investigation was wrong ReaperOfVeriod 2026-10-14 06:14:14 +02:00
  • f2d7e7ecd4 d97e7df was wrong: my section offset was wrong, not the decoder ReaperOfVeriod 2026-10-14 06:01:54 +02:00
  • d97e7df41f Second decode error in the same investigation; stopping rather than trusting this decoder ReaperOfVeriod 2026-10-14 05:56:00 +02:00
  • e1482abd75 Correct my own decode bug: there is a caller, and r2 is a return value ReaperOfVeriod 2026-10-14 05:47:29 +02:00
  • 349b498ddd r2 is never written in the enclosing function, and it has no callers ReaperOfVeriod 2026-10-14 05:44:46 +02:00
  • eca1a16b17 Call sites: one caller, and it does not compute base + 0xc0 ReaperOfVeriod 2026-10-14 05:41:48 +02:00
  • cee17c95b1 Disassembled: 0xc0 is an address offset, and the walk is 16-byte strided ReaperOfVeriod 2026-10-14 05:40:08 +02:00
  • 05d9bf6cd7 The 72 concentrated candidates, and a float-constant ambiguity ReaperOfVeriod 2026-10-14 05:36:13 +02:00
  • a2f8c924b4 moby_classes.offset enrichment is size-independent: 13x to 72x at matched size ReaperOfVeriod 2026-10-14 05:34:42 +02:00
  • 06531fb66c The 394 does not survive: 0xc0's rate rises with immediate-set size ReaperOfVeriod 2026-10-14 05:32:34 +02:00
  • db1e69c0ab Ranking the 394 by size is backwards; record the confound ReaperOfVeriod 2026-10-14 05:30:07 +02:00
  • 3ea5ab799f moby_classes.offset is referenced by 394 functions; its neighbours by 1 to 14 ReaperOfVeriod 2026-10-14 05:28:34 +02:00
  • 59957a02a2 Attribute the 0xc0 immediate sites to functions: 410 candidates ReaperOfVeriod 2026-10-14 05:23:14 +02:00
  • 56b00fb305 Fix the immediate scan by filtering on opcode; still no signal ReaperOfVeriod 2026-10-14 05:17:47 +02:00
  • 27891ce5b4 Cross-reference scan by raw immediate: the method cannot tell ReaperOfVeriod 2026-10-14 05:15:07 +02:00
  • 743107e864 moby_anim: the class table is not the loader ReaperOfVeriod 2026-10-14 05:13:02 +02:00
  • 5a60a2920c Remove two dead counters; clippy clean again ReaperOfVeriod 2026-10-14 05:10:58 +02:00
  • 6d26da3630 The control fails my own claim: 0x1c/0x34 select nothing distinctive ReaperOfVeriod 2026-10-14 05:06:57 +02:00
  • 2ff2abbd32 Two class-header words are base-relative offsets pointing past the tie packets ReaperOfVeriod 2026-10-14 05:03:34 +02:00
  • ff9699c3c7 The tie class header's undecoded tail: two reserved words, a float, and a control that says no ReaperOfVeriod 2026-10-14 05:01:40 +02:00
  • f43a1c2e6e bfc_distance is not the control region's length; the AD-GIF is not in the packet ReaperOfVeriod 2026-10-14 04:57:41 +02:00
  • 9bb04cca7b The tie control region is not a VIF or GIF tag stream; and vert_ofs is mis-named ReaperOfVeriod 2026-10-14 04:51:43 +02:00
  • f0bc1fbdf4 State which GS rules are wired and which are not ReaperOfVeriod 2026-10-14 04:46:16 +02:00
  • 43e508aa21 AlphaMode::Blend, not Mask -- the cutout-first ordering was moot ReaperOfVeriod 2026-10-14 04:45:41 +02:00
  • 87e2367daf Retract the "cutout matters far more" claim; the counts do not support it ReaperOfVeriod 2026-10-14 04:44:37 +02:00
  • 1bd4e17819 The test count is identical with and without the disc; only the clock differs ReaperOfVeriod 2026-10-14 04:44:07 +02:00
  • 25d73b4fa8 What the disc says about GS priority: cutout matters, blending barely does ReaperOfVeriod 2026-10-14 04:42:59 +02:00
  • 1982f545f1 AGENTS 3b: never report a test count a filter could have hidden a failure in ReaperOfVeriod 2026-10-14 04:42:29 +02:00
  • 4bf552dab0 The alpha bug had a test named after the bug ReaperOfVeriod 2026-10-14 04:41:19 +02:00
  • 777a6a8d47 Measure the 0x80 alpha convention on the disc instead of asserting it in prose ReaperOfVeriod 2026-10-14 04:38:02 +02:00
  • 82d7c4f8a7 Three implementations of the 0x80 alpha rule; the one decoding pixels was wrong ReaperOfVeriod 2026-10-14 04:36:25 +02:00
  • 90ec3e6adf The texture sampler was Repeat while its comment claimed it clamped ReaperOfVeriod 2026-10-14 04:34:52 +02:00
  • bbd8cdccab Phase 5 is Aranos, not Veldin -- Veldin is not on this disc ReaperOfVeriod 2026-10-14 04:29:57 +02:00
  • cc52060c67 Pin the dispatch counts exactly, after finding two of them were pinned wrong ReaperOfVeriod 2026-10-14 04:28:43 +02:00
  • 65025cbf4f The vtbl terminator: three test counts, all defensible, one of them wrong ReaperOfVeriod 2026-10-14 04:19:01 +02:00
  • 0b660cb0ce The extracted alpha rule disagreed with the renderer; the renderer was right ReaperOfVeriod 2026-10-14 04:15:11 +02:00
  • 31f4ba3f7c GS alpha test and blend: all four rules the item names are now present ReaperOfVeriod 2026-10-14 04:13:19 +02:00
  • 81ec17857a GC starts: the GS's own rules, as a module with tests ReaperOfVeriod 2026-10-14 04:12:10 +02:00
  • 3bc6c2d155 Phase 3 gate, second half: cross-check our masking against an independent hash ReaperOfVeriod 2026-10-14 04:10:50 +02:00
  • 56d8dee836 Close Phase 3's level table: 27 keys, and 21 is not one of them ReaperOfVeriod 2026-10-14 04:08:56 +02:00
  • 88bc9566f2 Narrow moby_anim: the class header has no pointer to anything external ReaperOfVeriod 2026-10-14 04:03:53 +02:00
  • 4776db199b Attempt the moby_anim unblock: a location and a failure, not a result ReaperOfVeriod 2026-10-14 03:56:50 +02:00
  • b3b4d47d97 Search for the tie vertex stride: 64 where one exists, none for 62% ReaperOfVeriod 2026-10-14 03:54:32 +02:00
  • 7b6de36958 Mark the two tie tests that still measure the retracted 16-byte layout ReaperOfVeriod 2026-10-14 03:49:31 +02:00
  • 412ef4707b Withdraw the tie "not a joint index" claim: the measurement never settled it ReaperOfVeriod 2026-10-14 03:48:17 +02:00
  • f182a4a0ac Transcribe the 256-byte MobyInstance; oClass closes the instance-to-routine loop ReaperOfVeriod 2026-10-14 03:47:15 +02:00
  • 3785195ecd The dispatch tables hold 4,737 behaviours, not 5,822 records ReaperOfVeriod 2026-10-14 03:42:42 +02:00
  • 18af702420 Read a moby handler: the chain works, with two caveats and a 110 discrepancy ReaperOfVeriod 2026-10-14 03:40:59 +02:00
  • d611026f07 All three dispatch tables decode, and the check that matters is the remainder ReaperOfVeriod 2026-10-14 03:38:45 +02:00
  • 94819f4a79 oClass is a global id, not an index into the class table ReaperOfVeriod 2026-10-14 03:36:03 +02:00
  • 199ce33dd8 The moby class-id space is known: lvl.vtbl, and the old bound was simply wrong ReaperOfVeriod 2026-10-14 03:34:35 +02:00
  • 9f4f4acecb The collision assert string is never referenced: the last route is closed ReaperOfVeriod 2026-10-14 03:25:32 +02:00
  • 66a96111d7 Kill the 48-byte loop lead: the function takes no pointer arguments ReaperOfVeriod 2026-10-14 03:18:02 +02:00
  • 2f5979e652 Update the decomp; read .text, and fix the disassembler that made it unreadable ReaperOfVeriod 2026-10-14 03:16:17 +02:00
  • 508a03fa4a The decomp names both collision functions; their addresses are not ours ReaperOfVeriod 2026-10-14 03:11:13 +02:00
  • 39462d2cf9 Correct: overlay.bin is the seven-section program, not the .lit section ReaperOfVeriod 2026-10-14 03:10:24 +02:00
  • 4ca0308499 SBlk body head: the DAW size, stored twice ReaperOfVeriod 2026-10-14 03:06:36 +02:00
  • ec433e3341 Correct my own "VIF packets" reading: the split is real, the identification is not ReaperOfVeriod 2026-10-14 03:04:48 +02:00
  • 4ab30e1f4d Retract the tie texcoord field: a dominant-value artifact, one level down ReaperOfVeriod 2026-10-14 02:56:57 +02:00
  • 1e90c7de6d Verify the Phase 2 gate, and give every blocked item an unblock condition ReaperOfVeriod 2026-10-14 02:52:09 +02:00
  • 67ce068c7f Tie vertex regions are two encodings, not one; mark Phase 3's port done ReaperOfVeriod 2026-10-14 02:49:48 +02:00
  • a94704de18 port Phase 3: overlay masking + code-identity + relocation ReaperOfVeriodandreaper 2026-10-14 02:37:05 +02:00
  • 8030dbf006 close: tie LOD distance ordering exceptions - 80/1864 classes have mid=8192 far=8190 ReaperOfVeriodandreaper 2026-10-14 02:19:07 +02:00
  • e5cd3df40e Retract the tie vertex position claim; the stride is not 16 ReaperOfVeriod 2026-10-14 02:05:38 +02:00
  • 855aadf523 Record the tie terminator defect in the format doc, plus two failed fixes ReaperOfVeriod 2026-10-13 18:07:04 +02:00
  • 572cd1898d Record a defect packet slicing found: the tie block terminator is early ReaperOfVeriod 2026-10-13 17:40:31 +02:00
  • 1cfe744501 Settle the tie packet length, and correct the retraction that hid it ReaperOfVeriod 2026-10-13 16:48:49 +02:00
  • 4abce518e5 Decode the overlay's load base, from its own profiler table ReaperOfVeriod 2026-10-13 13:22:50 +02:00
  • 55ea619b4c Decode the tie class header's +0x0c word: three LOD record counts ReaperOfVeriod 2026-10-13 08:59:40 +02:00
  • f1f0b517a5 Pin the extracted tree, which every disc test reads and nothing verified ReaperOfVeriod 2026-10-13 08:20:37 +02:00
  • 8ccc3ddda4 Retract the uniformity claim everywhere it still stood, including the API docs ReaperOfVeriod 2026-10-13 08:18:20 +02:00
  • 2d3880b624 The class-ID retraction goes further: the claim was wrong before the fix ReaperOfVeriod 2026-10-13 08:11:35 +02:00
  • d159195510 General guard for the over-read class, and the audit showing it was unique ReaperOfVeriod 2026-10-13 08:04:08 +02:00
  • 92aa0fe49f Audit what the record-boundary fix contaminated: one retraction, one survivor ReaperOfVeriod 2026-10-13 08:02:31 +02:00
  • 4fab4d0359 Fix the record boundaries after all, and retract a claim built on the bug ReaperOfVeriod 2026-10-13 07:59:23 +02:00
  • 5f0396e3d7 Measure every chunk's record offsets; the cause is ambiguous, so no fix ReaperOfVeriod 2026-10-13 07:50:50 +02:00
  • b9e9835639 A parser defect: one chunk type is not fixed-stride, and over-reads ReaperOfVeriod 2026-10-13 07:46:57 +02:00
  • af62032ddc Most of the chunk container is level-independent: 65 of 74 signatures ReaperOfVeriod 2026-10-13 07:43:44 +02:00
  • 59dba3e58d Chunk records: the stride table, and the exception pinned by name ReaperOfVeriod 2026-10-13 07:39:35 +02:00