Skip to content

Saturn.emu - RetroBIOS

Type standalone
Classification Community forks
Source https://github.com/Rakashazi/emu-ex-plus-alpha
Upstream https://mednafen.github.io/
Version 1.5.85
Profiled 2026-08-12
Cores saturn-emu, Saturn.emu, SATURN-EMU, saturnemu
Systems sega-saturn
Technical notes

Member of the EX Emulator series by Robert Broglia, published as com.explusalpha.SaturnEmu and built for arm64 and x86_64 only (Saturn.emu/metadata/conf.mk:2-7, Saturn.emu/config.mk:7-9). ES-DE reaches it through the SATURN-EMU find rule, which only the Android rule set carries, and offers it under both the saturn and saturnjp systems. Mednafen's Saturn module is vendored under Saturn.emu/src/ss on the 1.32 line (EmuFramework/include/shared/mednafen/mednafen-config.h:167) and driven by the app's own video, audio, input and save layers (Saturn.emu/src/CMakeLists.txt:6-40). Seventeen files differ from the Mednafen 1.32.1 release, none of it touching file loading: statics become externals the app reads (Saturn.emu/src/ss/ss.cpp:146, Saturn.emu/src/ss/smpc.cpp:96,146, Saturn.emu/src/ss/vdp2.cpp:46,63, Saturn.emu/src/ss/cdb.cpp:535), backup memory moves to the app's file objects and the periodic save timers are dropped (Saturn.emu/src/ss/ss.cpp:1836-1849, mednafen 1.32.1 src/ss/ss.cpp:927-970, 1592-1600,1867-1874), the VDP2 work queue becomes a framework ring buffer (Saturn.emu/src/ss/vdp2_render.cpp:3211-3231), and the rest is enum and virtual qualifier tidying. The BIOS and cart ROM block is byte-identical to the release, as are cart.cpp, cart/rom.cpp and db.cpp.

Content is read from .cue, .ccd, .chd, .toc and .m3u files (Saturn.emu/metadata/conf.mk:5, Saturn.emu/src/main/system.ccm:106-109). An archive is opened by the app, which prefers an .m3u member and otherwise keeps the first entry passing that filter, and an .m3u names up to 16 images (Saturn.emu/src/main/Main.cc:186-246). Every load goes through the module's LoadCD entry point (Saturn.emu/src/main/Main.cc:275, Saturn.emu/src/ss/ss.cpp:1757-1806). The ROM entry point Load is never called: its only call site in the tree is a shared helper this app does not use (EmuFramework/src/shared/mednafen-emuex/MDFNUtils.hh:133-146).

Four files the user supplies carry no name of their own. Pickers store arbitrary URIs under NA/EU BIOS, JP BIOS, KoF '95 ROM and Ultraman ROM, each filtered to names ending in .bin and each refusing to descend into archives (Saturn.emu/src/main/EmuMenuViews.cc:34-37,44-145, EmuFramework/include/emuframework/DataPathSelectView.hh:77-102, Saturn.emu/src/main/system.ccm:85-95,128-131, Saturn.emu/src/main/options.cc:65-68,98-101). MDFN_GetSettingS answers the four path settings with the fixed tokens jp, na, kof95 and ultraman, and MDFN_MakeFName turns each token back into the matching URI, ending the load with a message pointing at the File Paths menu when it is unset (Saturn.emu/src/main/options.cc:215-228,245-285). Every other setting name reaches unreachable(), so no other firmware request can be made.

Which BIOS is read follows the emulated area: Japan and Asia NTSC take the JP path, every other area the NA/EU path (Saturn.emu/src/ss/ss.cpp:1388-1394). The area comes from the Region menu, or when that is Auto from the first 16 sectors of the disc, checked against the security code hash and the "SEGA SEGASATURN " magic (Saturn.emu/src/main/EmuMenuViews.cc:216-251, Saturn.emu/src/main/options.cc:203-204, Saturn.emu/src/ss/ss.cpp:959-968, 1126-1144,1778-1787). The image is rejected at any length other than 524288 and then hashed (Saturn.emu/src/ss/ss.cpp:1400-1404). With ss.bios_sanity forced on (Saturn.emu/src/main/options.cc:193-194) a table of five known images drives two further tests: a file whose name is one of the five must hash to that entry, and a file whose hash is one of the five must belong to the area being emulated (Saturn.emu/src/ss/ss.cpp:1406-1439). An image outside the table passes both, since each test only rejects on a match. A third test compares Saturn against ST-V images and can never fire here.

Cart type comes from the Cart Type menu when it is not Auto, otherwise from the internal game database, otherwise none (Saturn.emu/src/main/EmuMenuViews.cc:180-214, Saturn.emu/src/main/options.cc:161-164, Saturn.emu/src/ss/ss.cpp:1761-1790). The database forces the KoF '95 cart for MK-81088 and T-3101G and the Ultraman cart for T-13308G, marking all three a game requirement (Saturn.emu/src/ss/db.cpp:93-96,403), so those three discs read a ROM image and every other disc reads none.

ST-V, the bootable ROM cart and Action Replay 4M Plus are compiled and unreachable. All three exist only behind cart types the Cart Type menu does not list and the database never assigns, and the first two are entered from Load alone (Saturn.emu/src/ss/ss.cpp:1630,1669, Saturn.emu/src/ss/cart.cpp:166-181). Their paths would ask for ss.bios_stv_jp, ss.bios_stv_na, ss.bios_stv_eu and ss.cart.satar4mp_path, none of which MDFN_GetSettingS answers (Saturn.emu/src/ss/ss.cpp:1379-1387,1293, Saturn.emu/src/main/options.cc:215-228). The ST-V EEPROM save file and the ST-V branches in the app's own backup memory code are dead for the same reason (Saturn.emu/src/main/Main.cc:119-123,141-142).

Per content the app writes and reads back a .bkr backup RAM image, a .smpc real time clock block, .mca save states and, when a memory cart is selected, a gzipped .bcr cart image; settings live in SaturnEmu.config (Saturn.emu/src/main/Main.cc:50-129,152-155, Saturn.emu/src/main/system.ccm:180, Saturn.emu/src/ss/cart/backup.cpp:69-73, Saturn.emu/src/main/AppMeta.cc:28). Mednafen's image reader picks up an .sbi beside a cue sheet when one is present (EmuFramework/src/shared/mednafen/cdrom/CDAccess_Image.cpp:924-941). Cheats are off (Saturn.emu/src/main/options.cc:187-188), and ui.png, gpOverlay.png and the shader sources are drawn from the application bundle (EmuFramework/include/emuframework/AssetManager.hh:61-66, EmuFramework/src/AssetManager.cc:63-69, EmuFramework/src/VideoImageEffect.cc:163-173).

7 files | 2 required, 5 optional | 7 in repo, 0 missing

sega_101.bin required in repo japan, asia-ntsc
Saturn BIOS v1.01, read for Japan and Asia NTSC

mpr-17933.bin required in repo north-america, europe, south-korea, asia-pal, brazil, latin-america
Saturn BIOS read for every area outside Japan and Asia NTSC

sega_100.bin optional in repo japan, asia-ntsc
Saturn BIOS v1.00, accepted for Japan and Asia NTSC

sega1003.bin optional in repo japan, asia-ntsc
Saturn BIOS v1.003, accepted for Japan and Asia NTSC

sega_100a.bin optional in repo north-america, europe, south-korea, asia-pal, brazil, latin-america
Saturn BIOS v1.00a, accepted for every area outside Japan and Asia NTSC

mpr-18811-mx.ic1 optional in repo
King of Fighters '95 ROM cart

mpr-19367-mx.ic1 optional in repo
Ultraman - Hikari no Kyojin Densetsu ROM cart

Generated on 2026-08-23T16:12:06Z