{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "spmp8000emu",
      "profile": {
        "core_classification": "pure_libretro",
        "core_version": "1.0.0",
        "cores": [
          "spmp8000emu"
        ],
        "display_name": "Sunplus - SPMP8000 (SPMP8000Emu)",
        "emulator": "SPMP8000Emu",
        "files": [
          {
            "crc32": "058a577b",
            "description": "SPMP8000 firmware PCM tone bank",
            "embedded": true,
            "md5": "f276986a8ee7d29d9ba495c1cfe0b891",
            "name": "tonelib.bin",
            "note": "Compiled into the core from crates/spmp8000emu-core/assets/tonelib.bin and never opened at run time. 256-entry patch table (128 melodic, 128 percussion) followed by per-zone PCM samples, read by the NativeGE MIDI path. Hashes are of the file in the emulator repository, which states the SHA-256.",
            "required": false,
            "sha1": "6b52965081642630ef7aa30a90c9643f97c72410",
            "sha256": "5924f1cea0a65086a48b10a6553e6493a43fcf63e265d974e447be1f4262c99a",
            "size": 130500,
            "source_ref": "crates/spmp8000emu-core/src/tone_library.rs:8, crates/spmp8000emu-core/src/tone_library.rs:24-26, crates/spmp8000emu-core/src/audio_resource.rs:498-499, crates/spmp8000emu-core/assets/README.md:3-9",
            "system": "sunplus-spmp8000"
          }
        ],
        "notes": "Emulator for Sunplus SPMP8000 NGame1.0 games written in Rust by\nAloysHF. The libretro core and the spmp8000-emu standalone binary share\nthe spmp8000emu-core crate. A .bin game is read from its full path\n(need_fullpath = true, crates/spmp8000emu-libretro/src/libretro/api.rs:96,\nfrom_path_with_config, crates/spmp8000emu-core/src/emulator.rs:63-68),\nits header parsed, the payload DES-decrypted and LZ77/RLE-decompressed\nwith keys and tables compiled into the core, then loaded at the code\naddress. The system API (emuIf, NativeGE, eCos) is implemented in Rust\n(crates/spmp8000emu-core/src/api/).\n\nGuest file calls (emuIfFsFileOpen, NativeGE_fsOpen, NativeGE_readRecord,\nNativeGE_writeRecord) resolve the guest path under the directory of the\nloaded .bin (crates/spmp8000emu-core/src/emulator.rs:129-131,\ncrates/spmp8000emu-core/src/api/mod.rs:125-127,\ncrates/spmp8000emu-core/src/api/emu_fs.rs:9-13). What a game reads or\nwrites there is its own data and saves.\nRETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY and GET_SAVE_DIRECTORY are\ndefined (crates/spmp8000emu-libretro/src/libretro/constants.rs:36,\ncrates/spmp8000emu-libretro/src/libretro/constants.rs:47) but nothing\ncalls them.\n\nMIDI resources are rendered by a sample-based synthesiser whose tone\nbank is the SPMP8000 firmware's own PCM tone library, compiled into the\ncore with include_bytes! (crates/spmp8000emu-core/src/tone_library.rs:8,\ncrates/spmp8000emu-core/src/audio_resource.rs:498-499). It is the only\nembedded data and the only firmware-derived component, and nothing is read\nfrom disk for it.\n",
        "profiled_date": "2026-09-03",
        "source": "https://github.com/AloysHF/SPMP8000Emu",
        "source_commit": "65a93528ee33767bb9cf8faef516c8d1ad43fd13",
        "systems": [
          "sunplus-spmp8000"
        ],
        "type": "standalone + libretro",
        "upstream": "https://github.com/AloysHF/SPMP8000Emu",
        "version_basis": {
          "kind": "file",
          "path": "Cargo.toml",
          "pattern": "version\\s+=\\s+\"([^\"]+)"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
