{
  "schemaVersion": 1,
  "title": "Streets of Rage",
  "version": "0.1.0",
  "releaseDate": "2026-10-26",
  "edition": "Original Genesis cartridge through self-hosted emulation",
  "romSha256": "dd44f120446654bb91c448762f3e0cd0d9b034f35d0e3266a4dc34402ada95c0",
  "originalSmdSha256": "e10eeac33bc17cd96a8f8a7cadc400e174b1a327a6dd26ab7defc9f64bf7ae6d",
  "game": {
    "playableOriginal": true,
    "fullSourceReconstruction": false,
    "fullCampaignPlaythroughVerified": false,
    "optionalCheats": [
      "Freeze timer",
      "Infinite HP",
      "Unlimited police specials",
      "No life lost on death"
    ],
    "cheatsOffByDefault": true,
    "snapshotFormat": "cosom-streets-of-rage-genesis-snapshot-v1"
  },
  "audio": {
    "musicCommandEntries": 17,
    "distinctMusicHeaders": 16,
    "nativeLoopEntries": 13,
    "finiteMusicEntries": 4,
    "audibleEffectEntries": 64,
    "sampleRate": 44100,
    "synthesis": "Original cartridge sound driver through Genesis Plus GX",
    "losslessCopies": "FLAC; bit-exact PCM roundtrip verified"
  },
  "graphics": {
    "galleryEntries": 1346,
    "artResourceStreams": 116,
    "playerDmaUploadWindows": 219,
    "eightRoundPlanes": 16,
    "spriteFamilies": 15,
    "spriteFrames": 1014,
    "fullGameImagesComplete": false,
    "limitations": [
      "Static stage layers retain no animated palette/scroll simulation.",
      "Tile sheets marked diagnostic grayscale retain original 4-bit indices and are not claimed to show original screen palettes.",
      "Story/UI composite mappings are an additional recovery layer; raw referenced pixel streams are retained. A stale Enigma table row at A85A+20 points to Kosinski1F596 and is excluded from Enigma exports. Abadede and some boss frames are linked sprite components, not a combined entity pose.",
      "Alternate enemy palette variants are preserved in palettes.json; sprite previews currently use one named ROM palette per family.",
      "Static original-ROM map components, including English/Japanese title parts and good-ending panels; not every timed story object/sprite composition.",
      "Palette lists are the original scene target phase; per-frame fades and cycling are not simulated.",
      "Story map2–7 context is the D280 transition; scene labels are deliberately neutral pending a full timeline audit."
    ],
    "storyAndUiComponents": 21
  },
  "limitations": [
    "Static stage layers retain no animated palette/scroll simulation.",
    "Tile sheets marked diagnostic grayscale retain original 4-bit indices and are not claimed to show original screen palettes.",
    "Story/UI composite mappings are an additional recovery layer; raw referenced pixel streams are retained. A stale Enigma table row at A85A+20 points to Kosinski1F596 and is excluded from Enigma exports. Abadede and some boss frames are linked sprite components, not a combined entity pose.",
    "Alternate enemy palette variants are preserved in palettes.json; sprite previews currently use one named ROM palette per family.",
    "Static original-ROM map components, including English/Japanese title parts and good-ending panels; not every timed story object/sprite composition.",
    "Palette lists are the original scene target phase; per-frame fades and cycling are not simulated.",
    "Story map2–7 context is the D280 transition; scene labels are deliberately neutral pending a full timeline audit.",
    "The original game is emulated, not rebuilt from source. A complete campaign playthrough is not claimed.",
    "Audio is original-driver emulator synthesis, not a comparison with physical Genesis hardware.",
    "Physical wireless controllers have not been independently tested for this release. Infinite HP blocks hit damage; falls can still kill. Original police-call timing and stage restrictions remain.",
    "Save files are exact-core emulator snapshots, separate from original cartridge persistence."
  ],
  "provenance": {
    "source": "./provenance.json",
    "audio": "./source/audio-provenance.json",
    "graphics": "./images/manifest.json",
    "runtime": "./play/runtime-provenance.json",
    "cheats": "./play/cheat-provenance.json"
  }
}
