emulator: Cannonball type: standalone + libretro source: "https://github.com/libretro/cannonball" upstream: "https://github.com/djyt/cannonball" profiled_date: "2026-03-18" core_version: "1.0" display_name: "Cannonball" systems: - sega-outrun notes: | Cannonball is an enhanced OutRun engine that runs the original Sega OutRun arcade ROM set (Rev B). It is not a traditional emulator but a source port that loads the original ROM data for graphics, sound, and gameplay logic. The core looks for ROM files in one of two locations (src/main/libretro/main.cpp:945-967): 1. The directory containing a loaded .game content file 2. {system_dir}/cannonball/ ROM loading is in src/main/roms.cpp. Each file is verified by CRC32 at load time (src/main/romloader.cpp:70-76). Files are loaded as raw ROM chips, not inside ZIP archives. The Rev B ROM set is always required. Japanese ROM variants are loaded on demand when the "Japanese Tracks" core option is enabled. Two optional widescreen tilemap patches are loaded from a res/ subdirectory (src/main/engine/omusic.cpp:42-51). These are Cannonball-specific data files shipped with the core, not original arcade ROMs. The fixed PCM sample variant (opr-10188.71f) replaces opr-10188.71 when the "Fix Broken Samples" core option is enabled. files: # ------------------------------------------------------- # Master CPU ROMs (68000, Rev B) # ------------------------------------------------------- - name: "epr-10381a.132" system: sega-outrun required: true size: 65536 # 0x10000 crc32: "be8c412b" note: "Master 68K, high byte, upper bank (Rev A alternate)" source_ref: "src/main/roms.cpp:29" - name: "epr-10383b.117" system: sega-outrun required: true size: 65536 crc32: "10a2014a" note: "Master 68K, low byte, upper bank" source_ref: "src/main/roms.cpp:38" - name: "epr-10380b.133" system: sega-outrun required: true size: 65536 crc32: "1f6cadad" note: "Master 68K, high byte, lower bank" source_ref: "src/main/roms.cpp:39" - name: "epr-10382b.118" system: sega-outrun required: true size: 65536 crc32: "c4c3fa1a" note: "Master 68K, low byte, lower bank" source_ref: "src/main/roms.cpp:40" # ------------------------------------------------------- # Slave CPU ROMs (68000, Rev A) # ------------------------------------------------------- - name: "epr-10327a.76" system: sega-outrun required: true size: 65536 crc32: "e28a5baf" note: "Slave 68K, high byte, lower bank" source_ref: "src/main/roms.cpp:44" - name: "epr-10329a.58" system: sega-outrun required: true size: 65536 crc32: "da131c81" note: "Slave 68K, low byte, lower bank" source_ref: "src/main/roms.cpp:45" - name: "epr-10328a.75" system: sega-outrun required: true size: 65536 crc32: "d5ec5e5d" note: "Slave 68K, high byte, upper bank" source_ref: "src/main/roms.cpp:46" - name: "epr-10330a.57" system: sega-outrun required: true size: 65536 crc32: "ba9ec82a" note: "Slave 68K, low byte, upper bank" source_ref: "src/main/roms.cpp:47" # ------------------------------------------------------- # Tile ROMs # ------------------------------------------------------- - name: "opr-10268.99" system: sega-outrun required: true size: 32768 # 0x8000 crc32: "95344b04" note: "Tile ROM bank 0" source_ref: "src/main/roms.cpp:51" - name: "opr-10232.102" system: sega-outrun required: true size: 32768 crc32: "776ba1eb" note: "Tile ROM bank 1" source_ref: "src/main/roms.cpp:52" - name: "opr-10267.100" system: sega-outrun required: true size: 32768 crc32: "a85bb823" note: "Tile ROM bank 2" source_ref: "src/main/roms.cpp:53" - name: "opr-10231.103" system: sega-outrun required: true size: 32768 crc32: "8908bcbf" note: "Tile ROM bank 3" source_ref: "src/main/roms.cpp:54" - name: "opr-10266.101" system: sega-outrun required: true size: 32768 crc32: "9f6f1a74" note: "Tile ROM bank 4" source_ref: "src/main/roms.cpp:55" - name: "opr-10230.104" system: sega-outrun required: true size: 32768 crc32: "686f5e50" note: "Tile ROM bank 5" source_ref: "src/main/roms.cpp:56" # ------------------------------------------------------- # Road ROMs (identical pair, one per road layer) # ------------------------------------------------------- - name: "opr-10185.11" system: sega-outrun required: true size: 32768 crc32: "22794426" note: "Road ROM, layer 1" source_ref: "src/main/roms.cpp:60" - name: "opr-10186.47" system: sega-outrun required: true size: 32768 crc32: "22794426" note: "Road ROM, layer 2 (identical to opr-10185.11)" source_ref: "src/main/roms.cpp:61" # ------------------------------------------------------- # Sprite ROMs (interleaved 4-way) # ------------------------------------------------------- - name: "mpr-10371.9" system: sega-outrun required: true size: 131072 # 0x20000 crc32: "7cc86208" note: "Sprite ROM, bank 0 byte 0" source_ref: "src/main/roms.cpp:65" - name: "mpr-10373.10" system: sega-outrun required: true size: 131072 crc32: "b0d26ac9" note: "Sprite ROM, bank 0 byte 1" source_ref: "src/main/roms.cpp:66" - name: "mpr-10375.11" system: sega-outrun required: true size: 131072 crc32: "59b60bd7" note: "Sprite ROM, bank 0 byte 2" source_ref: "src/main/roms.cpp:67" - name: "mpr-10377.12" system: sega-outrun required: true size: 131072 crc32: "17a1b04a" note: "Sprite ROM, bank 0 byte 3" source_ref: "src/main/roms.cpp:68" - name: "mpr-10372.13" system: sega-outrun required: true size: 131072 crc32: "b557078c" note: "Sprite ROM, bank 1 byte 0" source_ref: "src/main/roms.cpp:69" - name: "mpr-10374.14" system: sega-outrun required: true size: 131072 crc32: "8051e517" note: "Sprite ROM, bank 1 byte 1" source_ref: "src/main/roms.cpp:70" - name: "mpr-10376.15" system: sega-outrun required: true size: 131072 crc32: "f3b8f318" note: "Sprite ROM, bank 1 byte 2" source_ref: "src/main/roms.cpp:71" - name: "mpr-10378.16" system: sega-outrun required: true size: 131072 crc32: "a1062984" note: "Sprite ROM, bank 1 byte 3" source_ref: "src/main/roms.cpp:72" # ------------------------------------------------------- # Z80 Sound ROM # ------------------------------------------------------- - name: "epr-10187.88" system: sega-outrun required: true size: 65536 # 0x10000 crc32: "a10abaa9" note: "Z80 sound program" source_ref: "src/main/roms.cpp:76" # ------------------------------------------------------- # Sega PCM samples # ------------------------------------------------------- - name: "opr-10193.66" system: sega-outrun required: true size: 32768 crc32: "bcd10dde" note: "PCM sample bank 0" source_ref: "src/main/roms.cpp:80" - name: "opr-10192.67" system: sega-outrun required: true size: 32768 crc32: "770f1270" note: "PCM sample bank 1" source_ref: "src/main/roms.cpp:81" - name: "opr-10191.68" system: sega-outrun required: true size: 32768 crc32: "20a284ab" note: "PCM sample bank 2" source_ref: "src/main/roms.cpp:82" - name: "opr-10190.69" system: sega-outrun required: true size: 32768 crc32: "7cab70e2" note: "PCM sample bank 3" source_ref: "src/main/roms.cpp:83" - name: "opr-10189.70" system: sega-outrun required: true size: 32768 crc32: "01366b54" note: "PCM sample bank 4" source_ref: "src/main/roms.cpp:84" - name: "opr-10188.71" system: sega-outrun required: true size: 32768 crc32: "bad30ad9" note: "PCM sample bank 5" source_ref: "src/main/roms.cpp:85" # ------------------------------------------------------- # Alternate / optional ROMs # ------------------------------------------------------- - name: "epr-10381b.132" system: sega-outrun required: false size: 65536 crc32: "be8c412b" note: "Master 68K, Rev B alternate filename for epr-10381a.132" source_ref: "src/main/roms.cpp:34" - name: "opr-10188.71f" system: sega-outrun required: false size: 32768 crc32: "37598616" note: "PCM sample bank 5, fixed version (replaces opr-10188.71)" source_ref: "src/main/roms.cpp:123" # ------------------------------------------------------- # Japanese ROM variants (loaded when jap option enabled) # ------------------------------------------------------- - name: "epr-10380.133" system: sega-outrun required: false size: 65536 crc32: "e339e87a" note: "Master 68K Japan, high byte, lower bank" source_ref: "src/main/roms.cpp:104" - name: "epr-10382.118" system: sega-outrun required: false size: 65536 crc32: "65248dd5" note: "Master 68K Japan, low byte, lower bank" source_ref: "src/main/roms.cpp:105" - name: "epr-10381.132" system: sega-outrun required: false size: 65536 crc32: "be8c412b" note: "Master 68K Japan, high byte, upper bank" source_ref: "src/main/roms.cpp:106" - name: "epr-10383.117" system: sega-outrun required: false size: 65536 crc32: "dcc586e7" note: "Master 68K Japan, low byte, upper bank" source_ref: "src/main/roms.cpp:107" - name: "epr-10327.76" system: sega-outrun required: false size: 65536 crc32: "da99d855" note: "Slave 68K Japan, high byte, lower bank" source_ref: "src/main/roms.cpp:110" - name: "epr-10329.58" system: sega-outrun required: false size: 65536 crc32: "fe0fa5e2" note: "Slave 68K Japan, low byte, lower bank" source_ref: "src/main/roms.cpp:111" - name: "epr-10328.75" system: sega-outrun required: false size: 65536 crc32: "3c0e9a7f" note: "Slave 68K Japan, high byte, upper bank" source_ref: "src/main/roms.cpp:112" - name: "epr-10330.57" system: sega-outrun required: false size: 65536 crc32: "59786e99" note: "Slave 68K Japan, low byte, upper bank" source_ref: "src/main/roms.cpp:113"