Files
libretro/emulators/cannonball.yml
T
Abdessamad Derraz b3b3880c19 chore: say which repository each source_ref cites
Profiles that read two repositories, a libretro port and its upstream,
now prefix each citation with source or upstream, decided by which tree
carries the cited value at its pin. The emulator pages use the word to
tell libretro glue, emulator code as the port carries it, and the
upstream emulator apart.
2026-10-20 09:23:41 +02:00

507 lines
14 KiB
YAML

emulator: Cannonball
type: libretro
core_classification: game_engine
source: "https://github.com/libretro/cannonball"
upstream: "https://github.com/djyt/cannonball"
profiled_date: "2026-03-23"
source_commit: "0d83575d920ea4c0a280847a19d7802f673e6a68"
core_version: "1.0"
display_name: "Cannonball"
cores:
- 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.c:1009-1020):
1. The directory containing a loaded .game content file
2. {system_dir}/cannonball/
ROM loading is in src/main/roms.c. Each file is located by CRC32 first,
canonical filename as fallback (src/main/romloader.c:168-201). 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.
The widescreen tilemap patches are compiled into the binary
(tilemap_data.h) and loaded from memory (src/main/engine/omusic.c:50-67).
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-10381b.132"
path: "cannonball/epr-10381b.132"
system: sega-outrun
category: game_data
required: true
size: 65536
crc32: "be8c412b"
validation: [crc32]
aliases: [epr-10381b.132]
note: "Master 68K, high byte, upper bank"
source_ref: "upstream src/main/roms.cpp:39"
- name: "epr-10383b.117"
path: "cannonball/epr-10383b.117"
system: sega-outrun
category: game_data
required: true
size: 65536
crc32: "10a2014a"
validation: [crc32]
note: "Master 68K, low byte, upper bank"
source_ref: "upstream src/main/roms.cpp:40"
- name: "epr-10380b.133"
path: "cannonball/epr-10380b.133"
system: sega-outrun
category: game_data
required: true
size: 65536
crc32: "1f6cadad"
validation: [crc32]
note: "Master 68K, high byte, lower bank"
source_ref: "upstream src/main/roms.cpp:39"
- name: "epr-10382b.118"
path: "cannonball/epr-10382b.118"
system: sega-outrun
category: game_data
required: true
size: 65536
crc32: "c4c3fa1a"
validation: [crc32]
note: "Master 68K, low byte, lower bank"
source_ref: "upstream src/main/roms.cpp:40"
# -------------------------------------------------------
# Slave CPU ROMs (68000, Rev A)
# -------------------------------------------------------
- name: "epr-10327a.76"
path: "cannonball/epr-10327a.76"
system: sega-outrun
category: game_data
required: true
size: 65536
crc32: "e28a5baf"
validation: [crc32]
note: "Slave 68K, high byte, lower bank"
source_ref: "upstream src/main/roms.cpp:44"
- name: "epr-10329a.58"
path: "cannonball/epr-10329a.58"
system: sega-outrun
category: game_data
required: true
size: 65536
crc32: "da131c81"
validation: [crc32]
note: "Slave 68K, low byte, lower bank"
source_ref: "upstream src/main/roms.cpp:45"
- name: "epr-10328a.75"
path: "cannonball/epr-10328a.75"
system: sega-outrun
category: game_data
required: true
size: 65536
crc32: "d5ec5e5d"
validation: [crc32]
note: "Slave 68K, high byte, upper bank"
source_ref: "upstream src/main/roms.cpp:46"
- name: "epr-10330a.57"
path: "cannonball/epr-10330a.57"
system: sega-outrun
category: game_data
required: true
size: 65536
crc32: "ba9ec82a"
validation: [crc32]
note: "Slave 68K, low byte, upper bank"
source_ref: "upstream src/main/roms.cpp:47"
# -------------------------------------------------------
# Tile ROMs
# -------------------------------------------------------
- name: "opr-10268.99"
path: "cannonball/opr-10268.99"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "95344b04"
validation: [crc32]
note: "Tile ROM bank 0"
source_ref: "upstream src/main/roms.cpp:51"
- name: "opr-10232.102"
path: "cannonball/opr-10232.102"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "776ba1eb"
validation: [crc32]
note: "Tile ROM bank 1"
source_ref: "upstream src/main/roms.cpp:52"
- name: "opr-10267.100"
path: "cannonball/opr-10267.100"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "a85bb823"
validation: [crc32]
note: "Tile ROM bank 2"
source_ref: "upstream src/main/roms.cpp:53"
- name: "opr-10231.103"
path: "cannonball/opr-10231.103"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "8908bcbf"
validation: [crc32]
note: "Tile ROM bank 3"
source_ref: "upstream src/main/roms.cpp:54"
- name: "opr-10266.101"
path: "cannonball/opr-10266.101"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "9f6f1a74"
validation: [crc32]
note: "Tile ROM bank 4"
source_ref: "upstream src/main/roms.cpp:55"
- name: "opr-10230.104"
path: "cannonball/opr-10230.104"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "686f5e50"
validation: [crc32]
note: "Tile ROM bank 5"
source_ref: "upstream src/main/roms.cpp:56"
# -------------------------------------------------------
# Road ROMs (identical pair, one per road layer)
# -------------------------------------------------------
- name: "opr-10185.11"
path: "cannonball/opr-10185.11"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "22794426"
validation: [crc32]
note: "Road ROM, layer 1"
source_ref: "upstream src/main/roms.cpp:60"
- name: "opr-10186.47"
path: "cannonball/opr-10186.47"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "22794426"
validation: [crc32]
note: "Road ROM, layer 2 (identical to opr-10185.11)"
source_ref: "upstream src/main/roms.cpp:61"
# -------------------------------------------------------
# Sprite ROMs (interleaved 4-way)
# -------------------------------------------------------
- name: "mpr-10371.9"
path: "cannonball/mpr-10371.9"
system: sega-outrun
category: game_data
required: true
size: 131072
crc32: "7cc86208"
validation: [crc32]
note: "Sprite ROM, bank 0 byte 0"
source_ref: "upstream src/main/roms.cpp:65"
- name: "mpr-10373.10"
path: "cannonball/mpr-10373.10"
system: sega-outrun
category: game_data
required: true
size: 131072
crc32: "b0d26ac9"
validation: [crc32]
note: "Sprite ROM, bank 0 byte 1"
source_ref: "upstream src/main/roms.cpp:66"
- name: "mpr-10375.11"
path: "cannonball/mpr-10375.11"
system: sega-outrun
category: game_data
required: true
size: 131072
crc32: "59b60bd7"
validation: [crc32]
note: "Sprite ROM, bank 0 byte 2"
source_ref: "upstream src/main/roms.cpp:67"
- name: "mpr-10377.12"
path: "cannonball/mpr-10377.12"
system: sega-outrun
category: game_data
required: true
size: 131072
crc32: "17a1b04a"
validation: [crc32]
note: "Sprite ROM, bank 0 byte 3"
source_ref: "upstream src/main/roms.cpp:68"
- name: "mpr-10372.13"
path: "cannonball/mpr-10372.13"
system: sega-outrun
category: game_data
required: true
size: 131072
crc32: "b557078c"
validation: [crc32]
note: "Sprite ROM, bank 1 byte 0"
source_ref: "upstream src/main/roms.cpp:69"
- name: "mpr-10374.14"
path: "cannonball/mpr-10374.14"
system: sega-outrun
category: game_data
required: true
size: 131072
crc32: "8051e517"
validation: [crc32]
note: "Sprite ROM, bank 1 byte 1"
source_ref: "upstream src/main/roms.cpp:70"
- name: "mpr-10376.15"
path: "cannonball/mpr-10376.15"
system: sega-outrun
category: game_data
required: true
size: 131072
crc32: "f3b8f318"
validation: [crc32]
note: "Sprite ROM, bank 1 byte 2"
source_ref: "upstream src/main/roms.cpp:71"
- name: "mpr-10378.16"
path: "cannonball/mpr-10378.16"
system: sega-outrun
category: game_data
required: true
size: 131072
crc32: "a1062984"
validation: [crc32]
note: "Sprite ROM, bank 1 byte 3"
source_ref: "upstream src/main/roms.cpp:72"
# -------------------------------------------------------
# Z80 Sound ROM
# -------------------------------------------------------
- name: "epr-10187.88"
path: "cannonball/epr-10187.88"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "a10abaa9"
validation: [crc32]
note: "Z80 sound program"
source_ref: "upstream src/main/roms.cpp:77"
# -------------------------------------------------------
# Sega PCM samples
# -------------------------------------------------------
- name: "opr-10193.66"
path: "cannonball/opr-10193.66"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "bcd10dde"
validation: [crc32]
note: "PCM sample bank 0"
source_ref: "upstream src/main/roms.cpp:81"
- name: "opr-10192.67"
path: "cannonball/opr-10192.67"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "770f1270"
validation: [crc32]
note: "PCM sample bank 1"
source_ref: "upstream src/main/roms.cpp:81"
- name: "opr-10191.68"
path: "cannonball/opr-10191.68"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "20a284ab"
validation: [crc32]
note: "PCM sample bank 2"
source_ref: "upstream src/main/roms.cpp:83"
- name: "opr-10190.69"
path: "cannonball/opr-10190.69"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "7cab70e2"
validation: [crc32]
note: "PCM sample bank 3"
source_ref: "upstream src/main/roms.cpp:83"
- name: "opr-10189.70"
path: "cannonball/opr-10189.70"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "01366b54"
validation: [crc32]
note: "PCM sample bank 4"
source_ref: "upstream src/main/roms.cpp:85"
- name: "opr-10188.71"
path: "cannonball/opr-10188.71"
system: sega-outrun
category: game_data
required: true
size: 32768
crc32: "bad30ad9"
validation: [crc32]
note: "PCM sample bank 5"
source_ref: "upstream src/main/roms.cpp:85"
# -------------------------------------------------------
# Optional: fixed PCM sample
# -------------------------------------------------------
- name: "opr-10188.71f"
path: "cannonball/opr-10188.71f"
system: sega-outrun
category: game_data
required: false
size: 32768
crc32: "37598616"
validation: [crc32]
note: "PCM sample bank 5, fixed version (replaces opr-10188.71)"
source_ref: "upstream src/main/roms.cpp:123"
# -------------------------------------------------------
# Japanese ROM variants (loaded when jap option enabled)
# -------------------------------------------------------
- name: "epr-10380.133"
path: "cannonball/epr-10380.133"
system: sega-outrun
category: game_data
required: false
size: 65536
crc32: "e339e87a"
validation: [crc32]
note: "Master 68K Japan, high byte, lower bank"
source_ref: "upstream src/main/roms.cpp:106"
- name: "epr-10382.118"
path: "cannonball/epr-10382.118"
system: sega-outrun
category: game_data
required: false
size: 65536
crc32: "65248dd5"
validation: [crc32]
note: "Master 68K Japan, low byte, lower bank"
source_ref: "upstream src/main/roms.cpp:107"
- name: "epr-10381.132"
path: "cannonball/epr-10381.132"
system: sega-outrun
category: game_data
required: false
size: 65536
crc32: "be8c412b"
validation: [crc32]
note: "Master 68K Japan, high byte, upper bank"
source_ref: "upstream src/main/roms.cpp:106"
- name: "epr-10383.117"
path: "cannonball/epr-10383.117"
system: sega-outrun
category: game_data
required: false
size: 65536
crc32: "dcc586e7"
validation: [crc32]
note: "Master 68K Japan, low byte, upper bank"
source_ref: "upstream src/main/roms.cpp:107"
- name: "epr-10327.76"
path: "cannonball/epr-10327.76"
system: sega-outrun
category: game_data
required: false
size: 65536
crc32: "da99d855"
validation: [crc32]
note: "Slave 68K Japan, high byte, lower bank"
source_ref: "upstream src/main/roms.cpp:112"
- name: "epr-10329.58"
path: "cannonball/epr-10329.58"
system: sega-outrun
category: game_data
required: false
size: 65536
crc32: "fe0fa5e2"
validation: [crc32]
note: "Slave 68K Japan, low byte, lower bank"
source_ref: "upstream src/main/roms.cpp:113"
- name: "epr-10328.75"
path: "cannonball/epr-10328.75"
system: sega-outrun
category: game_data
required: false
size: 65536
crc32: "3c0e9a7f"
validation: [crc32]
note: "Slave 68K Japan, high byte, upper bank"
source_ref: "upstream src/main/roms.cpp:112"
- name: "epr-10330.57"
path: "cannonball/epr-10330.57"
system: sega-outrun
category: game_data
required: false
size: 65536
crc32: "59786e99"
validation: [crc32]
note: "Slave 68K Japan, low byte, upper bank"
source_ref: "upstream src/main/roms.cpp:113"