{
  "schema": 1,
  "date": "2026-10-26",
  "game": "Streets of Rage / Bare Knuckle",
  "sourceRomSha256": "dd44f120446654bb91c448762f3e0cd0d9b034f35d0e3266a4dc34402ada95c0",
  "originalSmdSha256": "e10eeac33bc17cd96a8f8a7cadc400e174b1a327a6dd26ab7defc9f64bf7ae6d",
  "normalizedRomMd5": "569cfec15813294a8f0cf88cccc8c151",
  "normalizedRomCrc32": "BFF227C6",
  "sourceUnmodified": true,
  "credits": {
    "music": "Yuzo Koshiro",
    "soundDriver": "Original 68000 Mucom-derived FM/PSG sequencer, original Z80 DAC sample driver"
  },
  "sources": [
    {
      "url": "https://github.com/RuiNelson/StreetsOfRageRecompilation",
      "commit": "370414b422130a248736b35a07a2006e51e6a92e",
      "used": "sound memory map and source-format research;MIT Kosinski decoder independently compared with original ROM routine"
    },
    {
      "url": "https://github.com/Dandaman955/Streets-of-Rage-1-Disassembly-Redux",
      "used": "matching ROM disassembly MD5569CFEC15813294A8F0CF88CCCC8C151 CRCBFF227C6"
    },
    {
      "url": "https://github.com/libretro/Genesis-Plus-GX",
      "coreDllSha256": "8865e4e880e726e3ac91f6fc66858375984f4f3ea19ee696e744e8ebab4c583e",
      "used": "original hardware synthesis in pinned native capture core"
    }
  ],
  "render": {
    "sampleRate": 44100,
    "channels": 2,
    "pcmBits": 16,
    "fps": 59.92274340431231,
    "gameLogic": "Private savestate RAM/CPU idle trampoline freezes gameplay; original ROM VBlank audio still executes. WorkRAM command queueFFF00A requests original commands; no ROM byte patched.120silent frames settle core output after state load, then direct RAM write avoids reload transient.",
    "loop": "Complete music transport bytesFFF010\u2013FFF1EF repeat for120consecutiveframes. Preserve exact captured sample period. Choose quiet phase-compatible sample offset within that matched window without crossfade, resampling, normalization or fade. Firstpass can include warmup repeats; not a claim of minimum musical intro. FM oscillators/PCM phase need not be bit-identical at driver-state repeats; pertrack PCM seam evidence provided.",
    "lossless": "LocalWAV masters plus publicFLAC, every file decoded to identicalPCM bytes.",
    "ogg": "Vorbisq6. Every looping music track checked to decode to exactly master sample-frame count; small nonloop files can differ by codec padding.",
    "physicalGenesisHardwareComparison": false
  },
  "coverage": {
    "musicCommandSlots": 17,
    "distinctMusicHeaders": 16,
    "musicAliasSlots": {
      "8E": "8D"
    },
    "loopingMusicSlots": 13,
    "finiteMusicSlots": [
      "82",
      "83",
      "8D",
      "8E"
    ],
    "fmEffectSlots": 48,
    "playablePcmCommandSlots": 12,
    "extraPercussionAuditions": 4,
    "audibleCatalogEffects": 64,
    "ignoredPcmControlSlots": [
      "DC",
      "DD",
      "DE",
      "DF"
    ],
    "pcmDirectoryRecords": 17,
    "pcmZeroLengthSlots": [
      "85"
    ],
    "allDriverTablesExtracted": true,
    "allContextualMixCombinationsComplete": false,
    "individualSfxEventNamesFullyMapped": false
  },
  "sourceFiles": [
    {
      "file": "original-sound-bank.bin",
      "romOffset": 469028,
      "bytes": 55260,
      "sha256": "03a78b5b3e16fcbf803430f2e00b89a3c6d13507139b113d90d136815c19dc61",
      "transformation": "byte-identical ROM slice"
    },
    {
      "file": "music-pointer-table.bin",
      "romOffset": 469132,
      "bytes": 68,
      "sha256": "ffb3992f61987c8270794949c7ef7d30a5d2385e1277909f9b0bcd0713f09f69",
      "transformation": "byte-identical ROM slice"
    },
    {
      "file": "effect-pointer-table.bin",
      "romOffset": 473942,
      "bytes": 192,
      "sha256": "8993ea0730ef8e3e9ad8893404a05f39aa32bcf5e2a1e0f484bb0c5a75e0c56f",
      "transformation": "byte-identical ROM slice"
    },
    {
      "file": "z80-dac-driver.kos",
      "romOffset": 497058,
      "bytes": 7581,
      "sha256": "b58299a7f08c4e772eb06ec4d2acd0bf78a29c6d1b2dc9d64bcd158a29f42e29",
      "transformation": "byte-identical ROM slice"
    },
    {
      "file": "z80-dac-driver.dec.bin",
      "romOffset": null,
      "bytes": 7879,
      "sha256": "59bbf24f58d64452e5004927610059acb29ce85598eee4bd29c2525df607db8e",
      "transformation": "ROM Kosinski expansion, first0x1EC7bytes copied by original loader"
    },
    {
      "file": "banked-pcm.bin",
      "romOffset": 491520,
      "bytes": 5538,
      "sha256": "d9df0aa8c8cf6a0d0c91b977c64fdbf1f0cbcb3d24e0fc3dad9cdb8732846d19",
      "transformation": "byte-identical ROM slice"
    },
    {
      "file": "sound-test-ids.bin",
      "romOffset": 4746,
      "bytes": 73,
      "sha256": "c0d8351fee29a297e12894a371aa213fa6088502cca4deb3587a22e313359331",
      "transformation": "byte-identical ROM slice"
    },
    {
      "file": "sound-test-names.bin",
      "romOffset": 116356,
      "bytes": 876,
      "sha256": "ba6375efac4b9d6c1d05593e687dccb9bbdd298f07b7d9e7f45f054f721241f6",
      "transformation": "byte-identical ROM slice"
    }
  ],
  "pcmDirectory": [
    {
      "z80Command": 129,
      "z80CommandHex": "81",
      "directoryKind": "resident",
      "sampleOffset": 456,
      "bytes": 915,
      "delayLoopByte": 4,
      "file": "pcm/pcm-81.bin",
      "sha256": "c3979ae41ae81d601dcf89f8a9e3f8602a3fa44e4866e606504cbef1f53419ef",
      "emptyDirectoryEntry": false,
      "gameCommandId": null
    },
    {
      "z80Command": 130,
      "z80CommandHex": "82",
      "directoryKind": "resident",
      "sampleOffset": 1371,
      "bytes": 1274,
      "delayLoopByte": 1,
      "file": "pcm/pcm-82.bin",
      "sha256": "201a9bf4631170cb266bcf02473f42c1d0f64eb10eb0f365871fd617c899afd1",
      "emptyDirectoryEntry": false,
      "gameCommandId": null
    },
    {
      "z80Command": 131,
      "z80CommandHex": "83",
      "directoryKind": "resident",
      "sampleOffset": 2645,
      "bytes": 1011,
      "delayLoopByte": 12,
      "file": "pcm/pcm-83.bin",
      "sha256": "2e7e0c2dc16de84cbeca3a489b7001c0742f800acd6a82f191de2483ac36b870",
      "emptyDirectoryEntry": false,
      "gameCommandId": null
    },
    {
      "z80Command": 132,
      "z80CommandHex": "84",
      "directoryKind": "resident",
      "sampleOffset": 3656,
      "bytes": 1976,
      "delayLoopByte": 1,
      "file": "pcm/pcm-84.bin",
      "sha256": "b6181481c6b39c2a381659d3a7a3bf1a81a9a69be36f6c999b8d3c0a1323e7d1",
      "emptyDirectoryEntry": false,
      "gameCommandId": null
    },
    {
      "z80Command": 133,
      "z80CommandHex": "85",
      "directoryKind": "resident",
      "sampleOffset": 5632,
      "bytes": 0,
      "delayLoopByte": 1,
      "file": "pcm/pcm-85.bin",
      "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "emptyDirectoryEntry": true,
      "gameCommandId": null
    },
    {
      "z80Command": 134,
      "z80CommandHex": "86",
      "directoryKind": "resident",
      "sampleOffset": 5632,
      "bytes": 1288,
      "delayLoopByte": 32,
      "file": "pcm/pcm-86.bin",
      "sha256": "df555e16086cfc1a4117396096af4f09f7f3debdfdc63c36d995e874ff3b6ac7",
      "emptyDirectoryEntry": false,
      "gameCommandId": 208
    },
    {
      "z80Command": 135,
      "z80CommandHex": "87",
      "directoryKind": "resident",
      "sampleOffset": 5632,
      "bytes": 1288,
      "delayLoopByte": 26,
      "file": "pcm/pcm-87.bin",
      "sha256": "df555e16086cfc1a4117396096af4f09f7f3debdfdc63c36d995e874ff3b6ac7",
      "emptyDirectoryEntry": false,
      "gameCommandId": 209
    },
    {
      "z80Command": 136,
      "z80CommandHex": "88",
      "directoryKind": "resident",
      "sampleOffset": 6920,
      "bytes": 959,
      "delayLoopByte": 18,
      "file": "pcm/pcm-88.bin",
      "sha256": "2f51e3bd63ad09a72206caa692ed58fc96efa97545709ebddd6df0f7fce82945",
      "emptyDirectoryEntry": false,
      "gameCommandId": 210
    },
    {
      "z80Command": 137,
      "z80CommandHex": "89",
      "directoryKind": "resident",
      "sampleOffset": 6920,
      "bytes": 959,
      "delayLoopByte": 22,
      "file": "pcm/pcm-89.bin",
      "sha256": "2f51e3bd63ad09a72206caa692ed58fc96efa97545709ebddd6df0f7fce82945",
      "emptyDirectoryEntry": false,
      "gameCommandId": 211
    },
    {
      "z80Command": 138,
      "z80CommandHex": "8A",
      "directoryKind": "banked",
      "sampleOffset": 40,
      "bytes": 1880,
      "delayLoopByte": 14,
      "file": "pcm/pcm-8a.bin",
      "sha256": "ef1e56f274a79edd5f6bcc2d17eba1e8bc5211329b1451d2abf60988482a6b40",
      "emptyDirectoryEntry": false,
      "gameCommandId": 212
    },
    {
      "z80Command": 139,
      "z80CommandHex": "8B",
      "directoryKind": "banked",
      "sampleOffset": 40,
      "bytes": 1880,
      "delayLoopByte": 16,
      "file": "pcm/pcm-8b.bin",
      "sha256": "ef1e56f274a79edd5f6bcc2d17eba1e8bc5211329b1451d2abf60988482a6b40",
      "emptyDirectoryEntry": false,
      "gameCommandId": 213
    },
    {
      "z80Command": 140,
      "z80CommandHex": "8C",
      "directoryKind": "banked",
      "sampleOffset": 1920,
      "bytes": 456,
      "delayLoopByte": 48,
      "file": "pcm/pcm-8c.bin",
      "sha256": "5e56f7033bb361fa49b26bf04512ac177002eaa7c98242a5a20ae1a56fcc345d",
      "emptyDirectoryEntry": false,
      "gameCommandId": 214
    },
    {
      "z80Command": 141,
      "z80CommandHex": "8D",
      "directoryKind": "banked",
      "sampleOffset": 1920,
      "bytes": 456,
      "delayLoopByte": 32,
      "file": "pcm/pcm-8d.bin",
      "sha256": "5e56f7033bb361fa49b26bf04512ac177002eaa7c98242a5a20ae1a56fcc345d",
      "emptyDirectoryEntry": false,
      "gameCommandId": 215
    },
    {
      "z80Command": 142,
      "z80CommandHex": "8E",
      "directoryKind": "banked",
      "sampleOffset": 2376,
      "bytes": 664,
      "delayLoopByte": 37,
      "file": "pcm/pcm-8e.bin",
      "sha256": "0844aad7b2a43fda8312a7bef0d38ac00571197d0a38bac0f1d77e903d5dc498",
      "emptyDirectoryEntry": false,
      "gameCommandId": 216
    },
    {
      "z80Command": 143,
      "z80CommandHex": "8F",
      "directoryKind": "banked",
      "sampleOffset": 2376,
      "bytes": 664,
      "delayLoopByte": 24,
      "file": "pcm/pcm-8f.bin",
      "sha256": "0844aad7b2a43fda8312a7bef0d38ac00571197d0a38bac0f1d77e903d5dc498",
      "emptyDirectoryEntry": false,
      "gameCommandId": 217
    },
    {
      "z80Command": 144,
      "z80CommandHex": "90",
      "directoryKind": "banked",
      "sampleOffset": 3040,
      "bytes": 1117,
      "delayLoopByte": 21,
      "file": "pcm/pcm-90.bin",
      "sha256": "f20487689b8d374005afb48d57de8939cafef93c21eb74c92d3801fe09945781",
      "emptyDirectoryEntry": false,
      "gameCommandId": 218
    },
    {
      "z80Command": 145,
      "z80CommandHex": "91",
      "directoryKind": "banked",
      "sampleOffset": 4157,
      "bytes": 1381,
      "delayLoopByte": 21,
      "file": "pcm/pcm-91.bin",
      "sha256": "2911a3d785ffd5c3c362ad6021db53d54f81ace71b35e043c1491881e468a352",
      "emptyDirectoryEntry": false,
      "gameCommandId": 219
    }
  ],
  "inaudibleControls": [
    {
      "commandId": 220,
      "commandHex": "DC",
      "inaudible": true,
      "peak": 0,
      "behavior": "Original Z80 rejects mailbox commands92-95; exact silence after baseline settling."
    },
    {
      "commandId": 221,
      "commandHex": "DD",
      "inaudible": true,
      "peak": 0,
      "behavior": "Original Z80 rejects mailbox commands92-95; exact silence after baseline settling."
    },
    {
      "commandId": 222,
      "commandHex": "DE",
      "inaudible": true,
      "peak": 0,
      "behavior": "Original Z80 rejects mailbox commands92-95; exact silence after baseline settling."
    },
    {
      "commandId": 223,
      "commandHex": "DF",
      "inaudible": true,
      "peak": 0,
      "behavior": "Original Z80 rejects mailbox commands92-95; exact silence after baseline settling."
    }
  ],
  "loopPcmVerification": [
    {
      "id": "music-81",
      "loopBoundaryDelta": [
        12.0,
        5.0
      ],
      "nativeNextSampleDelta": [
        13.0,
        6.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.14662663036726414,
      "nearbyDerivativePercentile999": 3251.003000000026,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-84",
      "loopBoundaryDelta": [
        2.0,
        2.0
      ],
      "nativeNextSampleDelta": [
        8.0,
        8.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.3574106990664809,
      "nearbyDerivativePercentile999": 6464.006000000052,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-85",
      "loopBoundaryDelta": [
        0.0,
        0.0
      ],
      "nativeNextSampleDelta": [
        1.0,
        1.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.5003806530968855,
      "nearbyDerivativePercentile999": 5029.003000000026,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-86",
      "loopBoundaryDelta": [
        36.0,
        36.0
      ],
      "nativeNextSampleDelta": [
        144.0,
        144.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.18545957761530857,
      "nearbyDerivativePercentile999": 3207.0,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-87",
      "loopBoundaryDelta": [
        27.0,
        27.0
      ],
      "nativeNextSampleDelta": [
        283.0,
        283.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.08261937971568417,
      "nearbyDerivativePercentile999": 5164.0,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-88",
      "loopBoundaryDelta": [
        10.0,
        10.0
      ],
      "nativeNextSampleDelta": [
        47.0,
        47.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.2437594676690802,
      "nearbyDerivativePercentile999": 3628.0,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-89",
      "loopBoundaryDelta": [
        10.0,
        10.0
      ],
      "nativeNextSampleDelta": [
        105.0,
        105.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.2998942472347029,
      "nearbyDerivativePercentile999": 3738.003000000026,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-8a",
      "loopBoundaryDelta": [
        4.0,
        4.0
      ],
      "nativeNextSampleDelta": [
        1.0,
        1.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.15412395601278156,
      "nearbyDerivativePercentile999": 3479.0,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-8b",
      "loopBoundaryDelta": [
        0.0,
        0.0
      ],
      "nativeNextSampleDelta": [
        0.0,
        0.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.6034433125777667,
      "nearbyDerivativePercentile999": 3420.0180000001565,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-8c",
      "loopBoundaryDelta": [
        14.0,
        7.0
      ],
      "nativeNextSampleDelta": [
        92.0,
        63.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.21594042409619355,
      "nearbyDerivativePercentile999": 4683.0,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-8f",
      "loopBoundaryDelta": [
        15.0,
        15.0
      ],
      "nativeNextSampleDelta": [
        60.0,
        60.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.21414155572247076,
      "nearbyDerivativePercentile999": 3349.0090000000782,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-90",
      "loopBoundaryDelta": [
        6.0,
        0.0
      ],
      "nativeNextSampleDelta": [
        6.0,
        0.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 0.21544972346138813,
      "nearbyDerivativePercentile999": 3113.006000000052,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    },
    {
      "id": "music-91",
      "loopBoundaryDelta": [
        1.0,
        1.0
      ],
      "nativeNextSampleDelta": [
        38.0,
        38.0
      ],
      "comparisonSamples": 6000,
      "comparisonSeconds": 0.1360544217687075,
      "normalizedFutureRmsError": 1.4051336128608134,
      "nearbyDerivativePercentile999": 1154.0,
      "boundaryMethod": "Same sample offset in two corresponding native transport windows; no crossfade, resampling, fade or period change."
    }
  ]
}
