Skip to content

RustyN64 v0.6.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 10:27
841a251

RustyN64 v0.6.0 "Cartridge" — Phase 5 complete

A commercial cartridge boots. Phase 5 delivers the cartridge + I/O
boundary: the PI bus with BSD domain timing, the SI joybus, the CIC
handshake, and all four save backends (SRAM, FlashRAM, EEPROM 4k/16k,
Controller Pak), plus TWO boot paths.

  • HLE boot (default, CI-able): copies the cart's real IPL3 to DMEM,
    seeds the post-IPL3 CPU/COP0/PI-DOM1 state and the CIC seed word, and
    jumps in. Copyright-clean; the seeds are cited constants (ledger C-32).
  • Real-PIF boot (faithful, off by default, local-only): runs the
    console's REAL IPL1/IPL2 from the PIF ROM at the reset vector, with
    the CIC identified from the IPL3 CRC-32 and the PIF-SM5 boot handshake
    (ROM lockout + IPL2-checksum acquire/verify + NMI-freeze) modelled
    behaviourally from PIF-NUS.md. The SM5 firmware is not run and the
    6105 running challenge is not modelled — neither is needed to boot
    (ledger C-33). Never CI-gated: the PIF ROM is copyrighted.

Every save-type representative in the commercial corpus (6102/6103/6105
CICs) boots through the real IPL1 -> IPL2 -> IPL3 chain to game execution
in RDRAM, with IPL2's computed checksum matching the hardware-documented
CIC value — which independently proves the CPU reproduces the checksum
bit-exactly over the real IPL3.

Phase 5's committable gate (to-dos/VERSION-PLAN.md §v0.6.0) is met by
oracle, not self-assessment:

  • n64-systemtest cart/PIF/SI improvement: 93 -> 90 failing suite-wide,
    Phase-1 categories still Failed: 0
    cargo test -p rustyn64-test-harness --release --test systemtest
    -- --ignored --nocapture
  • Save round-trips per backend + a commercial ROM boots and executes
    (both boot paths), local capstone over the gitignored corpus
    cargo test -p rustyn64-test-harness --release --test commercial_boot
    -- --ignored --nocapture

Honest scope (the escalation gate): reaching a rendered TITLE FRAME is a
downstream VI/RI/F3DEX runtime gap, tracked as ledger R-18, deferred to a
later phase and outside the Phase 5 cart boundary (ADR 0003). The cut
criterion is restated as met — boots + executes + save round-trips — not
faked as a title-screen pass. A green test run still does not mean a
subsystem works; docs/STATUS.md is authoritative.

The earlier phases remain met: Phase 4 (audio), Phase 3 (RDP conformance

  • golden frame), Phase 2 (RSP Failed: 0 + rdpq microcode), Phase 1 (CPU
    Failed: 0 + ares golden trace).

Full gates green: fmt, clippy (-D warnings), workspace test, rustdoc
(-D warnings), the thumbv7em-none-eabihf no_std cross-build, markdownlint,
the microcode-integrity check, and the full macOS/Windows/Ubuntu +
test-roms CI matrix.

Install: download the per-target archive, verify against SHA256SUMS, and
extract. Each archive carries both licences (MIT OR Apache-2.0), NOTICE,
README, and CHANGELOG.

Full changes: CHANGELOG.md [0.6.0]. Dual-licensed MIT OR Apache-2.0.