{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "neocd",
      "profile": {
        "core_classification": "pure_libretro",
        "core_version": "2022",
        "cores": [
          "neocd"
        ],
        "display_name": "SNK - Neo Geo CD (NeoCD)",
        "emulator": "NeoCD",
        "files": [
          {
            "name": "neocd_f.rom",
            "note": "Front Loader BIOS (big-endian, NeoCD naming)",
            "path": "neocd/neocd_f.rom",
            "required": false,
            "size": 524288,
            "source_ref": "src/bios.cpp:59 FRONT_LOADER_SEARCH_PATTERN at 0xC0006C",
            "system": "snk-neogeo-cd"
          },
          {
            "name": "front-sp1.bin",
            "note": "Front Loader BIOS (little-endian, MAME naming)",
            "path": "neocd/front-sp1.bin",
            "required": false,
            "size": 524288,
            "source_ref": "src/bios.cpp:59 FRONT_LOADER_SEARCH_PATTERN, src/bios.cpp:148-160 autoByteSwap",
            "system": "snk-neogeo-cd"
          },
          {
            "name": "neocd_sf.rom",
            "note": "Front Loader BIOS, SMKDan 0.07b",
            "path": "neocd/neocd_sf.rom",
            "required": false,
            "size": 524288,
            "source_ref": "src/bios.cpp:62 SMKDANBETA_FRONT_SEARCH_PATTERN at 0xC00004",
            "system": "snk-neogeo-cd"
          },
          {
            "name": "neocd_t.rom",
            "note": "Top Loader BIOS (big-endian, NeoCD naming)",
            "path": "neocd/neocd_t.rom",
            "required": false,
            "size": 524288,
            "source_ref": "src/bios.cpp:60 TOP_LOADER_SEARCH_PATTERN at 0xC0006C",
            "system": "snk-neogeo-cd"
          },
          {
            "name": "top-sp1.bin",
            "note": "Top Loader BIOS (little-endian, MAME naming)",
            "path": "neocd/top-sp1.bin",
            "required": false,
            "size": 524288,
            "source_ref": "src/bios.cpp:60 TOP_LOADER_SEARCH_PATTERN, src/bios.cpp:148-160 autoByteSwap",
            "system": "snk-neogeo-cd"
          },
          {
            "name": "neocd_st.rom",
            "note": "Top Loader BIOS, SMKDan 0.07b",
            "path": "neocd/neocd_st.rom",
            "required": false,
            "size": 524288,
            "source_ref": "src/bios.cpp:63 SMKDANBETA_TOP_SEARCH_PATTERN at 0xC00004",
            "system": "snk-neogeo-cd"
          },
          {
            "name": "neocd_z.rom",
            "note": "CDZ BIOS (big-endian, NeoCD naming)",
            "path": "neocd/neocd_z.rom",
            "required": false,
            "size": 524288,
            "source_ref": "src/bios.cpp:61 CDZ_SEARCH_PATTERN at 0xC0006C",
            "system": "snk-neogeo-cd"
          },
          {
            "name": "neocd.bin",
            "note": "CDZ BIOS (little-endian, MAME naming)",
            "path": "neocd/neocd.bin",
            "required": false,
            "size": 524288,
            "source_ref": "src/bios.cpp:61 CDZ_SEARCH_PATTERN, src/bios.cpp:148-160 autoByteSwap",
            "system": "snk-neogeo-cd"
          },
          {
            "name": "neocd_sz.rom",
            "note": "CDZ BIOS, SMKDan 0.07b",
            "path": "neocd/neocd_sz.rom",
            "required": false,
            "size": 524288,
            "source_ref": "src/bios.cpp:64 SMKDANBETA_CDZ_SEARCH_PATTERN at 0xC00004",
            "system": "snk-neogeo-cd"
          },
          {
            "name": "uni-bioscd.rom",
            "note": "Universe BIOS 3.3, CDZ-based third-party multi-region BIOS",
            "path": "neocd/uni-bioscd.rom",
            "required": false,
            "size": 524288,
            "source_ref": "src/bios.cpp:68 UNIVERSE33_SEARCH_PATTERN at 0xC00150",
            "system": "snk-neogeo-cd"
          }
        ],
        "notes": "Complete rewrite of NeoCD in C++11. Scans {system_dir}/neocd/ for any .rom\nor .bin file, also inside .zip archives (src/libretro_bios.cpp:70-106,\nsrc/path.cpp:7 NEOCD_SYSTEM_SUBDIR = \"neocd\").\n\nBIOS identified by binary pattern matching at fixed ROM addresses, not by\nfilename (src/bios.cpp:167-206). Files are auto byte-swapped if needed\n(src/bios.cpp:148-160). Files smaller than 524288 bytes are skipped\n(src/libretro_bios.cpp:43).\n\nThree hardware families detected: Front Loader, Top Loader, CDZ. Modified\nvariants recognized: SMKDan 0.07, SMKDan 0.07b, Universe BIOS 3.2,\nUniverse BIOS 3.3 (src/bios.h:11-27). Any single valid BIOS is sufficient;\nselection via core options dropdown sorted alphabetically.\n\nY-ZOOM ROM (ng-lo.rom / 000-lo.lo) listed in .info but generated\nalgorithmically, never loaded from file (src/memory.cpp:223-253\ngenerateYZoomData, CRC32 E09E253C), so the core never opens these files.\n\n.info declares firmware_count=12. The core reads 10 of them and builds\nthe two Y-ZOOM entries itself.\n.info lists uni-bioscd.rom as \"Universe BIOS 3.2\" but SHA1 matches\nUniverse BIOS 3.3 (confirmed by GitHub README).\n",
        "profiled_date": "2026-03-24",
        "source": "https://github.com/libretro/neocd_libretro",
        "source_commit": "b1e04c738cb48a1dae0574b8877f6a116d270ca1",
        "systems": [
          "snk-neogeo-cd"
        ],
        "type": "libretro",
        "upstream": "https://github.com/libretro/neocd_libretro",
        "version_basis": {
          "kind": "file",
          "path": "src/libretro.cpp",
          "pattern": "info->library_version\\s+=\\s+\"([^\"]+)"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
