Skip to content

v1.0.4

Latest

Choose a tag to compare

@danielgatis danielgatis released this 26 Jul 00:40
feat: MapperInfo bank maps for every board via a generic probe

Replace the per-board BankMapper (six mappers) with a generic
mapper.ProbeBankMap that covers essentially all of them. The shared bank
helper `window` becomes the base method `win`, which records the ROM offset
and window size it resolves while a per-board probe flag is set; ProbeBankMap
snapshots the board, reads one byte per CPU/PPU window to capture the banks,
then restores it, so a read side effect (an MMC2/MMC4 CHR latch) leaves no
net change. The probe state lives on the board, so probing one console never
races another.

NROM and CNROM route their fixed PRG through `win` so the probe sees it too.
A window a board maps without the helper reports -1 (honest "unknown").

Across the 303 supported mapper configurations the probe reports PRG banks
for 302 and CHR banks for 291, with none panicking. The `win` rename touches
every board's hot read path; benchmarked at ~1.49 ms/frame, unchanged from
the baseline, and the accuracy floors (AccuracyCoin 141/141, nestest,
blargg) plus the 200+ board smoke suite still pass. Race-checked.