-
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