Files
libretro/emulators/beetle_saturn.yml
T

163 lines
9.2 KiB
YAML

emulator: beetle_saturn
type: libretro
core_classification: community_fork
core: mednafen_saturn_libretro
source: "https://github.com/libretro/beetle-saturn-libretro"
upstream: "https://mednafen.github.io/"
profiled_date: "2026-10-05"
source_commit: "65f05fa66f83e65e33be83aa433d883b4fd9509a"
core_version: "v1.32.1"
display_name: "Sega - Saturn (Beetle Saturn)"
cores:
- mednafen_saturn
- beetle-saturn
systems:
- sega-saturn
- sega-stv
notes: |
Libretro port of Mednafen's Saturn emulation module, converted to C and
reporting v1.32.1 (libretro.c:57). Every firmware file is read from the
system directory: MDFN_MakeFName joins retro_base_directory and the bare
name for MDFNMKF_FIRMWARE (libretro.c:2267-2268), and the BIOS path is
built the same way (mednafen/ss/ss.c:1867-1869).
Region comes from the disc header and the region table of
mednafen/ss/db.c (libretro.c:1147-1149) and can be forced by the
beetle_saturn_region option (libretro.c:488-510, libretro.c:1153-1154).
With no content loaded the region defaults to North America
(libretro.c:1103, libretro.c:1300-1301). The BIOS filename is hard-coded
per region (mednafen/ss/ss.c:1845-1848): sega_101.bin for Japan and Asia
NTSC, mpr-17933.bin for every other area. The file must be exactly 524288
bytes and InitCommon returns false when it is absent, of another size or
short on read (mednafen/ss/ss.c:1943-1947, mednafen/ss/ss.c:1961-1984).
The sha256 of the loaded image is kept only to refuse a save state made
under another BIOS (mednafen/ss/ss.c:1988, mednafen/ss/ss.c:2589-2608).
ss.bios_sanity answers true (mednafen/settings.c:50-51) but nothing in the
port reads it: the name and hash table that upstream checks under that
setting is not carried over.
The cartridge is chosen by the game table of mednafen/ss/db.c or by the
beetle_saturn_cart option (libretro.c:512-530, libretro.c:1157-1158). The
KOF95 and Ultraman ROM carts are opened from the system directory under
the names of mednafen/settings.c:62-65 (mednafen/ss/cart.c:197-216). An
absent file leaves the cart slot on the dummy handlers and the load goes
on (mednafen/ss/cart.c:209).
ST-V content is a game ZIP or a bare ROM matched against the ST-V game
table (libretro.c:1207-1227, libretro.c:1261-1281). The cabinet region of
the matched game selects one of three ST-V BIOS images
(mednafen/ss/ss.c:1829-1843); the beetle_saturn_region option is not
applied on that path (libretro.c:1217, libretro.c:1275). The image is read
as a bare file from the system directory or, when that file is absent, as
the member of the same name in stvbios.zip there, matched without regard
to case (mednafen/ss/ss.c:1875-1949, zip_reader.c:358-365). Either form
may be 131072 or 524288 bytes (mednafen/ss/ss.c:1911-1912,
mednafen/ss/ss.c:1962).
The Video CD Card is driven through the CD block. With the
beetle_saturn_mpeg_card option enabled (libretro.c:578-586, default
disabled), CDB_Init opens mpeg_card.bin in the system directory and
MPEG_Init keeps up to 0x80000 bytes of it (mednafen/settings.c:52-53,
mednafen/settings.c:68-69, mednafen/ss/cdb.c:1315-1332,
mednafen/ss/mpeg.c:423-450). The bytes are never mapped or executed: the
loaded image only makes the card authenticate (mednafen/ss/mpeg.c:667-675).
No setting names a file for the bootable ROM cart: ss.cart.bootrom_path
has no value in the port (mednafen/ss/cart.c:242-262,
mednafen/settings.c:60-71).
files:
- name: "sega_101.bin"
system: sega-saturn
region: [japan, asia-ntsc]
required: true
size: 524288
validation: {core: [size], upstream: [size, sha256]}
sha256: "dcfef4b99605f872b6c3b6d05c045385cdea3d1b702906a0ed930df7bcb7deac"
note: "Saturn BIOS v1.01 (Japan), loaded for the Japan and Asia NTSC areas. The port checks the size only; the sha256 is the value upstream Mednafen 1.32.1 holds for this filename in its ss.bios_sanity table (src/ss/ss.cpp, BIOSDB)."
source_ref: "mednafen/ss/ss.c:1845-1846 (region filename), mednafen/ss/ss.c:1867-1873 (open), mednafen/ss/ss.c:1961-1984 (size check, read), mednafen/ss/ss.c:1988 (sha256 for save states)"
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe, south-korea, asia-pal, brazil, latin-america]
required: true
size: 524288
validation: {core: [size], upstream: [size, sha256]}
sha256: "96e106f740ab448cf89f0dd49dfbac7fe5391cb6bd6e14ad5e3061c13330266f"
note: "Saturn BIOS v1.00a (North America and Europe), loaded for every area other than Japan and Asia NTSC, and when no content is loaded. The port checks the size only; the sha256 is the value upstream Mednafen 1.32.1 holds for this filename in its ss.bios_sanity table (src/ss/ss.cpp, BIOSDB)."
source_ref: "mednafen/ss/ss.c:1847-1848 (region filename), mednafen/ss/ss.c:1867-1873 (open), mednafen/ss/ss.c:1961-1984 (size check, read), mednafen/ss/ss.c:1988 (sha256 for save states), libretro.c:1103 (default area)"
- name: "mpr-18811-mx.ic1"
system: sega-saturn
required: false
min_size: 2097152
validation: [size]
note: "King of Fighters '95 ROM cart. Selected by the game table for MK-81088 and T-3101G or by the beetle_saturn_cart option. The first 0x200000 bytes are read; a shorter file installs a zeroed cart, an absent file leaves the slot empty."
source_ref: "mednafen/settings.c:62-63 (filename), mednafen/ss/cart.c:197-216 (open), mednafen/ss/cart/rom.c:67-68 (read), mednafen/ss/db.c:90-91 (game table), libretro.c:527 (option)"
- name: "mpr-19367-mx.ic1"
system: sega-saturn
required: false
min_size: 2097152
validation: [size]
note: "Ultraman: Hikari no Kyojin Densetsu ROM cart. Selected by the game table for T-13308G or by the beetle_saturn_cart option. The first 0x200000 bytes are read; a shorter file installs a zeroed cart, an absent file leaves the slot empty."
source_ref: "mednafen/settings.c:64-65 (filename), mednafen/ss/cart.c:197-216 (open), mednafen/ss/cart/rom.c:67-68 (read), mednafen/ss/db.c:92 (game table), libretro.c:529 (option)"
- name: "epr-20091.ic8"
system: sega-stv
region: [japan, asia-ntsc]
required: true
size: [131072, 524288]
validation: [size]
note: "ST-V BIOS for Japan and Asia NTSC cabinets. Read from stvbios.zip when the bare file is absent."
source_ref: "mednafen/ss/ss.c:1838-1839 (region filename), mednafen/ss/ss.c:1871-1988 (open, zip fallback, size check, read)"
- name: "epr-17952a.ic8"
system: sega-stv
region: [north-america, brazil, latin-america]
required: true
size: [131072, 524288]
validation: [size]
note: "ST-V BIOS for North America and Central and South America cabinets. Read from stvbios.zip when the bare file is absent."
source_ref: "mednafen/ss/ss.c:1840-1841 (region filename), mednafen/ss/ss.c:1871-1988 (open, zip fallback, size check, read)"
- name: "epr-17954a.ic8"
system: sega-stv
region: [europe, south-korea, asia-pal]
required: true
size: [131072, 524288]
validation: [size]
note: "ST-V BIOS for every other cabinet region. Read from stvbios.zip when the bare file is absent."
source_ref: "mednafen/ss/ss.c:1842-1843 (region filename), mednafen/ss/ss.c:1871-1988 (open, zip fallback, size check, read)"
- name: "stvbios.zip"
category: bios_zip
system: sega-stv
required: false
description: "ST-V BIOS archive"
note: "Opened only when the bare ST-V BIOS file for the cabinet region is absent. The member of the same name is matched without regard to case and must be 131072 or 524288 bytes; no hash is checked."
source_ref: "mednafen/ss/ss.c:1888-1941 (open, member lookup, size check, extract), zip_reader.c:358-365 (case-insensitive lookup)"
contents:
- name: "epr-20091.ic8"
description: "Japan and Asia NTSC"
- name: "epr-17952a.ic8"
description: "North America and Central and South America"
- name: "epr-17954a.ic8"
description: "Europe and every other region"
- name: "mpeg_card.bin"
system: sega-saturn
required: false
size: 524288
note: "Video CD Card program ROM, opened when beetle_saturn_mpeg_card is enabled. The card carries a 512 KiB mask ROM; the core keeps at most 0x80000 bytes, pads a shorter image with zeros and checks nothing else. The image is never mapped: its presence is what makes the card authenticate, and without it the card answers commands but does not authenticate."
source_ref: "mednafen/settings.c:68-69 (filename), mednafen/ss/cdb.c:1315-1332 (open), mednafen/ss/mpeg.c:67-71 (size), mednafen/ss/mpeg.c:423-450 (read), mednafen/ss/mpeg.c:667-675 (authentication)"
- name: "satar4mp.bin"
system: sega-saturn
required: false
min_size: 262144
validation: [size]
note: "Action Replay 4M Plus firmware. The first 0x40000 bytes are read as big-endian words and a shorter file leaves the cart slot empty; no hash is checked. Unfinished in source (mednafen/ss/cart/ar4mp.c:22-24), needs CPU UBC emulation. Neither the beetle_saturn_cart option (libretro.c:512-530) nor the game table of mednafen/ss/db.c yields CART_AR4MP, so the case is not reached."
source_ref: "mednafen/settings.c:66-67 (filename), mednafen/ss/cart.c:218-236 (CART_AR4MP case), mednafen/ss/cart/ar4mp.c:181 (0x40000-byte read)"