{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "bsnes",
      "profile": {
        "core_classification": "official_port",
        "core_version": "115",
        "cores": [
          "bsnes"
        ],
        "display_name": "Nintendo - SNES / SFC (bsnes)",
        "emulator": "bsnes",
        "files": [
          {
            "hle_fallback": true,
            "name": "dsp1.program.rom",
            "note": "NEC uPD7725 program ROM for DSP1",
            "required": false,
            "size": 6144,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:490-494, source bsnes/heuristics/super-famicom.cpp:601",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "hle_fallback": true,
            "name": "dsp1.data.rom",
            "note": "NEC uPD7725 data ROM for DSP1",
            "required": false,
            "size": 2048,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:498-503",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "hle_fallback": true,
            "name": "dsp1b.program.rom",
            "note": "NEC uPD7725 program ROM for DSP1B (default NEC identifier)",
            "required": false,
            "size": 6144,
            "source_ref": "source bsnes/heuristics/super-famicom.cpp:606",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "hle_fallback": true,
            "name": "dsp1b.data.rom",
            "note": "NEC uPD7725 data ROM for DSP1B",
            "required": false,
            "size": 2048,
            "source_ref": "source bsnes/heuristics/super-famicom.cpp:606",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "hle_fallback": true,
            "name": "dsp2.program.rom",
            "note": "NEC uPD7725 program ROM for DSP2 (Dungeon Master)",
            "required": false,
            "size": 6144,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:515-520, source bsnes/heuristics/super-famicom.cpp:602",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "hle_fallback": true,
            "name": "dsp2.data.rom",
            "note": "NEC uPD7725 data ROM for DSP2",
            "required": false,
            "size": 2048,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:498-503",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "name": "dsp3.program.rom",
            "note": "NEC uPD7725 program ROM for DSP3 (SD Gundam GX). No HLE fallback",
            "required": true,
            "size": 6144,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:531-534",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "name": "dsp3.data.rom",
            "note": "NEC uPD7725 data ROM for DSP3. No HLE fallback",
            "required": true,
            "size": 2048,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:531-534",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "hle_fallback": true,
            "name": "dsp4.program.rom",
            "note": "NEC uPD7725 program ROM for DSP4 (Top Gear 3000)",
            "required": false,
            "size": 6144,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:522-528, source bsnes/heuristics/super-famicom.cpp:604-605",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "hle_fallback": true,
            "name": "dsp4.data.rom",
            "note": "NEC uPD7725 data ROM for DSP4",
            "required": false,
            "size": 2048,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:498-503",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "hle_fallback": true,
            "name": "st010.program.rom",
            "note": "NEC uPD96050 program ROM for ST010",
            "required": false,
            "size": 49152,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:570-574, source bsnes/heuristics/super-famicom.cpp:583-587",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "hle_fallback": true,
            "name": "st010.data.rom",
            "note": "NEC uPD96050 data ROM for ST010",
            "required": false,
            "size": 4096,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:578-583",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "name": "st011.program.rom",
            "note": "NEC uPD96050 program ROM for ST011 (2dan Morita Shougi). No HLE fallback",
            "required": true,
            "size": 49152,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:599-601, source bsnes/heuristics/super-famicom.cpp:586",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "name": "st011.data.rom",
            "note": "NEC uPD96050 data ROM for ST011. No HLE fallback",
            "required": true,
            "size": 4096,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:599-601",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "name": "st018.program.rom",
            "note": "ARM6 program ROM for ST018 (Hayazashi Nidan Morita Shougi). No HLE fallback",
            "required": true,
            "size": 131072,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:379-385, source bsnes/sfc/coprocessor/armdsp/armdsp.hpp:31, source bsnes/heuristics/super-famicom.cpp:580",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "name": "st018.data.rom",
            "note": "ARM6 data ROM for ST018. No HLE fallback",
            "required": true,
            "size": 32768,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:387-393, source bsnes/sfc/coprocessor/armdsp/armdsp.hpp:32",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "crc32": "b6e76a6a",
            "hle_fallback": true,
            "md5": "037ac4296b6b6a5c47c440188d3c72e3",
            "name": "cx4.data.rom",
            "note": "Hitachi HG51BS169 data ROM for Cx4 (Mega Man X2/X3). HLE fallback and built-in static ROM available",
            "required": false,
            "sha1": "a002f4efba42775a31185d443f3ed1790b0e949a",
            "size": 3072,
            "source_ref": "source bsnes/sfc/cartridge/load.cpp:444-456, source bsnes/sfc/coprocessor/hitachidsp/hitachidsp.hpp:49, source bsnes/heuristics/super-famicom.cpp:597, source bsnes/sfc/coprocessor/hitachidsp/data-rom.cpp:3 (staticDataROM[3072])",
            "system": "nintendo-snes",
            "validation": [
              "size"
            ]
          },
          {
            "name": "SGB1.sfc",
            "note": "Super Game Boy 1 cartridge ROM, loaded when playing .gb/.gbc via SGB mode",
            "required": false,
            "source_ref": "source bsnes/target-libretro/libretro.cpp:937-946 (system_dir + sgb_bios), source bsnes/target-libretro/libretro.cpp:393 (core option bsnes_sgb_bios)",
            "system": "nintendo-sgb"
          },
          {
            "name": "SGB2.sfc",
            "note": "Super Game Boy 2 cartridge ROM, uses dedicated oscillator for accurate GB speed",
            "required": false,
            "source_ref": "source bsnes/target-libretro/libretro.cpp:937-946 (system_dir + sgb_bios), source bsnes/target-libretro/libretro.cpp:393 (core option bsnes_sgb_bios)",
            "system": "nintendo-sgb"
          },
          {
            "name": "BS-X.bin",
            "note": "BS-X Satellaview BIOS ROM, loaded from system_dir when running .bs games",
            "required": true,
            "source_ref": "source bsnes/target-libretro/libretro.cpp:955-962 (system_dir + BS-X.bin hardcoded, .bs extension branch)",
            "system": "nintendo-satellaview"
          }
        ],
        "logo": "https://raw.githubusercontent.com/bsnes-emu/bsnes/master/bsnes/target-bsnes/resource/bsnes.svg",
        "notes": {
          "cx4_static_fallback": "The Cx4 (HG51BS169) has a compiled-in static data ROM (hitachidsp/staticDataROM) as fallback when cx4.data.rom is missing and HLE is disabled. This means Mega Man X2/X3 work in all configurations without user-supplied firmware.\n",
          "embedded_firmware": "If firmware data is appended to the game ROM, bsnes splits it automatically based on firmwareRomSize() detection. Sizes: uPD7725=0x2000, uPD96050=0xD000, ARM6=0x28000, HG51BS169=0xC00. This eliminates the need for separate files when using combined ROM+firmware dumps.\n",
          "firmware_resolution": "Firmware filenames are derived from the game manifest identifier field (lowercased) plus \".program.rom\" or \".data.rom\" suffix. The mapping is: NEC uPD7725 -> dsp1/dsp1b/dsp2/dsp3/dsp4, NEC uPD96050 -> st010/st011, ARM6 -> st018, HG51BS169 -> cx4. Firmware can also be appended directly to the ROM image (auto-detected by firmwareRomSize heuristic).\n",
          "hle_available": true,
          "hle_note": "bsnes provides HLE for DSP1, DSP1B, DSP2, DSP4, ST010, and Cx4. Controlled by core option bsnes_coprocessor_prefer_hle (default ON). DSP3, ST011, and ST018 have no HLE - LLE firmware files are mandatory for the few games that use them.\n",
          "sgb_note": "SGB boot ROMs (256 bytes each for SGB1/SGB2) are compiled into the core at icd/boot-roms.cpp. The SGB cartridge ROM (SGB1.sfc or SGB2.sfc) is a separate requirement. Core option bsnes_sgb_bios selects which one to use (default SGB1.sfc). Loading .gb/.gbc files auto-loads the selected SGB ROM.\n"
        },
        "profiled_date": "2026-04-05",
        "source": "https://github.com/libretro/bsnes-libretro",
        "source_commit": "05439f96121d2b9d7ad7a5fc1f29d7eebdcc8c43",
        "systems": [
          "nintendo-snes",
          "nintendo-sgb",
          "nintendo-satellaview"
        ],
        "type": "libretro",
        "upstream": "https://github.com/bsnes-emu/bsnes",
        "upstream_commit": "78474e5d39f58872dc21aca18cf9eb583b147fe7",
        "version_basis": {
          "kind": "file",
          "path": "bsnes/emulator/emulator.hpp",
          "pattern": "static const string Version\\s*=\\s*\"([^\"]+)\""
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
