{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "cannonball",
      "profile": {
        "core_classification": "game_engine",
        "core_version": "0.3",
        "cores": [
          "cannonball"
        ],
        "display_name": "Cannonball",
        "emulator": "Cannonball",
        "files": [
          {
            "aliases": [
              "epr-10381b.132"
            ],
            "category": "game_data",
            "crc32": "be8c412b",
            "name": "epr-10381b.132",
            "note": "Master 68K, high byte, upper bank",
            "path": "cannonball/epr-10381b.132",
            "required": true,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:39",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "10a2014a",
            "name": "epr-10383b.117",
            "note": "Master 68K, low byte, upper bank",
            "path": "cannonball/epr-10383b.117",
            "required": true,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:40",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "1f6cadad",
            "name": "epr-10380b.133",
            "note": "Master 68K, high byte, lower bank",
            "path": "cannonball/epr-10380b.133",
            "required": true,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:39",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "c4c3fa1a",
            "name": "epr-10382b.118",
            "note": "Master 68K, low byte, lower bank",
            "path": "cannonball/epr-10382b.118",
            "required": true,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:40",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "e28a5baf",
            "name": "epr-10327a.76",
            "note": "Slave 68K, high byte, lower bank",
            "path": "cannonball/epr-10327a.76",
            "required": true,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:44",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "da131c81",
            "name": "epr-10329a.58",
            "note": "Slave 68K, low byte, lower bank",
            "path": "cannonball/epr-10329a.58",
            "required": true,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:45",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "d5ec5e5d",
            "name": "epr-10328a.75",
            "note": "Slave 68K, high byte, upper bank",
            "path": "cannonball/epr-10328a.75",
            "required": true,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:46",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "ba9ec82a",
            "name": "epr-10330a.57",
            "note": "Slave 68K, low byte, upper bank",
            "path": "cannonball/epr-10330a.57",
            "required": true,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:47",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "95344b04",
            "name": "opr-10268.99",
            "note": "Tile ROM bank 0",
            "path": "cannonball/opr-10268.99",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:51",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "776ba1eb",
            "name": "opr-10232.102",
            "note": "Tile ROM bank 1",
            "path": "cannonball/opr-10232.102",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:52",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "a85bb823",
            "name": "opr-10267.100",
            "note": "Tile ROM bank 2",
            "path": "cannonball/opr-10267.100",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:53",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "8908bcbf",
            "name": "opr-10231.103",
            "note": "Tile ROM bank 3",
            "path": "cannonball/opr-10231.103",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:54",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "9f6f1a74",
            "name": "opr-10266.101",
            "note": "Tile ROM bank 4",
            "path": "cannonball/opr-10266.101",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:55",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "686f5e50",
            "name": "opr-10230.104",
            "note": "Tile ROM bank 5",
            "path": "cannonball/opr-10230.104",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:56",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "22794426",
            "name": "opr-10185.11",
            "note": "Road ROM, layer 1",
            "path": "cannonball/opr-10185.11",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:60",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "22794426",
            "name": "opr-10186.47",
            "note": "Road ROM, layer 2 (identical to opr-10185.11)",
            "path": "cannonball/opr-10186.47",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:61",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "7cc86208",
            "name": "mpr-10371.9",
            "note": "Sprite ROM, bank 0 byte 0",
            "path": "cannonball/mpr-10371.9",
            "required": true,
            "size": 131072,
            "source_ref": "upstream src/main/roms.cpp:65",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "b0d26ac9",
            "name": "mpr-10373.10",
            "note": "Sprite ROM, bank 0 byte 1",
            "path": "cannonball/mpr-10373.10",
            "required": true,
            "size": 131072,
            "source_ref": "upstream src/main/roms.cpp:66",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "59b60bd7",
            "name": "mpr-10375.11",
            "note": "Sprite ROM, bank 0 byte 2",
            "path": "cannonball/mpr-10375.11",
            "required": true,
            "size": 131072,
            "source_ref": "upstream src/main/roms.cpp:67",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "17a1b04a",
            "name": "mpr-10377.12",
            "note": "Sprite ROM, bank 0 byte 3",
            "path": "cannonball/mpr-10377.12",
            "required": true,
            "size": 131072,
            "source_ref": "upstream src/main/roms.cpp:68",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "b557078c",
            "name": "mpr-10372.13",
            "note": "Sprite ROM, bank 1 byte 0",
            "path": "cannonball/mpr-10372.13",
            "required": true,
            "size": 131072,
            "source_ref": "upstream src/main/roms.cpp:69",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "8051e517",
            "name": "mpr-10374.14",
            "note": "Sprite ROM, bank 1 byte 1",
            "path": "cannonball/mpr-10374.14",
            "required": true,
            "size": 131072,
            "source_ref": "upstream src/main/roms.cpp:70",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "f3b8f318",
            "name": "mpr-10376.15",
            "note": "Sprite ROM, bank 1 byte 2",
            "path": "cannonball/mpr-10376.15",
            "required": true,
            "size": 131072,
            "source_ref": "upstream src/main/roms.cpp:71",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "a1062984",
            "name": "mpr-10378.16",
            "note": "Sprite ROM, bank 1 byte 3",
            "path": "cannonball/mpr-10378.16",
            "required": true,
            "size": 131072,
            "source_ref": "upstream src/main/roms.cpp:72",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "a10abaa9",
            "name": "epr-10187.88",
            "note": "Z80 sound program",
            "path": "cannonball/epr-10187.88",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:77",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "bcd10dde",
            "name": "opr-10193.66",
            "note": "PCM sample bank 0",
            "path": "cannonball/opr-10193.66",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:81",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "770f1270",
            "name": "opr-10192.67",
            "note": "PCM sample bank 1",
            "path": "cannonball/opr-10192.67",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:81",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "20a284ab",
            "name": "opr-10191.68",
            "note": "PCM sample bank 2",
            "path": "cannonball/opr-10191.68",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:83",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "7cab70e2",
            "name": "opr-10190.69",
            "note": "PCM sample bank 3",
            "path": "cannonball/opr-10190.69",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:83",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "01366b54",
            "name": "opr-10189.70",
            "note": "PCM sample bank 4",
            "path": "cannonball/opr-10189.70",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:85",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "bad30ad9",
            "name": "opr-10188.71",
            "note": "PCM sample bank 5",
            "path": "cannonball/opr-10188.71",
            "required": true,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:85",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "37598616",
            "name": "opr-10188.71f",
            "note": "PCM sample bank 5, fixed version (replaces opr-10188.71)",
            "path": "cannonball/opr-10188.71f",
            "required": false,
            "size": 32768,
            "source_ref": "upstream src/main/roms.cpp:123",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "e339e87a",
            "name": "epr-10380.133",
            "note": "Master 68K Japan, high byte, lower bank",
            "path": "cannonball/epr-10380.133",
            "required": false,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:106",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "65248dd5",
            "name": "epr-10382.118",
            "note": "Master 68K Japan, low byte, lower bank",
            "path": "cannonball/epr-10382.118",
            "required": false,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:107",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "be8c412b",
            "name": "epr-10381.132",
            "note": "Master 68K Japan, high byte, upper bank",
            "path": "cannonball/epr-10381.132",
            "required": false,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:106",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "dcc586e7",
            "name": "epr-10383.117",
            "note": "Master 68K Japan, low byte, upper bank",
            "path": "cannonball/epr-10383.117",
            "required": false,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:107",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "da99d855",
            "name": "epr-10327.76",
            "note": "Slave 68K Japan, high byte, lower bank",
            "path": "cannonball/epr-10327.76",
            "required": false,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:112",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "fe0fa5e2",
            "name": "epr-10329.58",
            "note": "Slave 68K Japan, low byte, lower bank",
            "path": "cannonball/epr-10329.58",
            "required": false,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:113",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "3c0e9a7f",
            "name": "epr-10328.75",
            "note": "Slave 68K Japan, high byte, upper bank",
            "path": "cannonball/epr-10328.75",
            "required": false,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:112",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          },
          {
            "category": "game_data",
            "crc32": "59786e99",
            "name": "epr-10330.57",
            "note": "Slave 68K Japan, low byte, upper bank",
            "path": "cannonball/epr-10330.57",
            "required": false,
            "size": 65536,
            "source_ref": "upstream src/main/roms.cpp:113",
            "system": "sega-outrun",
            "validation": [
              "crc32"
            ]
          }
        ],
        "notes": "Cannonball is an enhanced OutRun engine that runs the original Sega OutRun\narcade ROM set (Rev B). It is not a traditional emulator but a source port\nthat loads the original ROM data for graphics, sound, and gameplay logic.\n\nThe core looks for ROM files in one of two locations\n(src/main/libretro/main.c:1009-1020):\n  1. The directory containing a loaded .game content file\n  2. {system_dir}/cannonball/\n\nROM loading is in src/main/roms.c. Each file is located by CRC32 first,\ncanonical filename as fallback (src/main/romloader.c:168-201). Files are\nloaded as raw ROM chips, not\ninside ZIP archives.\n\nThe Rev B ROM set is always required. Japanese ROM variants are loaded on\ndemand when the \"Japanese Tracks\" core option is enabled.\n\nThe widescreen tilemap patches are compiled into the binary\n(tilemap_data.h) and loaded from memory (src/main/engine/omusic.c:50-67).\nres/tilemap.bin and res/tilepatch.bin of the repository are their source\nand are never opened. No config.xml is read: settings come from the core\noptions (src/main/frontend/config.c:86-87). The res/ folder beside the ROMs\nis only a prefix for external music tracks, and the three tracks are the\ninternal YM ones (src/main/libretro/main.c:1045,\nsrc/main/frontend/config.c:47-62, src/main/engine/omusic.c:283-298).\n\nThe fixed PCM sample variant (opr-10188.71f) replaces opr-10188.71 when the\n\"Fix Broken Samples\" core option is enabled.\n",
        "profiled_date": "2026-03-23",
        "source": "https://github.com/libretro/cannonball",
        "source_commit": "0d83575d920ea4c0a280847a19d7802f673e6a68",
        "systems": [
          "sega-outrun"
        ],
        "type": "libretro",
        "upstream": "https://github.com/djyt/cannonball",
        "upstream_commit": "27493ebf62be3498dff93ed6a45e8e2db819bae1",
        "version_basis": {
          "kind": "file",
          "path": "src/main/frontend/menu.c",
          "pattern": "menu_about\\[[^\\]]+\\]\\s*=\\s*\"CANNONBALL ([0-9.]+) "
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
