Files
libretro/emulators/ymir.yml
T
Abdessamad Derraz fd508e3f8a fix: split ymir libretro BIOS by region
The libretro port reads sega_101.bin, mpr-17933.bin and saturn_bios.bin in that order, gives the first two the JP and US_EU regions by hash, and loads the candidate the ymir_region option or the disc area code asks for (apps/ymir-libretro/src/libretro.cpp:305-309, 596-606, 627-702, 1231-1238, 1290-1306 at 8174cbbe). Area K maps to KR, which neither image carries.
2026-10-21 12:16:34 +02:00

260 lines
12 KiB
YAML

emulator: ymir
type: standalone + libretro
core_classification: community_fork
source:
standalone: "https://github.com/ymir-emu/Ymir"
libretro: "https://github.com/warmenhoven/Emir/tree/libretro"
upstream: "https://github.com/ymir-emu/Ymir"
profiled_date: "2026-10-21"
source_commit:
standalone: "8cdf0a530ec1927f44bf3cd02c6ab51a586c4407"
libretro: "8174cbbeea4070654841cdd4604361b3eee8fdd1"
core_version:
standalone: "v0.4.1-1-g8cdf0a53"
libretro: "libretro branch"
display_name: "Sega - Saturn (Ymir)"
cores:
- ymir
found_by: {standalone: content}
systems:
- sega-saturn
notes: |
Ymir is a Sega Saturn emulator by StrikerX3. The libretro port by
warmenhoven wraps the shared ymir-core library on the libretro branch of
warmenhoven/Emir, which the buildbot builds (include_core_ymir in
libretro-super). PR #746 was closed unmerged.
No .info file exists in libretro-core-info.
Standalone: scans configured directories recursively for files matching
the expected size. No specific filenames required. Identifies known ROMs
by XXH128 hash from an internal database (19 IPL variants, 4 CD Block
versions, 2 ROM carts). Unknown files are accepted if size matches.
Libretro: reads {system}/sega_101.bin, mpr-17933.bin and saturn_bios.bin,
each kept when it is exactly 512 KiB. A candidate's region comes from the
IPL database, else from two hashes the port knows (sega_101.bin Japan,
mpr-17933.bin North America and Europe). The ymir_region option picks the
candidate of its region, else the first found, and once the disc is loaded
a candidate whose region matches the disc's area code replaces it.
ref: apps/ymir-libretro/src/libretro.cpp:305-309, 584-712,
apps/ymir-libretro/src/libretro.cpp:1228-1238, 1285-1306
Batocera standalone: configgen maps IPLROMImages to /userdata/bios,
CDBlockROMImages to /userdata/roms/saturn/cdb/, ROMCartImages to
/userdata/roms/saturn.
No HLE fallback for IPL ROM. CD Block LLE is optional and falls back to
HLE when disabled or no ROM found. Known CDB versions: 1.04, 1.05, 1.06.
ROM cartridges: KoF95 and Ultraman shipped with physical ROM carts.
Auto-detected from game database when loading a disc.
Addon cartridges: 1M/4M DRAM expansion handled via core option (no files).
XXH128 hashes used for ROM identification only, not validation.
All file loading validates size only.
files:
- name: "sega_101.bin"
system: sega-saturn
required: true
mode: standalone
size: 524288
validation: [size]
description: "Saturn IPL ROM (BIOS). Any region accepted."
source_ref:
standalone: "apps/ymir-sdl3/src/util/rom_loader.cpp:9-22, apps/ymir-sdl3/src/app/rom_manager.cpp:14-53, libs/ymir-core/include/ymir/sys/memory_defs.hpp:9"
# The libretro build reads three names in its system directory. The md5 of
# the first two is that of the image whose XXH128 is the kLocalBiosHashes
# row the port gives a region to.
- name: "sega_101.bin"
system: sega-saturn
region: [japan]
priority: 1
required: true
mode: libretro
size: 524288
validation: [size]
md5: "85ec9ca47d8f6807718151cbcca8b964"
description: "Saturn IPL ROM 1.01 (1994-12-28), Japan."
note: "First name read. The port gives this image the Japan region, so it is loaded when ymir_region is japan and kept or switched to for a disc whose area code is J. Any other 512 KiB file under this name is read with the region the IPL database gives it, or none."
source_ref:
libretro: "apps/ymir-libretro/src/libretro.cpp:305-309, apps/ymir-libretro/src/libretro.cpp:596-606, apps/ymir-libretro/src/libretro.cpp:627-648, apps/ymir-libretro/src/libretro.cpp:651-702, apps/ymir-libretro/src/libretro.cpp:1231-1238, apps/ymir-libretro/src/libretro.cpp:1290-1306"
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe, asia-ntsc, asia-pal, brazil, latin-america]
priority: 2
required: true
mode: libretro
size: 524288
validation: [size]
md5: "3240872c70984b6cbfda1586cab68dbe"
description: "Saturn IPL ROM 1.01a (1994-11-15), North America and Europe."
note: "Second name read. The port gives this image the US_EU region, loaded when ymir_region is north_america or europe and for a disc whose area code is any of T, U, B, A, E and L. Area K maps to the KR region, which neither image carries, so a Korean disc keeps the image already loaded."
source_ref:
libretro: "apps/ymir-libretro/src/libretro.cpp:305-309, apps/ymir-libretro/src/libretro.cpp:596-606, apps/ymir-libretro/src/libretro.cpp:627-648, apps/ymir-libretro/src/libretro.cpp:651-702, apps/ymir-libretro/src/libretro.cpp:1231-1238, apps/ymir-libretro/src/libretro.cpp:1290-1306, libs/ymir-core/include/ymir/media/media_defs.hpp:17-29"
- name: "saturn_bios.bin"
system: sega-saturn
priority: 3
required: false
mode: libretro
size: 524288
validation: [size]
description: "Saturn IPL ROM, any revision"
note: "Third name read. No region comes with the name: the image gets the one the IPL database gives its hash, or none, and is loaded when it is the first candidate found or its region is the one asked for."
source_ref:
libretro: "apps/ymir-libretro/src/libretro.cpp:305-309, apps/ymir-libretro/src/libretro.cpp:651-702, apps/ymir-libretro/src/libretro.cpp:1231-1238"
# IPL images named by the standalone XXH128 database. The md5 is that of
# the image whose seeded XXH128 matches the database row.
- name: "SAT_1.00-(J).bin"
system: sega-saturn
required: false
mode: standalone
size: 524288
validation: [size]
md5: "af5828fdff51384f99b3c4926be27762"
description: "Saturn IPL ROM 1.00 (1994-09-21), Japan."
note: "Picked up by the recursive IPL scan like any 512 KiB file and identified by its XXH128 row."
source_ref:
standalone: "libs/ymir-core/src/ymir/db/ipl_db.cpp:9, libs/ymir-core/include/ymir/sys/memory_defs.hpp:10, apps/ymir-sdl3/src/app/rom_manager.cpp:14-53"
- name: "sega_101.bin"
system: sega-saturn
required: false
mode: standalone
size: 524288
validation: [size]
md5: "85ec9ca47d8f6807718151cbcca8b964"
description: "Saturn IPL ROM 1.01 (1994-12-28), Japan."
note: "Picked up by the recursive IPL scan like any 512 KiB file and identified by its XXH128 row."
source_ref:
standalone: "libs/ymir-core/src/ymir/db/ipl_db.cpp:10, libs/ymir-core/include/ymir/sys/memory_defs.hpp:10, apps/ymir-sdl3/src/app/rom_manager.cpp:14-53"
- name: "SAT_1.00a-(U+E).bin"
system: sega-saturn
required: false
mode: standalone
size: 524288
validation: [size]
md5: "f273555d7d91e8a5a6bfd9bcf066331c"
description: "Saturn IPL ROM 1.00a (1994-11-15), North America and Europe."
note: "Picked up by the recursive IPL scan like any 512 KiB file and identified by its XXH128 row."
source_ref:
standalone: "libs/ymir-core/src/ymir/db/ipl_db.cpp:11, libs/ymir-core/include/ymir/sys/memory_defs.hpp:10, apps/ymir-sdl3/src/app/rom_manager.cpp:14-53"
- name: "mpr-17933.bin"
system: sega-saturn
required: false
mode: standalone
size: 524288
validation: [size]
md5: "3240872c70984b6cbfda1586cab68dbe"
description: "Saturn IPL ROM 1.01a (1994-11-15), North America and Europe."
note: "Picked up by the recursive IPL scan like any 512 KiB file and identified by its XXH128 row."
source_ref:
standalone: "libs/ymir-core/src/ymir/db/ipl_db.cpp:12, libs/ymir-core/include/ymir/sys/memory_defs.hpp:10, apps/ymir-sdl3/src/app/rom_manager.cpp:14-53"
- name: "hisaturn.bin"
system: sega-saturn
required: false
mode: standalone
size: 524288
validation: [size]
md5: "3ea3202e2634cb47cb90f3a05c015010"
description: "HiSaturn IPL ROM 1.01 (1995-01-30), Japan."
note: "Picked up by the recursive IPL scan like any 512 KiB file and identified by its XXH128 row."
source_ref:
standalone: "libs/ymir-core/src/ymir/db/ipl_db.cpp:14, libs/ymir-core/include/ymir/sys/memory_defs.hpp:10, apps/ymir-sdl3/src/app/rom_manager.cpp:14-53"
- name: "mpr-18100.bin"
system: sega-saturn
required: false
mode: standalone
size: 524288
validation: [size]
md5: "cb2cebc1b6e573b7c44523d037edcd45"
description: "HiSaturn IPL ROM 1.02 (1995-05-19), Japan."
note: "Picked up by the recursive IPL scan like any 512 KiB file and identified by its XXH128 row."
source_ref:
standalone: "libs/ymir-core/src/ymir/db/ipl_db.cpp:15, libs/ymir-core/include/ymir/sys/memory_defs.hpp:10, apps/ymir-sdl3/src/app/rom_manager.cpp:14-53"
- name: "hisaturn_v103.bin"
system: sega-saturn
required: false
mode: standalone
size: 524288
validation: [size]
md5: "0306c0e408d6682dd2d86324bd4ac661"
description: "HiSaturn IPL ROM 1.03 (1995-07-20), Japan."
note: "Picked up by the recursive IPL scan like any 512 KiB file and identified by its XXH128 row."
source_ref:
standalone: "libs/ymir-core/src/ymir/db/ipl_db.cpp:16, libs/ymir-core/include/ymir/sys/memory_defs.hpp:10, apps/ymir-sdl3/src/app/rom_manager.cpp:14-53"
- name: "vsaturn.bin"
system: sega-saturn
required: false
mode: standalone
size: 524288
validation: [size]
md5: "ac4e4b6522e200c0d23d371a8cecbfd3"
description: "V-Saturn IPL ROM 1.01 (1995-07-03), Japan."
note: "Picked up by the recursive IPL scan like any 512 KiB file and identified by its XXH128 row."
source_ref:
standalone: "libs/ymir-core/src/ymir/db/ipl_db.cpp:17, libs/ymir-core/include/ymir/sys/memory_defs.hpp:10, apps/ymir-sdl3/src/app/rom_manager.cpp:14-53"
- name: "cdb/cdb_rom.bin"
system: sega-saturn
required: false
hle_fallback: true
size: 65536
validation: [size]
description: "SH1 CD Block ROM for low-level CD drive emulation. Scans cdb/ subdirectory for any matching file."
source_ref:
standalone: "apps/ymir-sdl3/src/util/rom_loader.cpp:25-38, apps/ymir-sdl3/src/app/rom_manager.cpp:55-91, libs/ymir-core/include/ymir/hw/sh1/sh1_defs.hpp:7"
libretro: "apps/ymir-libretro/src/libretro.cpp:720-737"
- name: "mpr-18811-mx.ic1"
system: sega-saturn
required: false
category: game_data
size: 2097152
validation: [size]
description: "ROM cartridge for The King of Fighters '95."
source_ref:
standalone: "apps/ymir-sdl3/src/app/rom_manager.cpp:93-130, libs/ymir-core/include/ymir/db/rom_cart_db.hpp:19-22"
libretro: "apps/ymir-libretro/src/libretro.cpp:760, apps/ymir-libretro/src/libretro.cpp:744-756"
- name: "mpr-19367-mx.ic1"
system: sega-saturn
required: false
category: game_data
size: 2097152
validation: [size]
description: "ROM cartridge for Ultraman: Hikari no Kyojin Densetsu."
source_ref:
standalone: "apps/ymir-sdl3/src/app/rom_manager.cpp:93-130, libs/ymir-core/include/ymir/db/rom_cart_db.hpp:25-28"
libretro: "apps/ymir-libretro/src/libretro.cpp:761, apps/ymir-libretro/src/libretro.cpp:744-756"
- name: "gamecontrollerdb.txt"
system: sega-saturn
required: false
mode: standalone
bundled: true
sha1: ["eb06dba857f50e613c997198e4bd2da8e2c9fb21", "4a1981a3ff91352c4de50fbc82e8cc960c49183b"]
md5: ["2d76f311eecb0cdab270bf3fc5547173", "ec570b054019676c6b20144cbd47e562"]
description: "SDL game controller mapping database"
note: >
Passed to SDL_AddGamepadMappingsFromFile from the working directory, then
from the profile root. A missing file or a load failure is logged and SDL
keeps its built-in mappings. The release packages copy the file from
mdqinc/SDL_GameControllerDB at build time. Hashes of the copies in the
v0.2.1 Linux and macOS packages and, with CRLF line ends, the Windows
zips.
source_ref:
standalone: "apps/ymir-sdl3/src/app/settings.hpp:42, apps/ymir-sdl3/src/app/services/rom_service.cpp:33-68, apps/ymir-sdl3/src/app/profile.cpp:36-46, .github/workflows/build.yaml:202-236"