Skip to content

docs(mister): rung 5's console, and the release where the ladder caught the oracle - #470

Merged
doublegate merged 1 commit into
mainfrom
docs/v2.6.3-dma-progress
Aug 25, 2026
Merged

docs(mister): rung 5's console, and the release where the ladder caught the oracle#470
doublegate merged 1 commit into
mainfrom
docs/v2.6.3-dma-progress

Conversation

@doublegate

Copy link
Copy Markdown
Owner

Records the sibling repository's rung-5 progress and the finding that came out of
it. Documentation only — no crate changes, so AccuracyCoin and nestest are
untouched by construction.

What landed in the DUT

The NROM cartridge, the work RAM, the console's CPU bus, the controller ports
and DMC DMA — 50 gates green, 0 failed. The DUT's CPU is driven by the RTL
bus, and a DMC fetch is a real bus cycle by a second requester rather than a
private path into a flat testbench array.

Assembling nes_top is the one remaining piece, and it is named as its own
step
rather than the tail of this one: the core's top level must divide the
master clock, which is the apparatus rung 3's phase calibration was built on. A
change to the timing substrate, not a rewiring.

The ladder caught the oracle

docs/mister.md gains a subsection under "The oracle can be wrong", because
that heading stopped describing a risk and started describing an event.

A cpu_bus module written from the wiki agreed with this emulator on $4016,
$4017, $5000 and $5C34 — including the open-bus value, which the DUT
derives from a latch where the testbench had hardcoded $40 — and disagreed
only in $6000-$7FFF, where an NROM board decodes nothing and this emulator
provides 8 KiB of PRG-RAM.

Three things that establishes, in the order they matter:

  1. The ladder can catch the oracle. Asserted when the programme was planned;
    now demonstrated, which is a different kind of claim.
  2. The correct response was to record, not to fix. It alters shipped
    behaviour on every iNES-header NROM cartridge.
  3. The gate ROM was narrowed rather than the DUT bent. A gate that fails for
    the oracle's limitation rather than the DUT's teaches the wrong lesson and
    eventually gets switched off.

A prediction, recorded as wrong

to-dos/mister/TASKS.md carries it explicitly: the previous step predicted in
writing
that two inert open-bus mutations would flip to CAUGHT once DMA drove
the bus. They did not, and a third joined them. The cause is stimulus — no ROM
in the corpus both runs DMC fetches and reads open bus. That is a precise,
checkable statement of what is missing, and a better outcome than the prediction
being quietly right.

Files

README.md (rung-status paragraph + the oracle finding as the concrete instance
of the caveat one paragraph above it) · docs/mister.md · to-dos/mister/TASKS.md
· CHANGELOG.md.

The docs/accuracy-ledger.md entry itself merged separately in #468.

…ht the oracle

Records the sibling repository's rung-5 progress and the finding that came out
of it. Documentation only; no crate changes.

## What landed in the DUT

The NROM cartridge, the work RAM, the console's CPU bus, the controller ports
and DMC DMA -- 50 gates green. The DUT's CPU is driven by the RTL bus, and a DMC
fetch is a real bus cycle by a SECOND REQUESTER rather than a private path into
a flat testbench array.

Assembling `nes_top` is the one remaining piece, and it is named as its own step
rather than as the tail of this one: the core's top level must divide the master
clock, which is the apparatus rung 3's phase calibration was built on, so it is
a change to the timing substrate rather than a rewiring.

## The ladder caught the ORACLE

`docs/mister.md` gains a section under "The oracle can be wrong", because that
heading stopped describing a risk and started describing an event.

A `cpu_bus` module written from the wiki agreed with this emulator on $4016,
$4017, $5000 and $5C34 -- including the open-bus value, which the DUT DERIVES
from a latch where the testbench had hardcoded $40 -- and disagreed only in
$6000-$7FFF, where an NROM board decodes nothing and this emulator provides
8 KiB of PRG-RAM.

Three things that establishes, in the order they matter:

  1. The ladder can catch the oracle. That was asserted when the programme was
     planned; it is now demonstrated, which is a different kind of claim.
  2. The correct response was to RECORD, not to fix. The change alters shipped
     behaviour on every iNES-header NROM cartridge.
  3. The gate ROM was narrowed rather than the DUT bent. A gate that fails for
     the oracle's limitation rather than the DUT's teaches the wrong lesson and
     eventually gets switched off.

## Files

  * `README.md` -- the rung-status paragraph now reads "rungs 0-4 closed, rung 5
    current" with the pieces named, and carries the oracle finding as the
    concrete instance of the caveat one paragraph above it.
  * `docs/mister.md` -- the new subsection.
  * `to-dos/mister/TASKS.md` -- the rung-5 items, including a PREDICTION MADE IN
    WRITING AND RECORDED AS WRONG: two inert open-bus mutations were expected to
    flip to CAUGHT once DMA drove the bus. They did not, and a third joined
    them. The cause is stimulus -- no ROM in the corpus both runs DMC fetches
    and reads open bus.
  * `CHANGELOG.md` -- the `[Unreleased]` entry.
Copilot AI lite review requested due to automatic review settings August 25, 2026 04:52
@doublegate

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 26 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: e81b6d08-bbfc-4105-9b72-9d07e7c60aee

📥 Commits

Reviewing files that changed from the base of the PR and between 7f405d9 and fcdbf14.

📒 Files selected for processing (4)
  • CHANGELOG.md
  • README.md
  • docs/mister.md
  • to-dos/mister/TASKS.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@github-actions

Copy link
Copy Markdown

Antigravity review (Gemini via Ultra)

This PR updates project documentation and changelogs to record the completion of MiSTer co-simulation rung 5 components and documents a specific case where the RTL implementation was found to be more accurate than the reference emulator.

Blocking issues

None found.

Suggestions

  • README.md (lines 905-912): The detailed explanation of the $6000-$7FFF open bus discrepancy makes the high-level progress section overly verbose; consider keeping the README brief and deferring these specifics entirely to docs/mister.md and docs/accuracy-ledger.md.
  • CHANGELOG.md (line 40): "The ladder caught the oracle for the first time" is slightly poetic for a technical changelog; consider stating plainly that an emulator inaccuracy was identified and documented.

Nitpicks

  • to-dos/mister/TASKS.md (line 104): The sentence ends without a period, unlike the other newly added task descriptions.

Automated first-pass review by agy on a self-hosted runner -- not a human review.

@doublegate

Copy link
Copy Markdown
Owner Author

Replying to the Antigravity review

No blocking issues — agreed. Both suggestions are declined, and it is worth saying why rather than just leaving them.

README verbosity. The eight lines are not a digression from the progress section; they are the instance of the caveat in the paragraph immediately above them, which says a rung verified only against this emulator "inherits whatever this emulator has wrong". That claim had been abstract since the programme was planned. The first time it actually happens is the sentence that makes the caveat mean something, and moving it to a subsidiary document leaves the general warning standing alone — which is the version a reader skims past.

This README is detailed by design throughout (the "Current release" block alone runs far longer), so brevity here would be locally tidier and inconsistent with the document.

"The ladder caught the oracle for the first time". AGENTS.md asks for changelog entries and commit bodies that "go beyond a summary to explain architectural impact" and record the why. The phrase is doing specific work: it distinguishes an emulator inaccuracy was found — which happens routinely — from the verification apparatus found the thing it is verified against to be wrong, which had not happened before in this programme and is the reason the entry exists at all. "An emulator inaccuracy was identified and documented" would be true and would lose exactly that.

The entry states the concrete fact plainly too — which window, which file, which games break — so the reader who wants only that has it.

@doublegate
doublegate merged commit 7e78815 into main Aug 25, 2026
20 of 21 checks passed
@doublegate
doublegate deleted the docs/v2.6.3-dma-progress branch August 25, 2026 05:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants