{
  "schemaVersion": 1,
  "romSha256": "c4e3e9facf3f79dbe757f3090c59d09b8a8e9ddd84c8d82bb0ed10c589756385",
  "source": {
    "url": "https://github.com/RAMPKORV/wonderboy-in-monster-world-disassembly",
    "commit": "4d8a7b5e931028ea1fd2326d244511263410656c",
    "upstreamRomSha256": "6b2ac36f624f914ad26e32baa87d1253aea9dcfc13d2a5842ecdd2bd4a7a43b9",
    "suppliedRomDifferent": true,
    "actualInstructionTargetsVerified": true,
    "manual": "https://manuals.sega.com/genesismini/pdf/WONDERBOY.pdf"
  },
  "memoryChanges": {
    "infiniteHP": {
      "address": "00E0A4",
      "original": "916C",
      "replacement": "4A6C",
      "meaning": "Test current HP instead of subtracting damage; retain normal reactions."
    },
    "infiniteMagic": {
      "address": "00877A",
      "original": "5328",
      "replacement": "4A28",
      "meaning": "Test the remaining acquired spell count instead of decrementing it."
    },
    "noHitbox": {
      "hurtBoxEntry": "000C3E",
      "codeCave": "0BFF00",
      "contactHandlers": [
        "000E64",
        "004742"
      ],
      "meaning": "Reject the actual player before hurt-box, point-contact and attacking-object overlap or collision linking; skip contact handlers before damage/knockback. Other target entities remain hittable.",
      "targetTestEntries": [
        "000C3E",
        "000D2C",
        "000D76"
      ],
      "codeCaves": [
        "0BFF00",
        "0BFF40",
        "0BFF80"
      ]
    },
    "addGold": {
      "ramAddress": "FF962C",
      "format": "32-bit unsigned big-endian integer",
      "amounts": [
        5000,
        50000,
        100000
      ],
      "cap": 999999,
      "method": "Modify a copied verified native snapshot, then restore it alongside the unchanged current EEPROM backing and controller; witness and verify all three together."
    }
  },
  "nativeChecks": [
    {
      "kind": "collision",
      "enabled": false,
      "marker": 4660,
      "hit": -1,
      "flagsPlayer": 17,
      "flagsEnemy": 64,
      "hp": 0,
      "magic": 0
    },
    {
      "kind": "collision",
      "enabled": true,
      "marker": 4660,
      "hit": 0,
      "flagsPlayer": 0,
      "flagsEnemy": 0,
      "hp": 0,
      "magic": 0
    },
    {
      "kind": "player-attack",
      "enabled": false,
      "marker": 4660,
      "hit": -1,
      "flagsPlayer": 64,
      "flagsEnemy": 17,
      "hp": 0,
      "magic": 0
    },
    {
      "kind": "player-attack",
      "enabled": true,
      "marker": 4660,
      "hit": -1,
      "flagsPlayer": 64,
      "flagsEnemy": 17,
      "hp": 0,
      "magic": 0
    },
    {
      "kind": "point",
      "enabled": false,
      "marker": 4660,
      "hit": -1,
      "flagsPlayer": 3,
      "flagsEnemy": 16,
      "hp": 0,
      "magic": 0
    },
    {
      "kind": "point",
      "enabled": true,
      "marker": 4660,
      "hit": 0,
      "flagsPlayer": 0,
      "flagsEnemy": 0,
      "hp": 0,
      "magic": 0
    },
    {
      "kind": "object",
      "enabled": false,
      "marker": 4660,
      "hit": 0,
      "flagsPlayer": 137,
      "flagsEnemy": 32,
      "hp": 0,
      "magic": 0
    },
    {
      "kind": "object",
      "enabled": true,
      "marker": 4660,
      "hit": 0,
      "flagsPlayer": 0,
      "flagsEnemy": 0,
      "hp": 0,
      "magic": 0
    },
    {
      "kind": "contact",
      "enabled": false,
      "marker": 4660,
      "hit": 0,
      "flagsPlayer": 5,
      "flagsEnemy": 132,
      "hp": 0,
      "magic": 0
    },
    {
      "kind": "contact",
      "enabled": true,
      "marker": 4660,
      "hit": 0,
      "flagsPlayer": 0,
      "flagsEnemy": 0,
      "hp": 0,
      "magic": 0
    },
    {
      "kind": "magic",
      "enabled": false,
      "marker": 4660,
      "hit": 0,
      "flagsPlayer": 0,
      "flagsEnemy": 0,
      "hp": 0,
      "magic": 2
    },
    {
      "kind": "magic",
      "enabled": true,
      "marker": 4660,
      "hit": 0,
      "flagsPlayer": 0,
      "flagsEnemy": 0,
      "hp": 0,
      "magic": 3
    },
    {
      "kind": "hp",
      "enabled": false,
      "marker": 4660,
      "hit": 0,
      "flagsPlayer": 0,
      "flagsEnemy": 0,
      "hp": 512,
      "magic": 0
    },
    {
      "kind": "hp",
      "enabled": true,
      "marker": 4660,
      "hit": 0,
      "flagsPlayer": 0,
      "flagsEnemy": 0,
      "hp": 768,
      "magic": 0
    },
    {
      "kind": "native-queued-restore",
      "completeSerializerMatches": true,
      "goldAfterRestore": 5000,
      "mountedRomUnchanged": true
    },
    {
      "kind": "live-cheat-toggle-memory",
      "allSelected": true,
      "independentSelections": true,
      "offRestoresEveryOriginalWord": true,
      "caveRestored": true,
      "mountedRomFileUnchanged": true
    },
    {
      "kind": "gold",
      "amount": 5000,
      "after": 5000
    },
    {
      "kind": "gold",
      "amount": 50000,
      "after": 50000
    },
    {
      "kind": "gold",
      "amount": 100000,
      "after": 100000
    },
    {
      "kind": "gold-cap",
      "cap": 999999
    }
  ],
  "moduleChecks": [
    {
      "name": "new selected file commits only after close and full readback; repeat save works",
      "passed": true
    },
    {
      "name": "selected file reopen validates checksum, game/core and session",
      "passed": true
    },
    {
      "name": "external file conflict blocks overwrite",
      "passed": true
    },
    {
      "name": "read-only selection can load but cannot report a write",
      "passed": true
    },
    {
      "name": "automatic writes never prompt; manual save can request existing-file permission",
      "passed": true
    },
    {
      "name": "closeError latches uncertain write and blocks further commits",
      "passed": true
    },
    {
      "name": "readbackError latches uncertain write and blocks further commits",
      "passed": true
    },
    {
      "name": "exclusive-writer acquisition rechecks file before writing",
      "passed": true
    },
    {
      "name": "exclusive writer rejects concurrent second commit",
      "passed": true
    },
    {
      "name": "nonempty existing file cannot activate through Create",
      "passed": true
    },
    {
      "name": "rewind history copies snapshots, obeys budget, selects time and rejects stale generation",
      "passed": true
    },
    {
      "name": "rewind speed selection consumes 1x 2x 4x 8x elapsed game time at captured sample boundaries",
      "passed": true
    },
    {
      "name": "foreign game, wrong actual core identity and corrupted snapshot rejected",
      "passed": true
    }
  ],
  "scope": "Actual retained Genesis WASM executes exact source routines under private controlled 68000 fixtures. The diagnostic reset entry and test driver are private, not gameplay footage or a full-campaign test.",
  "limits": [
    "No complete campaign playthrough",
    "No physical wireless controller test",
    "Controlled collision fixtures are not all enemy/boss encounters",
    "Original HP may still be affected by scripted instant-death events.",
    "Sampling/restore latency affects rewind smoothness.",
    "No experience levels exist; progress uses hearts, equipment and story items."
  ],
  "nativeCheatBatchLimit": "Sixteen codes per native index; the retained interface truncates a single string near 255 bytes.",
  "saveIntegrityChecks": [
    {
      "name": "canonical clean Wonder Boy backing is FF and its unique EEPROM controller is idle",
      "passed": true
    },
    {
      "name": "per-ROM custom EEPROM metadata and fixed mapper specification are guarded",
      "passed": true
    },
    {
      "name": "guarded full backing reaches the actual native SRAM persistence serializer",
      "passed": true
    },
    {
      "name": "exact native serializer omits both backing and active EEPROM protocol state",
      "passed": true
    },
    {
      "name": "new portable files include volatile state, full backing and active controller with separate checksums",
      "passed": true
    },
    {
      "name": "a separate native instance restores the entire pair and ends paused after queued native witness",
      "passed": true
    },
    {
      "name": "old native-only files remain importable and clear backing plus controller instead of borrowing another session",
      "passed": true
    },
    {
      "name": "partial paired files and corrupted backing/controller checksums reject before native mutation",
      "passed": true
    },
    {
      "name": "an unconfirmed native load recovers prior volatile state, backing and controller together",
      "passed": true
    },
    {
      "name": "post-load backing mismatch atomically restores all earlier components",
      "passed": true
    },
    {
      "name": "post-load controller mismatch atomically restores all earlier components",
      "passed": true
    },
    {
      "name": "rewind records copy and restore all three components including a mid-transaction controller",
      "passed": true
    },
    {
      "name": "gold restores preserve the currently selected backing and EEPROM controller",
      "passed": true
    },
    {
      "name": "public queued restore followed by play advances original CPU, input and actor position",
      "passed": true
    },
    {
      "name": "ordinary reset preserves the selected cartridge data and controller",
      "passed": true
    },
    {
      "name": "new adventure explicitly clears backing and protocol before native reset; native reset alone is insufficient",
      "passed": true
    },
    {
      "name": "fresh reset still accepts original Start controls and reaches new-game story",
      "passed": true
    },
    {
      "name": "failed paired recovery permanently blocks battery access and saving",
      "passed": true
    },
    {
      "name": "actual mounted and preserved source ROM bytes remain unchanged",
      "passed": true
    }
  ],
  "originalSaveObserverChecks": [
    {
      "name": "original-routine native records pass exact one-slot validator",
      "passed": true
    },
    {
      "name": "blank-to-original-save emits once after stable duration and repeated polls deduplicate",
      "passed": true
    },
    {
      "name": "three polls cannot bypass600ms interval at250ms cadence",
      "passed": true
    },
    {
      "name": "partial record suppressed: checksum corruption",
      "passed": true
    },
    {
      "name": "partial record suppressed: wrong packer header",
      "passed": true
    },
    {
      "name": "partial record suppressed: partial final page",
      "passed": true
    },
    {
      "name": "partial record suppressed: missing initial sword flag",
      "passed": true
    },
    {
      "name": "partial record suppressed: missing armor flag",
      "passed": true
    },
    {
      "name": "partial record suppressed: missing boots flag",
      "passed": true
    },
    {
      "name": "partial record suppressed: uninitialized hearts",
      "passed": true
    },
    {
      "name": "checksum-cancelling partialwrite cannot commit while native controller isWRITE_DATA",
      "passed": true
    },
    {
      "name": "quiescence required: clock-low",
      "passed": true
    },
    {
      "name": "quiescence required: data-low",
      "passed": true
    },
    {
      "name": "quiescence required: WAIT_STOP",
      "passed": true
    },
    {
      "name": "candidate that reverts to currentbaseline before settling never commits",
      "passed": true
    },
    {
      "name": "legitimate stableA-toB-toA save is not rejected by historicalsignature membership",
      "passed": true
    },
    {
      "name": "changing valid intermediate record restarts fullstable observation window",
      "passed": true
    },
    {
      "name": "non-originalboundary primes without falsecommit: startup",
      "passed": true
    },
    {
      "name": "non-originalboundary primes without falsecommit: selected-load",
      "passed": true
    },
    {
      "name": "non-originalboundary primes without falsecommit: quick-load",
      "passed": true
    },
    {
      "name": "non-originalboundary primes without falsecommit: import",
      "passed": true
    },
    {
      "name": "non-originalboundary primes without falsecommit: restart",
      "passed": true
    },
    {
      "name": "non-originalboundary primes without falsecommit: rewind-end",
      "passed": true
    },
    {
      "name": "non-originalboundary primes without falsecommit: new-adventure",
      "passed": true
    },
    {
      "name": "non-originalboundary primes without falsecommit: cheat-change",
      "passed": true
    },
    {
      "name": "non-originalboundary primes without falsecommit: save-as-session",
      "passed": true
    },
    {
      "name": "busyprime settles silently even across validrecord replacements and reversals",
      "passed": true
    },
    {
      "name": "unprimedstartup silently learns currentrecord and never treats load as save",
      "passed": true
    },
    {
      "name": "ordinarypause gap retainsbaseline but cannot reuse stale confirmation samples",
      "passed": true
    },
    {
      "name": "clockrollback resets into silentarming rather than completing oldcandidate",
      "passed": true
    },
    {
      "name": "duplicatepoll timestamps do not inflate sample count",
      "passed": true
    },
    {
      "name": "baseline signatures do not alias mutable backing views",
      "passed": true
    },
    {
      "name": "changes outside original64byte slot do not invent new game saves",
      "passed": true
    },
    {
      "name": "truncated work-RAM substitute, foreign controller, unguarded runtime and unsafe timingreject",
      "passed": true
    }
  ],
  "automaticFileCommitChecks": [
    {
      "name": "a committed original record writes the chosen file only after pause, journal drain and complete readback",
      "passed": true
    },
    {
      "name": "automatic commits preserve an already paused game",
      "passed": true
    },
    {
      "name": "automatic commits never resume a page that became hidden",
      "passed": true
    },
    {
      "name": "read-only automatic commits show waiting state without any permission prompt",
      "passed": true
    },
    {
      "name": "download mode retains a dirty notice without opening a file or pausing gameplay",
      "passed": true
    },
    {
      "name": "an external selected-file conflict blocks automatic overwrite and retains the dirty notice",
      "passed": true
    },
    {
      "name": "an uncertain automatic write latches further commits and never advertises success",
      "passed": true
    },
    {
      "name": "busy actions and stale observer generations cannot write a newly selected file",
      "passed": true
    },
    {
      "name": "a generation change while capture awaits cannot commit the old event",
      "passed": true
    },
    {
      "name": "cheat, gold, rewind and ordinary reset priming preserve an unpersisted inn-save notice",
      "passed": true
    },
    {
      "name": "explicit load and successful-new-file boundaries discard the previous timeline notice",
      "passed": true
    },
    {
      "name": "gold restore announces its own boundary rather than a file-load boundary",
      "passed": true
    }
  ],
  "originalSaveCompatibilityChecks": [
    {
      "name": "the supplied source has E820 and exact GX detects the custom I2C mapper",
      "passed": true
    },
    {
      "name": "the shipped all-off applyCheats path applies mandatory E840 while source and mounted bytes stay c4e3",
      "passed": true
    },
    {
      "name": "correcting this sole live header byte reproduces the canonical reference program hash",
      "passed": true
    },
    {
      "name": "every optional assist selection retains the mandatory header compatibility",
      "passed": true
    },
    {
      "name": "loading an older native snapshot cannot undo the live mandatory header",
      "passed": true
    },
    {
      "name": "native reset plus the shipped reapply path retains header and EEPROM metadata",
      "passed": true
    },
    {
      "name": "original source, mounted cartridge and actual WASM bytes remain unchanged",
      "passed": true
    },
    {
      "name": "unmodified original pack/write/read/validator produces a real stable record 0",
      "passed": true
    },
    {
      "name": "unmodified original pack/write/read/validator produces a real stable record 1",
      "passed": true
    },
    {
      "name": "source cartridge file remains byte-exact",
      "passed": true
    }
  ],
  "mandatoryCompatibilityProfile": {
    "profile": "cosom-wonderboy-h1-eeprom-compat-v1",
    "label": "Original-save compatibility",
    "address": 434,
    "original": 59424,
    "replacement": 59456,
    "code": "0001B2:E840",
    "referenceRomSha256": "6b2ac36f624f914ad26e32baa87d1253aea9dcfc13d2a5842ecdd2bd4a7a43b9"
  },
  "independentSaveReviewChecks": [
    {
      "name": "supplied cartridge and actual retained WASM identities",
      "passed": true
    },
    {
      "name": "public mandatory compatibility applies with every optional cheat off and survives toggles/load/reset",
      "passed": true
    },
    {
      "name": "exact public compatibility path lets unchanged original save packer/writer/reader/validator persist two actual native records",
      "passed": true
    },
    {
      "name": "original writer completion produces one quiescent observer event per changed record; native readback and persistence match",
      "passed": true
    },
    {
      "name": "mounted source header and complete source bytes remain unchanged through compatibility and diagnostic execution",
      "passed": true
    },
    {
      "name": "unique live EEPROM layout is Wonder Boy-specific, not MWIV SRAM bounds",
      "passed": true
    },
    {
      "name": "direct native backing bytes match the native persistence serializer, not a file echo",
      "passed": true
    },
    {
      "name": "actual queued native restore omits battery and serial controller; native reset also retains controller",
      "passed": true
    },
    {
      "name": "real 68000 EEPROM bus transactions admit address127, cycle9, write/page wrap and read/array wrap",
      "passed": true
    },
    {
      "name": "two independent actual WASM instances pass the public runtime witness",
      "passed": true
    },
    {
      "name": "portable bundle restores actual queued native state, full battery and controller, then synchronizes cache",
      "passed": true
    },
    {
      "name": "historical file/quick envelope clears prior backing and controller and overwrites stale nonempty cache",
      "passed": true
    },
    {
      "name": "partial new bundles and corrupt controller checksum reject before native mutation",
      "passed": true
    },
    {
      "name": "postload battery/controller mismatch recovers all three prior parts and cache through actual queued restore",
      "passed": true
    },
    {
      "name": "copied rewind record restores all three parts and cache",
      "passed": true
    },
    {
      "name": "normal native restart preserves the cartridge pair; fresh adventure clears backing/controller/cache and ends paused",
      "passed": true
    },
    {
      "name": "exact Save as callsite copies current battery/controller under new session and rolls failed writes back logically",
      "passed": true
    },
    {
      "name": "exact hidden fallback import participates in startup serialization across delayed file reads",
      "passed": true
    },
    {
      "name": "foreign EEPROM spec, cycle10 and address128 reject; legitimate realbus boundary cases pass",
      "passed": true
    },
    {
      "name": "partial byte updates and busy EEPROM cannot trigger; stable complete changed record triggers once",
      "passed": true
    },
    {
      "name": "stable original A\u00e2\u2020\u2019B\u00e2\u2020\u2019A saves emit twice, while an uncommitted transient B\u00e2\u2020\u2019A reversal does not",
      "passed": true
    },
    {
      "name": "boundary prime suppresses already loaded records and nonquiescent loads settle as baseline",
      "passed": true
    },
    {
      "name": "exact original-save orchestration writes and decodes the full guarded native bundle with already granted access",
      "passed": true
    },
    {
      "name": "automatic file commit preserves an already paused game",
      "passed": true
    },
    {
      "name": "background auto-save never prompts, and unpersisted dirty/status survive cheat/gold/rewind/restart priming",
      "passed": true
    },
    {
      "name": "hidden-page permission failure cannot prompt or resume the paused game",
      "passed": true
    },
    {
      "name": "automatic save rejects an outside file edit before a writer opens",
      "passed": true
    },
    {
      "name": "unconfirmed file readback latches the selected file and prevents a later automatic overwrite",
      "passed": true
    },
    {
      "name": "no selected file produces a pending-save notice without writing, picking or downloading",
      "passed": true
    },
    {
      "name": "a stale timeline epoch during asynchronous capture cannot write a selected file",
      "passed": true
    },
    {
      "name": "a selected-session change during asynchronous capture cannot write stale data",
      "passed": true
    },
    {
      "name": "automatic save cannot enter while another serialized action is active",
      "passed": true
    },
    {
      "name": "unconfirmed recovery permanently blocks guarded saves",
      "passed": true
    },
    {
      "name": "source ROM, pinned WASM and all reviewed public source hashes unchanged through audit",
      "passed": true
    }
  ]
}
