Skip to content

v0.98.0

@monteslu monteslu tagged this 17 Jul 16:06
Audited the 0.96/0.97 round-1/2 fixes against every other system; gaps
found and closed:
- Mirror canonicalization extended to every mirror platform (arm-side):
  NES $0800-$1FFF, GB/GBC echo $E000-$FDFF, SMS/GG $E000-$FFFB (mapper
  regs untouched), Genesis $E00000-$FEFFFF. Only unambiguous windows —
  nothing that could alias ROM/regs. Residual stated honestly: only snes9x
  canonicalizes LIVE accesses core-side; a mirror-form WRITER on the others
  needs per-core hook patches (deferred).
- conditionWidth:16 endianness-aware: Genesis 68k words are BIG-endian, so
  'equals' arms the high byte AT address there (the 0.96.0 LE assumption
  armed the LOW byte — the $00-matches-everything class); host word compare
  composes BE. GBA host reads map EWRAM/IWRAM properly. Live-verified on
  gpgx (BE equals watch + mirror-form arm both catch, exact PC).
- readCart findHex maps GB/GBC (MBC window) + SMS/GG (Sega mapper slot 2)
  hits to bank + CPU address.

Doc sweep for the three rounds: ROMHACKING_PLAYBOOK (conditionWidth:16,
arm-time mirror canon, range read-watch for table consumers, findHex),
SNES + Genesis TROUBLESHOOTING sections (watch-found-nothing/mirrors,
width desync toolchain, BE word watches), AGENTS.md capability lines,
build reassemble description (regions[].issues contract).

Tests: cross-platform-watch-hardening.test.js (5). 1163/1163, lint clean.
Assets 2
Loading