v0.8.0 "Breadth" — Phase 7: the accuracy battery, and the first commercial pictures
Commercial cartridges render. Super Mario 64 draws its title screen, and 29 of
66 staged titles render through their own graphics microcode. Fourteen frames
are committed under screenshots/, every one rendered and looked at.
CUT CRITERIA (to-dos/VERSION-PLAN.md), both verified rather than assumed:
- The battery reports a real pass rate: 54 probes, 100%, across two Angrylion
oracle suites — 41 RDP rasteriser vectors + 13 VI scan-out vectors. Expected
values are the oracle's, never our own output. - Every residual R-1 through R-23 carries a ledger disposition, and no
residual is referenced anywhere in docs/ or to-dos/ without an entry.
THE TWO DEFECTS THAT UNBLOCKED IT WERE IN THE CPU AND THE PIF, NOT THE RDP
R-18 had been treated as a rasteriser gap for months. It was not.
-
ERET interrupt livelock (#189). ERET resolves in EX, clearing Status.EXL
and pointing next_pc at EPC. The DC interrupt check runs one cycle later,
saw EXL clear, and charged the interrupt to whatever sat in ex_dc — the
ERET itself. EPC was overwritten with the ERET's own address, destroying
the return address it was about to consume, so the handler returned to the
ERET, which resumed at itself. Banjo-Tooie went from 1 to 80 distinct PCs
and programmed the VI for the first time. -
PIF "no device" flag (#190). Empty joybus ports never set the RX byte's
bit 7, so osContInit reported four controllers on a one-pad console and
Super Mario 64 halted in its own assert at 0x80246DD8. A second,
pre-existing defect sat beside it: mark_no_device wrote the flag to
resp - 1, the last TX data byte, never the RX byte software reads — it had
never once landed correctly. SM64 went from 0 to 125,278 RDP commands and a
title screen; Banjo-Kazooie from 0 to 133,625.
Oracle unchanged throughout: n64-systemtest Phase 1 Failed: 0, suite-wide 90.
T-71-003 — THE ONE CUT CRITERION CI CAN NEVER RUN
F3DEX and its per-studio variants are proprietary and ship inside commercial
ROMs that ADR 0008 forbids committing; rdpq is a genuine CI-gated LLE microcode
test but is not F3DEX and cannot substitute. By maintainer decision the
criterion closes on a reproducible local census (microcode_families.rs,
screenshots. VERSION-PLAN records it as the single documented exception rather
than an unstated weakening of the gate. The census asserts only that staged
titles render, never a pass rate — the corpus is whatever a machine happens to
hold, so a percentage from it would describe a ROM collection while looking
like an accuracy metric.
WHAT THE EVIDENCE STANDARD COST, AND WHY IT STAYS
"Lit pixels" was cited for weeks as proof of rendering and was wrong:
uninitialised RDRAM is non-black. The census proves it on its own data —
Rayman 2 and Namco Museum 64 report ZERO RDP commands with 123,540 and 137,681
lit pixels. A lit-pixel rule would have committed two frames of pure garbage as
evidence. Every screenshot in this release was rendered to PNG and viewed;
frames that scored well but looked wrong were rejected, and the rejections are
recorded because they localise real defects.
ALSO IN THIS RELEASE
- mirror_s pinned against Angrylion (tex_tri_mirror_s_16) — which refuted the
hypothesis it was written to confirm: the S-axis mirror path is correct, so
the mirrored text in GoldenEye and WCW is something else. - tlut_en (Set Other Modes bit 47) decoded; the TLUT lookup gated on it
rather than on the tile format. - commercial_boot measures through Bus::scanout_scaled, the path the frontend
actually presents, and reports scan-out dimensions so a blanked VI is
distinguishable from a frame that is genuinely black.
NOT CLAIMED
24 titles still issue zero RDP commands. They do not stall — they halt, each
for its own reason, exactly as SM64 halted before the PIF fix. Banjo-Tooie sits
in a B -1 with interrupts enabled and nothing pending; Donkey Kong 64 spins on
BNE v1, v0, -1 with IE = 0 and a NOP delay slot, unexitable by construction;
Jet Force Gemini halts with IP2 pending but masked. Each is a separate
root-cause hunt. Those, the mirrored-text cause, the ledger-extraction refactor
and 1080's IPL3 fault are v0.9.0 "Threshold" work.