Files
libretro/emulators/cannonball.yml
T
Abdessamad Derraz e7aa9e870b fix: state libretro core versions from their code
Each libretro profile records version_basis and core_version is read
there at its pin. snes9x states 1.63 in snes9x.h, nestopia 2.0.0, mgba
0.11.0, vice 3.10, atari800's libretro tree 7.0.0. Cores whose build
takes its version from git carry the nearest tag in describe form
(flycast v2.7-90-ge88b0ce, ppsspp, duckstation, gearcoleco), placeholders
copied from .info files (Git, SVN) are replaced by the code's statement,
and a code that states none is null with kind none.
2026-10-27 19:21:27 +01:00

518 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"
upstream_commit: "27493ebf62be3498dff93ed6a45e8e2db819bae1"
core_version: "0.3"
version_basis:
kind: file
path: "src/main/frontend/menu.c"
pattern: 'menu_about\[[^\]]+\]\s*=\s*"CANNONBALL ([0-9.]+) '
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).
res/tilemap.bin and res/tilepatch.bin of the repository are their source
and are never opened. No config.xml is read: settings come from the core
options (src/main/frontend/config.c:86-87). The res/ folder beside the ROMs
is only a prefix for external music tracks, and the three tracks are the
internal YM ones (src/main/libretro/main.c:1045,
src/main/frontend/config.c:47-62, src/main/engine/omusic.c:283-298).
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"