{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "native32emu",
      "profile": {
        "core_classification": "pure_libretro",
        "core_version": "1.4.0",
        "cores": [
          "native32emu"
        ],
        "display_name": "Sunplus - Native32 (Native32Emu)",
        "emulator": "Native32Emu",
        "exclusion_note": "No file is read outside the game package: content and every sibling it names (menu, child content, .dat thumbnails, .mpg cutscenes) resolve from the content's own directory tree, saves are written beside the content or in the frontend save directory, the system directory is never queried, no data is embedded with include_bytes!, and the .info declares firmware_count = 0.",
        "files": [],
        "notes": "Emulator for the Sunplus Native32 game format written in Rust by\nAloysHF. The libretro core and the native32emu standalone binary share\nthe native32emu-core crate. Content (.smf, .sgm, .ssl or a .zip\npackage) is read from its full path (need_fullpath = true,\ncrates/native32emu-libretro/src/libretro/api.rs:107;\nEmulator::from_path, crates/native32emu-core/src/emulator.rs:86-149).\nThe header is decrypted with DES keys compiled into the core\n(crates/native32emu-core/src/header_decryptor.rs:136,\ncrates/native32emu-core/src/des_constants.rs).\n\nA .zip package is extracted to a temporary directory\n(crates/native32emu-core/src/archive_loader.rs:17-67) and booted from\nthe menu found at its root, FHUI.smf first, then NA32UI.smf. A package\nwithout a root menu boots its only .smf, or the one named like the\narchive (crates/native32emu-core/src/archive_loader.rs:11,\ncrates/native32emu-core/src/archive_loader.rs:94-98,\ncrates/native32emu-core/src/archive_loader.rs:152-211). The Emscripten\nbuild receives the archive already extracted by EmulatorJS and switches to\nthe root menu when one exists\n(crates/native32emu-libretro/src/libretro/api.rs:146-159,\ncrates/native32emu-core/src/archive_loader.rs:112-117). Every later file\nis resolved relative to the running content and its parent directories,\ncase-insensitively with trailing spaces trimmed\n(crates/native32emu-core/src/content_loader.rs:73-130): child .smf and\n.ssl content (crates/native32emu-core/src/emulator.rs:617-627), .dat\nthumbnails for the menu (crates/native32emu-core/src/emulator.rs:565-592),\n.mpg cutscenes (crates/native32emu-core/src/emulator.rs:464-480) and\nthe menu's game listing (crates/native32emu-core/src/file_browser.rs:75-120).\nAll of them ship inside the game package. Saves are written to\n<content>.ssl_sav beside the content. The Emscripten build asks for the\nfrontend save directory and writes there instead, under a name flattened\nfrom the content path\n(crates/native32emu-core/src/save_manager.rs:6-26,\ncrates/native32emu-core/src/save_manager.rs:33-48,\ncrates/native32emu-libretro/src/libretro/api.rs:194-197,\ncrates/native32emu-libretro/src/libretro/callbacks.rs:205-222).\n\nRETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY is defined\n(crates/native32emu-libretro/src/libretro/constants.rs:42) but nothing\ncalls it. No include_bytes! data is compiled in.\n",
        "profiled_date": "2026-10-26",
        "source": "https://github.com/AloysHF/Native32Emu",
        "source_commit": "059fa33c658caa4dbbad140ebf2af1197f9dd778",
        "systems": [
          "sunplus-native32"
        ],
        "type": "standalone + libretro",
        "upstream": "https://github.com/AloysHF/Native32Emu",
        "version_basis": {
          "kind": "file",
          "path": "Cargo.toml",
          "pattern": "version\\s+=\\s+\"([^\"]+)"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
