docs(ledger): narrow the video gap to the CI4 + TLUT texel path - #180
Conversation
Inspecting the RDP state Ocarina actually leaves eliminates two of the three suspects from the previous entry and turns the third into a single code path. The Z path is refuted: z_compare_en and z_update_en are both false, so nothing is depth-rejected. SET_Z_IMAGE is issued and z_image is set, but the compare is off. The combiner is refuted as a collapse - and is the key evidence. cyc1 decodes to rgb_a=15, rgb_b=15, rgb_c=31, rgb_d=1, i.e. (0 - 0) x 0 + TEXEL0: a pure texture pass-through. The pixel colour IS the texel, so a black frame means the texel fetch resolves to 0. The tiles are fmt=2 size=0 - CI4, 4-bit colour-indexed textures resolved through a TLUT. Both TMEM halves are populated after 4,374 LOAD_BLOCKs (1,508/2,048 non-zero bytes in the texture half, 760/2,048 in the TLUT half), and TLUT entry 0 reads 0x0000 with entries alternating 0000 ffff at the 8-byte stride tlut_lookup uses. So real indices and a real palette are both present and the resolution yields black. The gap is the CI4 + TLUT texel path: one code path, directly testable against the existing Angrylion .rvec harness. A CI4-with-TLUT vector is the obvious next probe, in the same shape as the CI/TLUT work already under R-7. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Important Review skippedNo new commits to review since the last review. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThe PR updates the R-18 accuracy record and changelog with the corrected ChangesR-18 diagnosis
Estimated code review effort: 1 (Trivial) | ~3 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 10✅ Passed checks (10 passed)
Comment |
The same expression appeared with Unicode minus and multiplication signs in CHANGELOG.md and ASCII in docs/accuracy-ledger.md. It is one formula; it now reads identically in both, in ASCII, which also survives grep and terminals that mangle U+2212. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Antigravity — Unicode vs ASCII in the combiner expression. ADOPTED. The same formula appeared as Nitpick — commas in 4-digit byte fractions ( |
Antigravity review (Gemini via Ultra)This PR updates Blocking issuesNone found. Suggestions
Nitpicks
Automated first-pass review by |
|
@coderabbitai review |
✅ Action performedReview finished.
|
Two suspects eliminated, the third narrowed to one code path
The previous entry left three suspects for "the RDP rasterises real geometry to
black". Inspecting the RDP state Ocarina actually leaves settles two of them and
turns the third into a specific, testable path.
Z path — REFUTED
z_compare_en = false,z_update_en = false. Nothing is depth-rejected.SET_Z_IMAGEis issued (z_image = 0x12c700), but the compare is off — so the"every triangle is the
0x0FZ-buffered variant" reasoning, while true, does notlead anywhere.
Combiner — REFUTED as a collapse, and it is the key evidence
cyc1decodes torgb_a=15, rgb_b=15, rgb_c=31, rgb_d=1:The pixel colour is the texel. So a black frame means the texel fetch
resolves to 0 — the combiner is faithfully passing through black.
Texture path — narrowed to CI4 + TLUT
fmt=2, size=0= CI4 — 4-bit colour-indexed, resolved via a TLUT.LOAD_BLOCKs: 1,508/2,048non-zero bytes in the texture half, 760/2,048 in the TLUT half.
0x0000(black), with entries alternating0000 ffff 0000 ffffat the 8-byte stridetlut_lookupuses.So real indices and a real palette are both present, and the resolution yields
black.
Why this is a good stopping point for a docs PR
The gap is now one code path — CI4 index → TLUT lookup — rather than a
subsystem. It is directly testable against the existing Angrylion
.rvecharness: a CI4-with-TLUT vector is the obvious next probe, in the same shape as
the CI/TLUT work already recorded under R-7.
I am deliberately not guessing at a fix in this PR. The last three times I named a
cause before measuring its boundary I was wrong (exception vector, presentation
path, Z), and the pattern each time was reasoning ahead of the oracle. The vector
comes first.
Gates
cargo fmt --all --check,cargo test --workspace,pre-commit run markdownlint --all-files— each run separately, exit status checked.Oracle: docs-only, no emulation behaviour change, so n64-systemtest is
unchanged at 90 suite-wide, Phase 1
Failed: 0, perdocs/STATUS.md.🤖 Generated with Claude Code