docs(ledger): localise the video gap to RDP rasterisation, not presentation - #179
Conversation
…tation Correcting my own localisation from the previous entry, which blamed the "RDP to VI presentation path". That was wrong. Ocarina of Time's framebuffer at VI_ORIGIN is uniformly 0x0001 - RGBA5551 with R=G=B=0 and the coverage bit set. The VI is faithfully presenting a genuinely black buffer and scanout is correct, so presentation is not at fault. Submission is not at fault either. A DPC-seam opcode census over 300 frames shows the real F3DEX stream arriving: 7,412 TRIANGLE (0x0F - shade + texture + Z), 1,630 TEXTURE_RECTANGLE, 4,374 LOAD_BLOCK, 7,705 SET_TILE, 1,589 SET_COMBINE, of 74,508 commands. Geometry, textures and tile state all reach the RDP. So the gap is between those two: the RDP rasterises real geometry to black. That is a far more useful statement than "does not reach video", and it is testable. First suspects, each isolatable against the Angrylion vector harness that already exists: the Z path (every one of those triangles is the Z-buffered 0x0F variant, so a z_compare rejecting universally produces exactly this), the texture fetch returning 0, and the combiner collapsing to 0. Two localisations in two turns have now been wrong - presentation, and before that the exception vector - both because I named a subsystem before measuring the boundary. The census is what settled it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughSummary by CodeRabbit
WalkthroughR-18 documentation now records the missing ChangesR-18 evidence correction
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 8 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (8 passed)
Comment |
Review follow-up. The census appeared in two files with two separators - commas in CHANGELOG.md, spaces in docs/accuracy-ledger.md - and with different opcode lists, so the same measurement read as two. Both now use commas for this content: CHANGELOG.md is decisively comma already (38 to 2), and it is the more standard convention. docs/accuracy-ledger.md is historically mixed (26 space, 22 comma); only the census text is changed here, since a whole-file sweep would bury this correction in an unrelated diff. CHANGELOG.md was also missing SET_COMBINE from the breakdown; the two lists now match. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Adjudicating the Antigravity review. Inconsistent number formatting — ADOPTED. The same census appeared with commas in Scoped deliberately: Incomplete opcode breakdown — ADOPTED. Nitpick: the R-18 row is an overly dense block — AGREED, not actioned here. This is the second review to raise it and it is right; the row has accumulated many appended corrections and is now hard to read. I have not restructured it in this PR because rewriting the row layout would obscure the correction the PR exists to make. It belongs in a dedicated ledger pass, and I would rather it stay visibly overdue than be half-done inside an unrelated change. |
Antigravity review (Gemini via Ultra)This documentation PR updates Blocking issuesNone found. Suggestions
Nitpicks
Automated first-pass review by |
|
@coderabbitai review |
✅ Action performedReview finished.
|
Correcting my own localisation
The previous entry blamed the "RDP → VI presentation path". That was wrong,
and this PR replaces it with a measured boundary.
Presentation is not at fault
Ocarina of Time's framebuffer at
VI_ORIGINis uniformly0x0001— RGBA5551with
R=G=B=0and the coverage bit set. The VI is faithfully presenting agenuinely black buffer, and
scanoutis correct.(
VI_ORIGIN = 0x3b5280sits exactly one scanline into the RDP's colour image0x3b5000, which is normal — so even the addresses line up.)Submission is not at fault either
A DPC-seam opcode census over 300 frames shows the real F3DEX stream arriving:
0x0F0x350x330x240x3C…of 74,508 commands. Geometry, textures and tile state all reach the RDP.
So the gap is between those two
The RDP rasterises real geometry to black. That is far more useful than "does
not reach video", and unlike the previous framing it is directly testable.
First suspects, each isolatable against the Angrylion vector harness that already
exists:
0x0FZ-bufferedvariant, so a
z_comparethat rejects universally produces exactly this result;A note on my own process
Two localisations in two turns have now been wrong — presentation, and before
that the exception vector — both because I named a subsystem before measuring
its boundary. In both cases a census or a correlated capture settled it in one
run. Recorded in the ledger alongside the finding, since the pattern is more
useful than the individual corrections.
Gates
cargo fmt --all --check,cargo clippy --workspace --all-targets -- -D warnings,cargo test --workspace,pre-commit run markdownlint --all-files— each runseparately, 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