{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "o2em",
      "profile": {
        "core": "o2em_libretro",
        "core_classification": "community_fork",
        "core_version": "1.18",
        "cores": [
          "o2em_libretro"
        ],
        "display_name": "Magnavox - Odyssey2 / Philips Videopac+ (O2EM)",
        "emulator": "O2EM",
        "files": [
          {
            "crc32": "8016a315",
            "md5": "562d5ebf9e030a40d6fabfc2f33139fd",
            "min_size": 1024,
            "name": "o2rom.bin",
            "note": "Odyssey2 BIOS (G7000 NTSC), vpp=0. The default value of o2em_bios, so the core opens it unless another BIOS is chosen. retro_load_game fails when the chosen file cannot be opened or holds fewer than 1024 bytes. Only the first 1024 bytes are read.\n",
            "required": true,
            "sha1": "b2e1955d957a475de2411770452eff4ea19f4cee",
            "source_ref": "libretro_core_options.h:52-64, libretro.c:1143-1147, libretro.c:989, libretro.c:1043-1044, libretro.c:160-189",
            "system": "odyssey2",
            "validation": [
              "size"
            ],
            "variant_group": "o2em-bios"
          },
          {
            "crc32": "a318e8d6",
            "md5": "f1071cdb0b6b10dde94d3bc8a6146387",
            "min_size": 1024,
            "name": "c52.bin",
            "note": "Videopac G7000 European BIOS. vpp=0, auto-sets PAL. Opened only when o2em_bios names it.",
            "required": false,
            "sha1": "a6120aed50831c9c0d95dbdf707820f601d9452e",
            "source_ref": "libretro_core_options.h:52-64, libretro.c:1149-1155, libretro.c:1043-1044",
            "system": "videopac",
            "validation": [
              "size"
            ],
            "variant_group": "o2em-bios"
          },
          {
            "crc32": "e20a9f41",
            "md5": "c500ff71236068e0dc0d0603d265ae76",
            "min_size": 1024,
            "name": "g7400.bin",
            "note": "Videopac+ G7400 European BIOS. vpp=1. Opened only when o2em_bios names it.",
            "required": false,
            "sha1": "5130243429b40b01a14e1304d0394b8459a6fbae",
            "source_ref": "libretro_core_options.h:52-64, libretro.c:1156-1161, libretro.c:1043-1044",
            "system": "videopac",
            "validation": [
              "size"
            ],
            "variant_group": "o2em-bios"
          },
          {
            "crc32": "11647ca5",
            "md5": "279008e4a0db2dc5f1c048853b033828",
            "min_size": 1024,
            "name": "jopac.bin",
            "note": "Videopac+ G7400 French BIOS (JoPac). vpp=1. Opened only when o2em_bios names it.",
            "required": false,
            "sha1": "54b8d2c1317628de51a85fc1c424423a986775e4",
            "source_ref": "libretro_core_options.h:52-64, libretro.c:1162-1167, libretro.c:1043-1044",
            "system": "videopac",
            "validation": [
              "size"
            ],
            "variant_group": "o2em-bios"
          },
          {
            "category": "game_data",
            "name": "voice/",
            "note": "The Voice speech synthesis WAV samples. 9 banks (E4, E8-EF) × 128 samples.",
            "required": false,
            "source_ref": "src/voice.c:38-90, libretro.c:1060-1068",
            "type": "directory"
          }
        ],
        "notes": "Libretro port of O2EM, an Odyssey2/Videopac emulator by Daniel Boris\nand André de la Rocha. Port by Arlindo M. de Oliveira.\n\nOne BIOS ROM selected via o2em_bios core option (default o2rom.bin).\nLoaded into rom_table[0] (1024 bytes), identified by CRC32. The CRC32 sets\nthe model (vpp and bios), and an unknown one still loads with vpp=0.\nref: libretro.c:194-226\nvpp=1 for Videopac+ variants (g7400.bin, jopac.bin).\nCore fails to load without the selected BIOS.\n\nVoice module (\"The Voice\" speech synthesis add-on) emulation via WAV\nsamples in system/voice/. 9 banks × 128 samples, named {bank}{sample}.WAV\n(e.g. E480.WAV). Compiled with HAVE_VOICE=1 on most platforms. Optional:\ncore works without samples, speech is silently skipped.\n\nBIOS loading: load_bios() at libretro.c:150-229.\nBIOS selection: libretro_core_options.h:52-64.\nVoice loading: init_voice() at src/voice.c:39-91, called from libretro.c:1060-1067.\n",
        "profiled_date": "2026-03-24",
        "source": "https://github.com/libretro/libretro-o2em",
        "source_commit": "679d6fec04963f6e70a7ec217e3d0ebb1fe472fc",
        "systems": [
          "odyssey2",
          "videopac"
        ],
        "type": "libretro",
        "upstream": "https://sourceforge.net/projects/o2em/",
        "version_basis": {
          "kind": "file",
          "path": "libretro.c",
          "pattern": "info->library_version\\s+=\\s+\"([^\"]+)"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
