{
  "spdxVersion": "SPDX-2.3",
  "dataLicense": "CC0-1.0",
  "SPDXID": "SPDXRef-DOCUMENT",
  "name": "jr200-web-emulator-0.0.1",
  "documentNamespace": "https://github.com/zabaglione/jr200-web-emulator/sbom/0.0.1",
  "creationInfo": {
    "created": "2026-09-22T00:00:00Z",
    "creators": [
      "Tool: scripts/generate_sbom.py"
    ]
  },
  "documentDescribes": [
    "SPDXRef-Package-jr200-web-emulator"
  ],
  "packages": [
    {
      "name": "jr200-web-emulator",
      "SPDXID": "SPDXRef-Package-jr200-web-emulator",
      "versionInfo": "0.0.1",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "BSD-3-Clause",
      "licenseDeclared": "BSD-3-Clause",
      "copyrightText": "Copyright (c) 2026 jr200-web contributors",
      "homepage": "https://github.com/zabaglione/jr200-web-emulator",
      "supplier": "Organization: jr200-web contributors"
    },
    {
      "name": "VJR200forWindows-derived portions",
      "SPDXID": "SPDXRef-Package-VJR200forWindows",
      "versionInfo": "1.8.2 commit dd748995bede57da5baebc1225c7a33433aa6934",
      "downloadLocation": "git+https://github.com/find-jr200/VJR200forWindows.git@dd748995bede57da5baebc1225c7a33433aa6934",
      "filesAnalyzed": false,
      "licenseConcluded": "LicenseRef-FIND-VJR200",
      "licenseDeclared": "LicenseRef-FIND-VJR200",
      "copyrightText": "Copyright (c) 2017,2020 FIND",
      "supplier": "Person: FIND"
    },
    {
      "name": "MAME MC6800-derived portions",
      "SPDXID": "SPDXRef-Package-MAME-MC6800",
      "versionInfo": "commit 9940645188b6749e170b62c0ea86af0f440148da",
      "downloadLocation": "git+https://github.com/mamedev/mame.git@9940645188b6749e170b62c0ea86af0f440148da",
      "filesAnalyzed": false,
      "licenseConcluded": "BSD-3-Clause",
      "licenseDeclared": "BSD-3-Clause",
      "copyrightText": "Copyright Aaron Giles and MAME contributors",
      "supplier": "Organization: MAME"
    },
    {
      "name": "Emscripten JavaScript runtime",
      "SPDXID": "SPDXRef-Package-Emscripten-Runtime",
      "versionInfo": "6.0.9",
      "downloadLocation": "https://github.com/emscripten-core/emscripten/tree/6.0.9",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT",
      "licenseDeclared": "MIT",
      "copyrightText": "Copyright 2010 The Emscripten Authors",
      "supplier": "Organization: Emscripten Authors",
      "primaryPackagePurpose": "LIBRARY"
    },
    {
      "name": "LLVM libc++abi linked runtime",
      "SPDXID": "SPDXRef-Package-LLVM-libcxxabi",
      "versionInfo": "Emscripten 6.0.9 bundled revision",
      "downloadLocation": "https://github.com/emscripten-core/emscripten/tree/6.0.9/system/lib/libcxxabi",
      "filesAnalyzed": false,
      "licenseConcluded": "Apache-2.0 WITH LLVM-exception",
      "licenseDeclared": "Apache-2.0 WITH LLVM-exception",
      "copyrightText": "Copyright (c) 2009-2019 libc++abi contributors",
      "supplier": "Organization: LLVM Project",
      "primaryPackagePurpose": "LIBRARY"
    },
    {
      "name": "playwright",
      "SPDXID": "SPDXRef-Package-Playwright-Python",
      "versionInfo": "1.63.0",
      "downloadLocation": "https://pypi.org/project/playwright/1.63.0/",
      "filesAnalyzed": false,
      "licenseConcluded": "Apache-2.0",
      "licenseDeclared": "Apache-2.0",
      "copyrightText": "Copyright (c) Microsoft Corporation",
      "supplier": "Organization: Microsoft Corporation",
      "primaryPackagePurpose": "TEST"
    },
    {
      "name": "pyee",
      "SPDXID": "SPDXRef-Package-Pyee",
      "versionInfo": "13.0.1",
      "downloadLocation": "https://pypi.org/project/pyee/13.0.1/",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT",
      "licenseDeclared": "MIT",
      "copyrightText": "NOASSERTION",
      "primaryPackagePurpose": "TEST"
    },
    {
      "name": "greenlet",
      "SPDXID": "SPDXRef-Package-Greenlet",
      "versionInfo": "3.5.6",
      "downloadLocation": "https://pypi.org/project/greenlet/3.5.6/",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT AND PSF-2.0",
      "licenseDeclared": "MIT AND PSF-2.0",
      "copyrightText": "NOASSERTION",
      "primaryPackagePurpose": "TEST"
    },
    {
      "name": "typing-extensions",
      "SPDXID": "SPDXRef-Package-Typing-Extensions",
      "versionInfo": "4.16.0",
      "downloadLocation": "https://pypi.org/project/typing-extensions/4.16.0/",
      "filesAnalyzed": false,
      "licenseConcluded": "PSF-2.0",
      "licenseDeclared": "PSF-2.0",
      "copyrightText": "NOASSERTION",
      "primaryPackagePurpose": "TEST"
    },
    {
      "name": "brick-pulse",
      "SPDXID": "SPDXRef-Package-Game-brick-pulse-0-1-0",
      "versionInfo": "0.1.0",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT AND BSD-3-Clause",
      "licenseDeclared": "MIT",
      "copyrightText": "See game LICENSE.txt",
      "primaryPackagePurpose": "APPLICATION",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "427068c12442ccfe04673e9a5ab30036f7d1b6b004061ba4d9c83ccc2ff85ba1"
        }
      ]
    },
    {
      "name": "brick-pulse",
      "SPDXID": "SPDXRef-Package-Game-brick-pulse-0-1-1",
      "versionInfo": "0.1.1",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT AND BSD-3-Clause",
      "licenseDeclared": "MIT",
      "copyrightText": "See game LICENSE.txt",
      "primaryPackagePurpose": "APPLICATION",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "ed27d003afab3adda49d722514bed00ffe10575cac8cfc0f9bcfb34e15f86972"
        }
      ]
    },
    {
      "name": "circuit-works",
      "SPDXID": "SPDXRef-Package-Game-circuit-works-0-1-0",
      "versionInfo": "0.1.0",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT AND BSD-3-Clause",
      "licenseDeclared": "MIT",
      "copyrightText": "See game LICENSE.txt",
      "primaryPackagePurpose": "APPLICATION",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "6c51881031bf87f4bfc22ea3576e0256d56defe6beb95fd2bdbb8d49726cada9"
        }
      ]
    },
    {
      "name": "corner-crown",
      "SPDXID": "SPDXRef-Package-Game-corner-crown-0-1-0",
      "versionInfo": "0.1.0",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT AND BSD-3-Clause",
      "licenseDeclared": "MIT",
      "copyrightText": "See game LICENSE.txt",
      "primaryPackagePurpose": "APPLICATION",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "33b3d153974fc652d151431adb2f4eae72fa604b89471005a34d138c32180ead"
        }
      ]
    },
    {
      "name": "hearth-zero",
      "SPDXID": "SPDXRef-Package-Game-hearth-zero-0-1-0",
      "versionInfo": "0.1.0",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT AND BSD-3-Clause",
      "licenseDeclared": "MIT",
      "copyrightText": "See game LICENSE.txt",
      "primaryPackagePurpose": "APPLICATION",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "79395367d52bf7750281250a58bdc71cd141475e75576979df9d73ea3792cdab"
        }
      ]
    },
    {
      "name": "lumen-cross",
      "SPDXID": "SPDXRef-Package-Game-lumen-cross-0-1-0",
      "versionInfo": "0.1.0",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT AND BSD-3-Clause",
      "licenseDeclared": "MIT",
      "copyrightText": "See game LICENSE.txt",
      "primaryPackagePurpose": "APPLICATION",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "20331241139e3f64813234baea0dc5870c430269957929041ccb501d67e59f1c"
        }
      ]
    },
    {
      "name": "relic-dive",
      "SPDXID": "SPDXRef-Package-Game-relic-dive-0-1-1",
      "versionInfo": "0.1.1",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT AND BSD-3-Clause",
      "licenseDeclared": "MIT",
      "copyrightText": "See game LICENSE.txt",
      "primaryPackagePurpose": "APPLICATION",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "16261dd1350a6b3b8b4ec76f4253039daa56f29bbe90f4ebe93b80449364c399"
        }
      ]
    },
    {
      "name": "side-catch",
      "SPDXID": "SPDXRef-Package-Game-side-catch-0-1-2",
      "versionInfo": "0.1.2",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "BSD-3-Clause",
      "licenseDeclared": "BSD-3-Clause",
      "copyrightText": "See game LICENSE.txt",
      "primaryPackagePurpose": "APPLICATION",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "571e25aa5c7b76f00f3c827d0edbd11db4d3571b81b9fbc370412979a9f2c916"
        }
      ]
    },
    {
      "name": "side-catch",
      "SPDXID": "SPDXRef-Package-Game-side-catch-0-1-3",
      "versionInfo": "0.1.3",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "BSD-3-Clause",
      "licenseDeclared": "BSD-3-Clause",
      "copyrightText": "See game LICENSE.txt",
      "primaryPackagePurpose": "APPLICATION",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "afb7532fb0add608acc147e1c8c96600357e455fe9ae183a61484493f691816b"
        }
      ]
    }
  ],
  "relationships": [
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "VARIANT_OF",
      "relatedSpdxElement": "SPDXRef-Package-VJR200forWindows",
      "comment": "Only the audited portions listed in THIRD_PARTY_NOTICES.md are adapted."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-MAME-MC6800",
      "comment": "Only the adapted MC6800 portions listed in THIRD_PARTY_NOTICES.md are included."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-Emscripten-Runtime",
      "comment": "Generated JavaScript runtime in jr200_codec.mjs is distributed; the compiler toolchain is not."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-LLVM-libcxxabi",
      "comment": "Linked libc++abi type information is included in jr200_codec.wasm."
    },
    {
      "spdxElementId": "SPDXRef-Package-Playwright-Python",
      "relationshipType": "TEST_DEPENDENCY_OF",
      "relatedSpdxElement": "SPDXRef-Package-jr200-web-emulator",
      "comment": "CI-only browser test dependency; it is not shipped in the staged site."
    },
    {
      "spdxElementId": "SPDXRef-Package-Pyee",
      "relationshipType": "DEPENDENCY_OF",
      "relatedSpdxElement": "SPDXRef-Package-Playwright-Python"
    },
    {
      "spdxElementId": "SPDXRef-Package-Greenlet",
      "relationshipType": "DEPENDENCY_OF",
      "relatedSpdxElement": "SPDXRef-Package-Playwright-Python"
    },
    {
      "spdxElementId": "SPDXRef-Package-Typing-Extensions",
      "relationshipType": "DEPENDENCY_OF",
      "relatedSpdxElement": "SPDXRef-Package-Pyee"
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-Game-brick-pulse-0-1-0",
      "comment": "Approved immutable Web game brick-pulse/0.1.0."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-Game-brick-pulse-0-1-1",
      "comment": "Approved immutable Web game brick-pulse/0.1.1."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-Game-circuit-works-0-1-0",
      "comment": "Approved immutable Web game circuit-works/0.1.0."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-Game-corner-crown-0-1-0",
      "comment": "Approved immutable Web game corner-crown/0.1.0."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-Game-hearth-zero-0-1-0",
      "comment": "Approved immutable Web game hearth-zero/0.1.0."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-Game-lumen-cross-0-1-0",
      "comment": "Approved immutable Web game lumen-cross/0.1.0."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-Game-relic-dive-0-1-1",
      "comment": "Approved immutable Web game relic-dive/0.1.1."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-Game-side-catch-0-1-2",
      "comment": "Approved immutable Web game side-catch/0.1.2."
    },
    {
      "spdxElementId": "SPDXRef-Package-jr200-web-emulator",
      "relationshipType": "CONTAINS",
      "relatedSpdxElement": "SPDXRef-Package-Game-side-catch-0-1-3",
      "comment": "Approved immutable Web game side-catch/0.1.3."
    }
  ],
  "hasExtractedLicensingInfos": [
    {
      "licenseId": "LicenseRef-FIND-VJR200",
      "name": "FIND VJR-200 license",
      "extractedText": "Copyright (c) 2017,2020 FIND\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n* Redistributions of source code must retain the above copyright notice, \n  this list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, \n  this list of conditions and the following disclaimer in the documentation \n  and/or other materials provided with the distribution.\n* Neither the name of the VJR-200 or the names of its contributors \n  may be used to endorse or promote products derived from this software \n  without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL FIND BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.",
      "seeAlsos": [
        "https://github.com/find-jr200/VJR200forWindows/blob/dd748995bede57da5baebc1225c7a33433aa6934/license_vjr200.txt"
      ]
    }
  ],
  "annotations": [
    {
      "annotationDate": "2026-09-22T00:00:00Z",
      "annotationType": "OTHER",
      "annotator": "Tool: scripts/generate_sbom.py",
      "comment": "Package-level SBOM for source and staged Web distribution. Approved game CJR files are distributed with their license and notices. Manufacturer ROM/font files, commercial tapes, private recordings, JR2Rescue, and build toolchains are not distributed components. Emscripten-generated JavaScript and linked libc++abi runtime are distributed."
    }
  ]
}
