{
  "schemaVersion": 1,
  "profile": "SLUS-00067 US supplied disc: normal Alucard and Richter opening ST0",
  "productionFile": "cheat-engine.js",
  "productionSha256": "52261e09adb648777a13b23602e9bb57a8784b212ed53ce3e220421e5980bf5f",
  "source": {
    "pinnedRepository": "https://github.com/Xeeynamo/sotn-decomp",
    "commit": "0622fcfd37311fd21baf2938c6bd74cea63005ba",
    "files": [
      {
        "path": "config/symbols.us.txt",
        "sha256": "04982ddca00f936a2744795be930ffda4a3e0b40ab51630343cfdfa936fbf057"
      },
      {
        "path": "include/game.h",
        "sha256": "4c7dc816fe31fdda4fb8903ce25c3291510917e36fbaadeae5cbcf924f65d5b2"
      },
      {
        "path": "include/entity.h",
        "sha256": "1276b5da7f54251e1a631e11f54e144fffdcc16068d59f6806d366908248570f"
      },
      {
        "path": "include/player_steps.h",
        "sha256": "05384329ea8837ed57502c1e4f16dc8c74b0a829910b30bec0da7d2935dae416"
      },
      {
        "path": "include/types.h",
        "sha256": "5c204aee120b5b4b9b18109b59c0033b9d7872cb85469b7a2ed4b08831b7374d"
      },
      {
        "path": "src/dra/5D5BC.c",
        "sha256": "20a1d34c789f32371055e7ed5aca3103bccb02df5589ecf819c12ac465eb6088"
      },
      {
        "path": "src/dra/692E8.c",
        "sha256": "4f6d118522e0fa2008fc155d37e427f15818dbfcab38350e389108e2bf02d222"
      },
      {
        "path": "src/dra/5087C.c",
        "sha256": "a8764cb50032a8aafa1107953b05267a2e2f5c4db898d3e2767bf217290ecc50"
      },
      {
        "path": "src/st/e_collect.h",
        "sha256": "da2725dd04113fc7d97d2925d2a2b88c0e0b46f500da98d299366a0746c39474"
      }
    ],
    "licenseNote": "The source references retain their upstream licenses; this evidence records facts observed in the supplied original US binaries."
  },
  "originalFiles": [
    {
      "sourceFile": "DRA.BIN",
      "sha256": "6cb1383b5b94e0bcad041af9856853907226091c184071917a739b91734af66b",
      "size": 1153136,
      "loadAddress": "0x800A0000"
    },
    {
      "sourceFile": "SLUS_000.67",
      "sha256": "8f3e09b5b607a49aab94a5516ca742a3a1ca93b086d0e91a8067c79faeaeab08",
      "size": 563200,
      "textFileOffset": 2048,
      "loadAddress": "0x80010000"
    },
    {
      "sourceFile": "ST/NO3/NO3.BIN",
      "sha256": "1228d5a1074c9e0c6cd0bcd50565450b168689d4ddbcaf9178eda49622a0e405",
      "size": 359960
    },
    {
      "sourceFile": "BIN/RIC.BIN",
      "sha256": "0d7d237e3bf8af55ce978d3a434e61ee26243ad9e8b839b3bf2e2d932f23e8ab",
      "size": 236120,
      "loadAddress": "0x8013C000"
    }
  ],
  "fields": [
    {
      "id": "game",
      "name": "g_GameState",
      "address": "0x8003C734",
      "physicalOffset": 247604,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "pauseAllowed",
      "name": "g_PauseAllowed",
      "address": "0x8003C8B8",
      "physicalOffset": 247992,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "timer",
      "name": "g_Timer",
      "address": "0x8003C998",
      "physicalOffset": 248216,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "character",
      "name": "g_PlayableCharacter",
      "address": "0x8003C9A0",
      "physicalOffset": 248224,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "engine",
      "name": "g_GameEngineStep",
      "address": "0x8003C9A4",
      "physicalOffset": 248228,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "gameStep",
      "name": "g_GameStep",
      "address": "0x80073060",
      "physicalOffset": 471136,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "stage",
      "name": "g_StageId",
      "address": "0x800974A0",
      "physicalOffset": 619680,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "demo",
      "name": "g_DemoMode",
      "address": "0x80097914",
      "physicalOffset": 620820,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "playerStep",
      "name": "PLAYER.step (g_Entities[0]+0x2C)",
      "address": "0x80073404",
      "physicalOffset": 472068,
      "widthBytes": 2,
      "access": "read only"
    },
    {
      "id": "animSet",
      "name": "PLAYER.animSet (g_Entities[0]+0x54)",
      "address": "0x8007342C",
      "physicalOffset": 472108,
      "widthBytes": 2,
      "access": "read only"
    },
    {
      "id": "playerStatus",
      "name": "g_Player.status (+0x35C)",
      "address": "0x80072F2C",
      "physicalOffset": 470828,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "padSim",
      "name": "g_Player.padSim (+0x324)",
      "address": "0x80072EF4",
      "physicalOffset": 470772,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "hp",
      "name": "g_Status.hp",
      "address": "0x80097BA0",
      "physicalOffset": 621472,
      "widthBytes": 4,
      "access": "read/write"
    },
    {
      "id": "hpMax",
      "name": "g_Status.hpMax",
      "address": "0x80097BA4",
      "physicalOffset": 621476,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "hearts",
      "name": "g_Status.hearts",
      "address": "0x80097BA8",
      "physicalOffset": 621480,
      "widthBytes": 4,
      "access": "read/write"
    },
    {
      "id": "heartsMax",
      "name": "g_Status.heartsMax",
      "address": "0x80097BAC",
      "physicalOffset": 621484,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "mp",
      "name": "g_Status.mp",
      "address": "0x80097BB0",
      "physicalOffset": 621488,
      "widthBytes": 4,
      "access": "read/write"
    },
    {
      "id": "mpMax",
      "name": "g_Status.mpMax",
      "address": "0x80097BB4",
      "physicalOffset": 621492,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "level",
      "name": "g_Status.level",
      "address": "0x80097BE8",
      "physicalOffset": 621544,
      "widthBytes": 4,
      "access": "read only"
    },
    {
      "id": "xp",
      "name": "g_Status.exp",
      "address": "0x80097BEC",
      "physicalOffset": 621548,
      "widthBytes": 4,
      "access": "read/write"
    },
    {
      "id": "money",
      "name": "g_Status.gold",
      "address": "0x80097BF0",
      "physicalOffset": 621552,
      "widthBytes": 4,
      "access": "read/write"
    }
  ],
  "staticAddressInstructionPairs": [
    {
      "field": "game",
      "sourceFile": "DRA.BIN",
      "fileOffset": 277840,
      "wordsHex": [
        "3c038004",
        "8c63c734"
      ],
      "operation": "lw",
      "resolvedAddress": "0x8003C734"
    },
    {
      "field": "pauseAllowed",
      "sourceFile": "DRA.BIN",
      "fileOffset": 338496,
      "wordsHex": [
        "3c018004",
        "ac22c8b8"
      ],
      "operation": "sw",
      "resolvedAddress": "0x8003C8B8"
    },
    {
      "field": "timer",
      "sourceFile": "DRA.BIN",
      "fileOffset": 274924,
      "wordsHex": [
        "3c028004",
        "8c42c998"
      ],
      "operation": "lw",
      "resolvedAddress": "0x8003C998"
    },
    {
      "field": "character",
      "sourceFile": "DRA.BIN",
      "fileOffset": 281252,
      "wordsHex": [
        "3c028004",
        "8c42c9a0"
      ],
      "operation": "lw",
      "resolvedAddress": "0x8003C9A0"
    },
    {
      "field": "engine",
      "sourceFile": "DRA.BIN",
      "fileOffset": 280784,
      "wordsHex": [
        "3c018004",
        "ac20c9a4"
      ],
      "operation": "sw",
      "resolvedAddress": "0x8003C9A4"
    },
    {
      "field": "gameStep",
      "sourceFile": "DRA.BIN",
      "fileOffset": 278828,
      "wordsHex": [
        "3c018007",
        "ac203060"
      ],
      "operation": "sw",
      "resolvedAddress": "0x80073060"
    },
    {
      "field": "stage",
      "sourceFile": "DRA.BIN",
      "fileOffset": 279064,
      "wordsHex": [
        "3c028009",
        "8c4274a0"
      ],
      "operation": "lw",
      "resolvedAddress": "0x800974A0"
    },
    {
      "field": "demo",
      "sourceFile": "DRA.BIN",
      "fileOffset": 277564,
      "wordsHex": [
        "3c018009",
        "ac207914"
      ],
      "operation": "sw",
      "resolvedAddress": "0x80097914"
    },
    {
      "field": "playerStatus",
      "sourceFile": "DRA.BIN",
      "fileOffset": 330708,
      "wordsHex": [
        "3c028007",
        "8c422f2c"
      ],
      "operation": "lw",
      "resolvedAddress": "0x80072F2C"
    },
    {
      "field": "padSim",
      "sourceFile": "DRA.BIN",
      "fileOffset": 279192,
      "wordsHex": [
        "3c018007",
        "ac222ef4"
      ],
      "operation": "sw",
      "resolvedAddress": "0x80072EF4"
    },
    {
      "field": "hp",
      "sourceFile": "DRA.BIN",
      "fileOffset": 326948,
      "wordsHex": [
        "3c018009",
        "ac227ba0"
      ],
      "operation": "sw",
      "resolvedAddress": "0x80097BA0"
    },
    {
      "field": "hpMax",
      "sourceFile": "DRA.BIN",
      "fileOffset": 326956,
      "wordsHex": [
        "3c018009",
        "ac227ba4"
      ],
      "operation": "sw",
      "resolvedAddress": "0x80097BA4"
    },
    {
      "field": "hearts",
      "sourceFile": "DRA.BIN",
      "fileOffset": 327068,
      "wordsHex": [
        "3c018009",
        "ac2a7ba8"
      ],
      "operation": "sw",
      "resolvedAddress": "0x80097BA8"
    },
    {
      "field": "heartsMax",
      "sourceFile": "DRA.BIN",
      "fileOffset": 326976,
      "wordsHex": [
        "3c018009",
        "ac227bac"
      ],
      "operation": "sw",
      "resolvedAddress": "0x80097BAC"
    },
    {
      "field": "mp",
      "sourceFile": "DRA.BIN",
      "fileOffset": 327084,
      "wordsHex": [
        "3c018009",
        "ac287bb0"
      ],
      "operation": "sw",
      "resolvedAddress": "0x80097BB0"
    },
    {
      "field": "mpMax",
      "sourceFile": "DRA.BIN",
      "fileOffset": 327076,
      "wordsHex": [
        "3c018009",
        "ac287bb4"
      ],
      "operation": "sw",
      "resolvedAddress": "0x80097BB4"
    },
    {
      "field": "level",
      "sourceFile": "DRA.BIN",
      "fileOffset": 358040,
      "wordsHex": [
        "3c038009",
        "8c637be8"
      ],
      "operation": "lw",
      "resolvedAddress": "0x80097BE8"
    },
    {
      "field": "xp",
      "sourceFile": "DRA.BIN",
      "fileOffset": 358000,
      "wordsHex": [
        "3c048009",
        "8c847bec"
      ],
      "operation": "lw",
      "resolvedAddress": "0x80097BEC"
    },
    {
      "field": "money",
      "sourceFile": "DRA.BIN",
      "fileOffset": 303332,
      "wordsHex": [
        "3c028009",
        "8c427bf0"
      ],
      "operation": "lw",
      "resolvedAddress": "0x80097BF0"
    }
  ],
  "identitySignatures": [
    {
      "sourceFile": "SLUS_000.67",
      "fileOffset": 5628,
      "physicalOffset": 69116,
      "hex": "0380023ce43942240a80033ca0886324000040ac040042242b084300fcff20140000000004000224000000000000000000000000000000000180043ca80e8424",
      "description": "Original US executable entry code."
    },
    {
      "sourceFile": "DRA.BIN",
      "fileOffset": 384544,
      "physicalOffset": 1039904,
      "hex": "1380023c6079428cd8ffbd272000bfaf1c00b3af1800b2af1400b1af060040101000b0afffff42241380013c607922ac09f80308030002341380023c6479428c",
      "description": "Original CheckAndDoLevelUp entry code."
    },
    {
      "sourceFile": "DRA.BIN",
      "fileOffset": 246164,
      "physicalOffset": 901524,
      "hex": "4241534c55532d3030303637445241583030",
      "description": "US BASLUS-00067DRAX00 identity string."
    }
  ],
  "experience": {
    "tableFileOffset": 51072,
    "tableAddress": "0x800AC780",
    "tableWidthBytes": 4,
    "tableEntries": [
      0,
      0,
      100,
      250,
      450,
      700,
      1000,
      1350,
      1750,
      2200,
      2700,
      3250,
      3850,
      4500,
      5200,
      5950,
      6750,
      7600,
      8500,
      9450,
      10450,
      11700,
      13200,
      15100,
      17500,
      20400,
      23700,
      27200,
      30900,
      35000,
      39500,
      44500,
      50000,
      56000,
      61500,
      68500,
      76000,
      84000,
      92500,
      101500,
      110000,
      120000,
      130000,
      140000,
      150000,
      160000,
      170000,
      180000,
      190000,
      200000,
      210000,
      222000,
      234000,
      246000,
      258000,
      270000,
      282000,
      294000,
      306000,
      318000,
      330000,
      344000,
      358000,
      372000,
      386000,
      400000,
      414000,
      428000,
      442000,
      456000,
      470000,
      486000,
      502000,
      518000,
      534000,
      550000,
      566000,
      582000,
      598000,
      614000,
      630000,
      648000,
      666000,
      684000,
      702000,
      720000,
      738000,
      756000,
      774000,
      792000,
      810000,
      830000,
      850000,
      870000,
      890000,
      910000,
      930000,
      950000,
      970000,
      999999
    ],
    "tableSha256": "965371662273ad5f317b7abb55e30081ec271a97519cfc71d655eb8e6f00fbd3",
    "multiplier": 16,
    "writesOnly": "g_Status.exp",
    "normalLevelUpFunctionAddress": "0x800FDE20",
    "normalPlayerCallInstruction": {
      "sourceFile": "DRA.BIN",
      "fileOffset": 436224,
      "wordHex": "0c03f788"
    },
    "policy": "Observe a positive player EXP delta of at most 10,000 across 1..8 game-counter increments, in the same stage and level. Add 15 times that organic delta to EXP, capped by the original level-99 threshold. Reset observation on denied state, level/stage discontinuity, backwards/large counter movement, and disabling. The original player update performs level/stat gains. No direct level, stats, familiar, or maximum writes. Gains coinciding with a level change may be skipped."
  },
  "limits": {
    "experience": 999999,
    "gold": 999999,
    "goldActionAmount": 5000,
    "hpMaxAndHeartsMaxSourceCap": 9999,
    "maximaNeverWritten": true,
    "resourcePolicy": "Refill only current HP/hearts/MP to already-existing positive normal maximum. HP must remain above zero. The shared maximum plausibility bound is 9,999; this is a safety bound for MP, not a claim that the original MP cap is 9,999. Fatal damage, transformations, menus and scripts are not overridden.",
    "goldCapBinaryInstructions": [
      {
        "sourceFile": "ST/NO3/NO3.BIN",
        "fileOffset": 287644,
        "wordHex": "3c05000f"
      },
      {
        "sourceFile": "ST/NO3/NO3.BIN",
        "fileOffset": 287680,
        "wordHex": "34a5423f"
      }
    ]
  },
  "liveGuard": {
    "common": "US executable+DRA/EXP identity, unique actual read/write LUT pair, Game_Play2, Engine_Normal1, Play_Default3, demo0, pauseAllowed1, padSim0, living player and sensible own HP/hearts/maxima remain required. Richter additionally requires exact RICheader+RicInit bytes; dead-prologue step22 is refused. Unused Richter XP/gold/MP values do not authorize writes or block valid HP/hearts.",
    "profiles": {
      "richter-prologue": {
        "stage": 31,
        "animSet": 32784,
        "playableCharacter": [
          0,
          1
        ],
        "available": {
          "xp": false,
          "hp": true,
          "money": false,
          "hearts": true,
          "mp": false
        }
      },
      "alucard": {
        "available": {
          "xp": true,
          "hp": true,
          "money": true,
          "hearts": true,
          "mp": true
        }
      }
    }
  },
  "ramBridge": {
    "cores": [
      {
        "variant": "modern",
        "archive": "data/cores/pcsx_rearmed-wasm.data",
        "archiveSha256": "fe5515f6c29f093f0e8c01824b213804f1f76eb9cb4c97c72fe2cc17606bfbc2",
        "wasmSha256": "ce204a800ee0914cabddefe88448dfaa2b43864039c4f39a32d4872c1037b9ed",
        "javascriptSha256": "42f536af90108189a0747698acb20341d04f8ac02913daa6fd9bf238bdc97841",
        "observedCoreRevision": "092633f8",
        "actualAllocatedHeapBytes": 536870912,
        "actualRuntimeBridgeStatus": "PASS",
        "exportUsed": "Module.HEAPU8",
        "unexportedAndNotUsed": [
          "Module.HEAP32",
          "retro_get_memory_data",
          "retro_get_memory_size"
        ]
      },
      {
        "variant": "legacy",
        "archive": "data/cores/pcsx_rearmed-legacy-wasm.data",
        "archiveSha256": "88faee73d06c597a68a8b78e5621d97feefca134c64b623e65f0a900037456da",
        "wasmSha256": "fc2b803ed940fb63faa89de394d31003f9e4106ee009c2f6798551a3c5fb518f",
        "javascriptSha256": "4f7440bdd6b05f4fe3e51986e28edc24cad75cf6412b1633a3e40ca14d8398e1",
        "observedCoreRevision": "092633f8",
        "actualAllocatedHeapBytes": 536870912,
        "actualRuntimeBridgeStatus": "PASS",
        "exportUsed": "Module.HEAPU8",
        "unexportedAndNotUsed": [
          "Module.HEAP32",
          "retro_get_memory_data",
          "retro_get_memory_size"
        ]
      }
    ],
    "primaryCoreSource": "https://github.com/EmulatorJS/pcsx_rearmed/blob/092633f8/libpcsxcore/psxmem.c",
    "sourceLines": [
      121,
      156,
      199,
      233
    ],
    "proof": "Entire exported HEAPU8 is scanned incrementally for exactly one distinct read/write page-LUT pair. All128 page mappings are verified in physical, 0x8000 cached and0xA000 uncached mirrors. Both share the actual2MiB RAM pointer and hardware pointer. ReadPIO equals RAM+2MiB; writePIO is null. The actual two bundled32-bit-WASM builds passed this contract. No fixed host pointer or loaded-ROM/save-state signature alone is trusted.",
    "scanBudget": {
      "maximumBytesPerAnimationFrame": 2097152,
      "timeTargetMilliseconds": 2,
      "clockCheckEveryWords": 16384,
      "failedScanRetrySeconds": 10
    },
    "beforeEveryWrite": "Reacquire actual HEAPU8; refuse shared/subarray/unknown runtime heaps; revalidate both LUTs, code/string/table identity, live state and expected current field; write one approved little-endian32-bit field. Module changes or buffer growth invalidate cached views. Ambiguity, cache isolation or any mismatch suspends writes.",
    "noCallsToNativeCheatApi": true
  },
  "lifecycle": {
    "defaultEnabled": false,
    "persistence": "No enabled settings stored. clearAll is flags-only and safe before start. destroy cancels the owned requestAnimationFrame loop. Disabling stops future writes and does not roll back progress.",
    "writesSavesOrCards": false,
    "mutatesDiscBiosVendor": false,
    "progressNote": "XP/gold/refilled resources can subsequently be saved by the original game through its normal memory-card save workflow."
  },
  "verification": {
    "status": "PASS",
    "totalChecks": 162,
    "reports": [
      {
        "path": "cheat-engine-tests.json",
        "sha256": "ffd50bfac88df8a935a502fe2618a648b30284832267dc97bda0f525e99c5992",
        "checks": 106
      },
      {
        "path": "richter-rewind-tests.json",
        "sha256": "ee466366371370b3f2840875d541a6cb81188b515f0f320eed13a43e7999aec2",
        "checks": 34
      },
      {
        "path": "actual-core-cheat-modern.json",
        "sha256": "c308bad6e720aa025dab44dbfc349226796e03aeaeb733d0fc5da8320f55785e",
        "checks": 9
      },
      {
        "path": "actual-core-cheat-legacy.json",
        "sha256": "fac3f00e51addf7c06c9c47f776a2eeae2f27a316fd9e6bad667be0661fac872",
        "checks": 9
      },
      {
        "path": "real-game-probe.json",
        "sha256": "939e92e6bc82a791df0c47ff88e5b02ee49731902496851f8ab8b24b246810c1",
        "checks": 4
      }
    ],
    "browserGameplayVerified": false,
    "actualCardSaveReloadVerified": false,
    "scope": "106 Alucard regression, 34 Richter/rewind, 18 allocated-core fixture and 4 genuine executed-prologue checks. Genuine hearts30→99 observed; actual HP damage/refill was not observed. Browser and persistence tests remain pending."
  },
  "previousAlucardVerification": {
    "productionSha256": "3690dc73e763b675b6865272fbb087531e15057a63a6798a291afb2ca59a32ef",
    "status": "PASS",
    "reports": [
      {
        "report": "cheat-engine-tests.json",
        "sha256": "5cd788d8f45f304f5755a2e81e3bd82d2bd137e7025631a1569618d9174f238e",
        "checks": 106,
        "status": "PASS"
      },
      {
        "report": "actual-core-cheat-modern.json",
        "sha256": "db398bda5fcf806c3b8a2daa08002d0df184d174571d11f3e1a8d7ed0b5df7f6",
        "checks": 9,
        "status": "PASS"
      },
      {
        "report": "actual-core-cheat-legacy.json",
        "sha256": "4bc3e8a618a4c6f3dd1c46e0dd3daab3a28f7c8e3419d18fa2bf1276a74e97c0",
        "checks": 9,
        "status": "PASS"
      }
    ],
    "totalChecks": 124,
    "actualCoreFixtureBoundary": "Both original vendor WASM cores initialized with a read-only1000-sector prefix of the preserved disc and HLE BIOS in a no-output native Node fixture. Actual allocated RAM and LUTs were identified and initial non-Alucard content refused. With the core paused, original DRA/EXE plus explicitly synthetic live-Alucard state was seeded into that actual RAM to prove the production adapter and bounded writes. This is NOT an interactive browser/playthrough, actual Alucard save/load, persistent-card or in-game-effect test. Original player BIOS/vendor/save bytes were not changed.",
    "browserAndRealGameplayStatus": "UNVERIFIED in this task; browser tooling was unavailable. No browser-automation workaround was used."
  },
  "rewindSuspension": "Optional isSuspended callback is checked before each snapshot/write. True or a thrown exception refuses all options and clears XP observation without discarding the verified mapping. Resume revalidates all gates/pointers; changed mappings still cause full rescan/refusal.",
  "richter": {
    "confirmedCause": "The earlier guard accepted only normal Alucard; it excluded Richter’s opening fight.",
    "source": {
      "size": 236120,
      "sha256": "0d7d237e3bf8af55ce978d3a434e61ee26243ad9e8b839b3bf2e2d932f23e8ab",
      "loadAddress": "0x8013C000",
      "signatures": [
        {
          "physicalOffset": 1294336,
          "sourceOffset": 0,
          "hex": "fc7b1580406f1580c4031680b4e7158020c0138020c0138020c0138020c01380"
        },
        {
          "physicalOffset": 1404736,
          "sourceOffset": 110400,
          "hex": "d0ffbd271400b1af218880002800b6af0780163cd833d6262120c0022c00bfaf2400b5af2000b4af1c00b3af1800b2af185b050c1000b0aff40005340780043c"
        }
      ],
      "instructionProof": [
        {
          "sourceFile": "BIN/RIC.BIN",
          "offset": 114744,
          "wordsHex": [
            "3c018009",
            "ac317ba0"
          ],
          "description": "Richter32-bit HP write at80097BA0"
        },
        {
          "sourceFile": "BIN/RIC.BIN",
          "offset": 128616,
          "wordsHex": [
            "3c028009",
            "8c427ba4"
          ],
          "description": "Richter32-bit HPmaximum read at80097BA4"
        },
        {
          "sourceFile": "BIN/RIC.BIN",
          "offset": 146796,
          "wordsHex": [
            "3c038009",
            "8c637ba8"
          ],
          "description": "Richter32-bit heart read at80097BA8"
        },
        {
          "sourceFile": "BIN/RIC.BIN",
          "offset": 146828,
          "wordsHex": [
            "3c018009",
            "ac227ba8"
          ],
          "description": "Richter32-bit heart write at80097BA8"
        }
      ],
      "sourceFiles": [
        {
          "path": "config/splat.us.ric.yaml",
          "sha256": "2aeb348b2058db70269f66d2af279fba97268d5e07b1cab208a7350e1e00ccb6"
        },
        {
          "path": "src/ric/pl_header.c",
          "sha256": "84d52b6aa2c9197daedaecab9d3f16523d64f5b0b007c3662dc218f2fd586845"
        },
        {
          "path": "src/ric/pl_main.c",
          "sha256": "80414702a653204102d788df1f087d777e9890b93f6735ad853346ad96792400"
        },
        {
          "path": "src/ric/pl_blueprints.c",
          "sha256": "f3fc494ae3ebfa76bd1a0c0031ebfdb48258be67241402686f5712d3755f2caf"
        },
        {
          "path": "src/ric/ric.h",
          "sha256": "2c9a9437d55498d42ce418fe9ab2ad28e7dfbf356c90b66ecc38e6250d173cc6"
        },
        {
          "path": "src/dra/game_handlers.c",
          "sha256": "702e572b01a8ccf193bf01a897e50633b86902186da3a58957fef65ec41e5a64"
        },
        {
          "path": "src/dra/5F60C.c",
          "sha256": "0f2c9cda92a51b024209a4d99f7b7c466e748733b5c170884c0b7e8a6addd99e"
        },
        {
          "path": "include/game.h",
          "sha256": "4c7dc816fe31fdda4fb8903ce25c3291510917e36fbaadeae5cbcf924f65d5b2"
        }
      ],
      "sourceFacts": "RicInit uses ANIMSET_OVL(0x10), and stageST0 selects Richter independently of g_PlayableCharacter. InitStats source has HP50/max50/hearts30/max99. Shared32-bit HP/hearts fields are the same as Alucard. Actual prologue g_PlayableCharacter remained0, not1."
    },
    "genuineExecution": {
      "source": "real-game-probe.json",
      "frames": 4200,
      "sourceWasmUntouched": true,
      "BIOSsha256": "5e84a94818cf5282f4217591fefd88be36b9b174b3cc7cb0bcd75199beb450f1",
      "actualBIOSObserved": true,
      "observations": [
        {
          "name": "published version denies genuine opening Richter",
          "pass": true
        },
        {
          "name": "new version accepts genuine opening Richter",
          "pass": true
        },
        {
          "name": "actual executed Richter heart refill",
          "pass": true
        },
        {
          "name": "unsupported options stay unavailable in actual Richter",
          "pass": true
        }
      ],
      "actualHeartsBefore": 30,
      "actualHeartsAfter": 99,
      "naturalDamageRefills": 0,
      "boundary": "Full source disc streamed read-only, original companion BIOS and unmodified actual vendorWASM. A private copy of the JavaScript host exposes its existing main-loop callback for deterministic core-level stepping. Controller inputs navigate the genuine title/name menu/intro/prologue. No game state/stat values were seeded. The production module only performs requested HP/hearts refills after validating genuine state. No user card or host save was mounted/read/written. This is not browser automation or a browser/UI test. HP remained full, so an actual damage/refill cycle was not observed. Genuine Alucard progression was not reached in this bounded run."
    }
  }
}
