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." note: "The libretro port reads sega_101.bin, mpr-17933.bin and saturn_bios.bin from its system directory (kBiosFilenames)." 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"