MinimigCD release -- 2026-06-04 (D-Cache-OFF garble-fix)

RTL-only increment on top of the 2026-05-31 release. The sidecar userspace
binary is BYTE-IDENTICAL (MiSTer_MinimigCD_dotc_20260531, sha256-16
5A4373DAC4689C81) -- only the FPGA bitstream changed. The core is renamed to
_Test/MinimigCD_20260604.rbf (dated) and the launcher MGLs are updated to
reference it; the embedded CONF_STR is still "MinimigCD" so the MiSTer.ini
sidecar redirect is unchanged.

Highlights
----------
- D-Cache-OFF graphics garble ELIMINATED on heavy CD32 titles (NEW, THIS BUILD).
  The authentic CD32 setting is OSD "D-Cache OFF" (the 68EC020 has no data
  cache). On graphics+CDDA-heavy titles (Universe, Simon the Sorcerer) the OFF
  read path intermittently corrupted chip-RAM reads -> garbled or black title.
  Root cause: the Akiko/CDTV CD-DMA arbiter could steal the chip-RAM slot a CPU
  OFF-read was about to use, and the CPU's OFF-read latch (a fixed-7 MHz
  chip_dtack with no SDRAM-completion term) had no protection against the shared
  chip read register being overwritten by the stolen DMA slot.

  Three committed RTL fixes in the chip-RAM DMA arbiter:
    1. prevent-steal (chipdma_arb arm_now mask) -- the arbiter no longer arms a
       CD-DMA steal in a slot the CPU is about to read.
    2. bleed-fix (slot-window gate) -- stops a stolen DMA address bleeding into
       the adjacent chip slot. THIS eliminates the garble.
    3. Fix B (private chipRD_dma return register) -- DMA-stolen reads park in a
       private register so they can never disturb the CPU-visible chipRD.

  HW (fresh-rebooted rig): Universe D-Cache-OFF x8 went from ~50% garbled/black
  to 7/8 clean, 0 garble. D-Cache-ON behaviour is identical to 20260531.

- Everything else carries forward UNCHANGED from 20260531 (userspace binary
  byte-identical): CDTV Defender of the Crown two-segment audio, Liberation
  CDDA subcode Q-stream, WinUAE cd_qcode end-clamp, store-to-load forwarding,
  warm-reset fill/snoop interlock, Zorro-II fast-RAM fix (mem=0x33), clean Z2
  trace gating.

- Cannon Fodder (M5 gate): unaffected -- the arbiter fixes only constrain when a
  CD-DMA slot may be stolen; CF boots end-to-end as before.

Artifacts
---------
_Test/MinimigCD_20260604.rbf     3528564 bytes  sha256-16=6CB5F2D78825023E  (NEW)
MiSTer_MinimigCD_dotc_20260531   1051260 bytes  sha256-16=5A4373DAC4689C81  (UNCHANGED)

Upgrade from 20260531: copy the new _Test/MinimigCD_20260604.rbf AND the updated
_Computer/_CD32 + _CDTV MGLs (they now reference MinimigCD_20260604). The sidecar
binary and MiSTer.ini [MinimigCD] section are unchanged -- leave them in place.
You may delete the old _Test/MinimigCD.rbf.

Launchers: 29 CD32 + 4 CDTV, all updated to reference _Test/MinimigCD_20260604.

Source provenance
-----------------
Minimig-AGA_MiSTer @ cd32-native-mvp garble-fix stack:
   prevent-steal 6e7ee92 + bleed-fix 3a1005f + Fix B c3d412b
   (chipdma_arb arm_now mask + slot-window gate + private chipRD_dma return reg)
   Built at 3a1005f with Fix B in-tree (RBF sha 6CB5F2D7), committed as c3d412b.
Main_MiSTer        @ cd32-native-mvp c59266d (UNCHANGED from 20260531)

Worst-case setup slack is on the benign SDRAM clock-gen counter path (PLL-divclk
class, not a logic path); real-hardware tests pass.

Known issues
------------
- D-Cache-OFF residual black (~1/8) on heavy CDDA titles. With D-Cache OFF,
  Universe still intermittently black-screens on ~1 boot in 8 (a CPU crash from
  a corrupted code-page read -- same fault as the now-fixed garble, landing on
  code instead of graphics). This is a timing-marginal floor: the OFF raw-chip
  read latches on a fixed-7 MHz chip_dtack with no SDRAM-completion term, so the
  CPU can occasionally sample the read before its own SDRAM fill completes.
  Every correcting lever tried (read-through, arb-stall, DTACK-interlock, and a
  CPU-private return register "Fix D") either made it worse or left the rate
  unchanged; Fix D conclusively ruled out a later-writer clobber, pinning the
  cause to capture-before-fill. MITIGATION: run heavy titles with D-Cache ON
  (the default), which is solid. OFF now renders garble-free but this last ~1/8
  black is not yet closed.
- Core state is not fully reset on a same-RBF load_core swap: switching directly
  between two games that share the MinimigCD core via load_core skips the FPGA
  reload and may carry stale state across, which can re-trigger reset-path
  issues. Launch each game from a cold state or via a different core in between.
- CDTV Defender of the Crown: cast-list two-segment audio + advance HW-confirmed;
  full interactive-gameplay-reached not separately driven this build.
- NVRAM save: in-session saves work and persist to SD (WinUAE-validated);
  auto-reload back into BRAM at boot is still broken on hardware.
