From 3c040773175d6158969c7fc90474b0133e0d0fdc Mon Sep 17 00:00:00 2001 From: Cyd Date: Sat, 18 Jul 2026 00:21:38 -0500 Subject: [PATCH] =?UTF-8?q?Firmware=20wedge=20patch=20CONFIRMED=20on=20rea?= =?UTF-8?q?l=20hardware=20=E2=80=94=20bench=20A/B=20results?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Baseline (original chip): reply path wedged 0.62s into the run — the tool's own version/check exchange colliding with analog polling was enough, no mash required — and stayed dead for all 300s despite 951 button presses (no button revival; power cycle only). Patched chip: survived the same startup collision, 2419 analog replies at a steady ~16/s over 152s under heavier mash (peak 635/min), zero wedges, worst gap 0.58s self-recovered — the $DFF0 latch-clear stub doing its job. Results table + evidence logs committed (rio-firmware/testlogs/). Remaining: cabinet soak + native-game session; 31250 variant A/B. Co-Authored-By: Claude Fable 5 --- rio-firmware/RIOv4_2-ANALYSIS.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/rio-firmware/RIOv4_2-ANALYSIS.md b/rio-firmware/RIOv4_2-ANALYSIS.md index 59443dd..e39409b 100644 --- a/rio-firmware/RIOv4_2-ANALYSIS.md +++ b/rio-firmware/RIOv4_2-ANALYSIS.md @@ -215,3 +215,28 @@ button-revived wedge — use it to sanity-check the alarm before a session. | `$3184/$85` | give-up / error diagnostic counters | | `$3186` | RX overrun flag (set at `$D701`, **never read** — not the cause) | | `$102D/$2E/$2F` | SCCR2 / SCSR / SCDR (HC11 SCI) | + +## Bench validation results (2026-07-18) — PATCH CONFIRMED + +Rig: real RIO board, FTDI FT232R on COM1, `RioSerialMonitor --mash` +(app auto-recovery disabled, lamp echo on). Logs in `testlogs/`. + +| | baseline (original AMD chip) | patched (W27C512) | +|---|---|---| +| startup version/check exchange | **wedged at 0.62s** (reply/reply collision) | survived | +| analog replies | 6 total, then dead for 300s | 2419 @ 152s, steady ~16/s | +| mash | 951 presses (peak 460/min) | 1315 presses (peak 635/min) | +| worst analog gap | infinite — no recovery in 300s despite 951 presses | 0.58s, self-recovered | +| wedge events | 1, unresolved (power cycle required) | 0 | + +Notes: the baseline wedge didn't even need the mash — the tool's own +version+check request colliding with the analog poll killed the reply +path instantly, and (contrary to the earlier RIO-NOTES observation) +button presses did NOT revive it. The patched chip's single 0.58s gap +is the intended failure mode: collision → teardown → latch cleared by +the $DFF0 stub → self-recovery. Patched run cut at ~155s by operator +(finger fatigue); given the baseline's 0.62s time-to-wedge, 2.5 min of +heavier mash is decisive. Remaining (cabinet): overnight idle soak + +a native-game session. Both check snapshots also reported a board/lamp +fault item — persistent across chips, likely a real tired lamp; inspect +separately.