Releases: danielgatis/go-headless-nes
Releases · danielgatis/go-headless-nes
Release list
v1.0.4
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.
v1.0.3
refactor: library-only core with a debug observation surface Drop the wire protocol (proto/server/cmd/nesd) and its docs. The only consumer was cmd/nesd; the examples and the WASM build already use the Console Go API directly, so the emulator is now a pure in-process library. Move the public package from the module root into nes/ so the import path basename matches the package name and consumers no longer alias the import. Remove the stale /nes rule from .gitignore, which had started shadowing the new package directory. Add the observation surface an external debugger builds on, all zero-cost when unused: an optional bus Observer (every CPU read/write), a MemFilter (Game Genie reads, value locks and blocks), and OAM/PaletteRAM/SetRegister accessors. Covered by new tests; the full suite still passes 436/436 with the accuracy floors (AccuracyCoin 141/141, nestest, blargg) intact.