I’d test that combo here, but I sucked even on the real hardware. The only fighting games I play are simplified ones. Have you tried all the latency mitigation features inside RetroArch itself, like Max Swapchain Images and Automatic Frame Delay? They’re pretty helpful for every core, although they might be pretty taxing on the machine.
Does it still have that option which turn meshes into real transparencies? That was a godsend, and many emulators ignore a feature like this; some of them don’t even support shaders, so you’re stuck with dithering. Besides SSF, I remember only Snes9x doing something similar (blending jailbars on hi-res games).
Wait, I think Beetle PSX can blend dithering before presenting the frame, but I can’t test right now.
I used SSF for a few years, until Retroarch and Mednafen. I’d say that in this case, more is less, many of these options in such Win95 style tabs are a nightmare in today’s age. Take PCSX2 for instance, it used plugins and the user would have to fickle around to see which options, and there were tons of them, stick. What happens today is that many fixes automatically happen under the hood, this is also true for Swanstation and a few more.
The goal is to make the software as user friendly as possible and less hacky as possible, and Shima, SSF’s developer never cared enough to modernize SSF’s UI or unifying the core emulator, it does indeed has tons of features, but it overwhelms. Did you know that Saturn Tribute on the Switch uses SSF as a base for the emulation and that is the reason why it was launched with horrendous input lag? Meaning, more than 7 frames, sometimes in the 10’s. I don’t know if all Saturn Tribute titles after the early ones still rely on Shima’s work, but I’m certain they aren’t the best representations of the originals, as far as gameplay goes.
Not only that, but the way SSF handles its .ini files, saves and more are convoluted and counter-intuitive.
As discussed about it a few years back, when Shima pulled SSF’s source code from Github as soon as City Connection contracted him to work on the Saturn Tribute releases.
It’s sad, it would had been SO much better if instead of Shima, M2 was to work on such titles. I do mean that Saturn emulation has suffered from severe input lag since the beginning, Ymir is the only that feels like it should and it doesn’t even have internal overclocking or runahead features yet.
I just uploaded this short video showing the combo on Ymir:
Game had already severe lag on Saturn. Steam version is a little better compared to Switch and Ps4. I was mostly referring to emulation issues as SSF has already few years advantage.
It should add a runahead or sync option like most emulators do but in its current closed source and by one developer only, it is difficult
Emulator is far too insulated,like most Japanese emulators (Tsugaru, Sharp X6800, Ootake etc)
It’s a matter of identifying the problems. Both have similar performance, and the differences are too slight to justify saying that either one is too slow. You may have configuration issues.
I was reading the Mednafen forum, version 1.29.0 breaks several games, it seems to be related to the Extended RAM cartridge, I didn’t look into it too deeply, those errors are fixed in 1.32.1.
If that were the issue, but you’re comparing emulators, and the easiest and most accurate way to check input lag, without suffering from additional hardware output, is by advancing frames.
Edit:
The input lag of mednafen/beetle is lower than that of Ymir.
Try performing this combo in Arcade mode. I suspect this is an old issue with RetroArch.
Differences are not slight:
a 30 fps difference tells me that they do not have similar performance.
No, but you are welcome to do some tests comparison with uncapped framerate.
I believe ymir is a bit faster than RA beetle saturn when i tested them on i7-7th gen. Ssf and yabasanshiro (too unstable, could crash anytime) could keep solid 60 fps while ymir could mostly, if you had disabled some options like sh2 cache. Beetle couldn’t except if you run some 2D, it had better compatibility than ymir though.
I’ve noticed that Beetle-Saturn doesn’t handle multithreading the same way as standalone Mednafen, so it can be a bit laggy if your CPU doesn’t have a high clock speed for good single thread performance.
Another option to improve performance would be to integrate the dynarec from Yabause into Beetle Saturn, which I started a whole thread about. The dynarec does work, but a problem with dynarecs in general is that the assembly code can introduce some tricky dependencies on the underlying operating system and shared libraries. Some developers might consider this a ‘messy’ solution that risks breaking due to OS upgrades or changes to the build environment.
Making the emulator multithreaded risks introducing bugs due to thread synchronization issues, so developers can also be reluctant to do this.
There are various ways to improve performance, but it does come at a cost of complexity and requires more time for testing and debugging.
It would be very logical for Ymir to be faster than Mednafen.
Mednafen is an emulator built from scratch and is open source, while Ymir already knows how everything should be done, so it can do it faster and more efficiently.
Ymir is in the Playable phase, Mednafen aims for 100% error-free, it has been around longer, has more corrections and therefore more code, so it is logical that it is heavier. And Mednafen supports Arcade STV (not implemented in RA), which means more code.
Is “uncapping the framerate” the same as “Fast-Forward” with the space bar? It’s not a good idea to compare a core with an external emulator, as they can be completely different functions. The important thing is performance at normal speed and monitoring CPU, RAM, and even GPU consumption.
The type of processor influences the performance of the emulator. Ymir may not run well on a P4 Dual Core.
An emulator can consume more resources, but that doesn’t necessarily mean it’s slower. It may be a more accurate emulation or use more resources for better stability.
warmenhoven got a libretro port working really quickly and has opened a pull request to get it on the upstream repo: https://github.com/StrikerX3/Ymir/pull/746
Someone just happened to ask about ymir on the libretro Discord at the right time. warmenhoven saw that and when looking at the code realized it wouldn’t be hard to libretro-ize.
Wow… i need to ask about an Ares N64 libretro port then when warmen is around 
That’s great! More cores getting ported is always good.
The link/job/build seems to have been deleted couple of hours ago though. For anyone who wants to try the core, this link currently works. Just click on download artifact and select the platform.
Here’s a link to the latest pipelines/builds in case this one expires too.
Tried it and it crashes with any game. Is there also a proper info file?
I haven’t tested myself yet, but you probably have to make your own info file for now (could copy and edit the mednafen-saturn one).
I dunno what kind of bios it needs either. Same as the standalone I would expect.
Yeah, for the info file, I just copied/modified the saturn_mednafen one (remember to update the core info files from the RA updater in order for the change to actually take effect if you do it this way),
Though so far it doesn’t really matter anyway because I get the exact same results as petran791 -it just closes/crashes as soon as I try to load any game. Doesn’t matter the region or the format. The core does seem to load correctly on its own: it says ymir 0.3.0.
I’ll try to launch a game with --verbose. See if it says it’s missing some file(s) maybe. Other than that, I would try as Awakened suggested to use the same bios as the stand alone. Maybe it’s just expecting a different filenames as mednafen.
Here’s the debug info -everything below is from the moment the core is loaded then after the content/game tries to load. It does appear to accept the same bios as mednafen.
[libretro INFO] [Ymir] Loaded BIOS: sega_101.bin
[libretro INFO] [Ymir] CHD: Failed to open file: invalid data
[libretro INFO] [Ymir] BIN/CUE: [Line 1] CATALOG 0000000000000
[libretro INFO] [Ymir] BIN/CUE: Skipping CATALOG
[libretro INFO] [Ymir] BIN/CUE: [Line 2] FILE “Alien Trilogy (USA) (Track 01).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 01).bin - 126772 800 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 3] TRACK 01 MODE1/2352
[libretro INFO] [Ymir] BIN/CUE: Track 01 - MODE1/2352
[libretro INFO] [Ymir] BIN/CUE: [Line 4] INDEX 01 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 5] FILE “Alien Trilogy (USA) (Track 02).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 02).bin - 233553 60 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 6] TRACK 02 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 02 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 7] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 8] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 9] FILE “Alien Trilogy (USA) (Track 03).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 03).bin - 229390 56 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 10] TRACK 03 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 03 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 11] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 12] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 13] FILE “Alien Trilogy (USA) (Track 04).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 04).bin - 208787 04 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 14] TRACK 04 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 04 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 15] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 16] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 17] FILE “Alien Trilogy (USA) (Track 05).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 05).bin - 251569 92 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 18] TRACK 05 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 05 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 19] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 20] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 21] FILE “Alien Trilogy (USA) (Track 06).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 06).bin - 236564 16 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 22] TRACK 06 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 06 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 23] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 24] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 25] FILE “Alien Trilogy (USA) (Track 07).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 07).bin - 239715 84 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 26] TRACK 07 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 07 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 27] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 28] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 29] FILE “Alien Trilogy (USA) (Track 08).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 08).bin - 313380 48 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 30] TRACK 08 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 08 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 31] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 32] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 33] FILE “Alien Trilogy (USA) (Track 09).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 09).bin - 458804 64 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 34] TRACK 09 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 09 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 35] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 36] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 37] FILE “Alien Trilogy (USA) (Track 10).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 10).bin - 300938 40 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 38] TRACK 10 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 10 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 39] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 40] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 41] FILE “Alien Trilogy (USA) (Track 11).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 11).bin - 262812 48 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 42] TRACK 11 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 11 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 43] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 44] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 45] FILE “Alien Trilogy (USA) (Track 12).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 12).bin - 288261 12 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 46] TRACK 12 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 12 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 47] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 48] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 49] FILE “Alien Trilogy (USA) (Track 13).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 13).bin - 240797 76 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 50] TRACK 13 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 13 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 51] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 52] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: [Line 53] FILE “Alien Trilogy (USA) (Track 14).bin” BINARY
[libretro INFO] [Ymir] BIN/CUE: File Alien Trilogy (USA) (Track 14).bin - 321636 00 bytes
[libretro INFO] [Ymir] BIN/CUE: [Line 54] TRACK 14 AUDIO
[libretro INFO] [Ymir] BIN/CUE: Track 14 - AUDIO
[libretro INFO] [Ymir] BIN/CUE: [Line 55] INDEX 00 00:00:00
[libretro INFO] [Ymir] BIN/CUE: Index 0 - 00:00:00
[libretro INFO] [Ymir] BIN/CUE: [Line 56] INDEX 01 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Index 1 - 00:02:00
[libretro INFO] [Ymir] BIN/CUE: Final FAD = 206524
debug | SMPC | Setting area code to 4
info | Media | Filesystem built successfully
[INFO] [Environ]: SET_MEMORY_MAPS.
[INFO] [Environ]: SET_SUPPORT_ACHIEVEMENTS: yes.
debug | SWRender-VDP1 | Enabling threaded VDP1 rendering
edit: testing a few more games: same results. Maybe the last line could be the problem:
debug | SWRender-VDP1 | Enabling threaded VDP1 rendering
If there are core options and if there’s an option to disable threaded VDP1 rendering it might be worth it to test while it’s disabled…problem is: the way opt files works is whenever no .opt file is present a default .opt file is created…only in this case the core seems to crash before that happens so there’s nothing that can be manually edited.
Well, I think I know why the warmenhoven ymir core crashes at start for me. Ymir requires at least win10. Says so in the github page.
Tried the standalone -there are two windows versions: AVX2 and SSE2 -they both crashes at start for me and in my experience any core that’s based on a standalone which require Win10 and up will also not work on previous Windows versions when ported to libretro.
It also crashes on Win11
I’d check if you’re able to run the standalone on Win11 first.
If the standalone works for you but the core doesn’t, then not much else can be done I guess.
edit: Also, if you run RetroArch from a command prompt, like so:
you will see some log information in the prompt window even after the crash. Mine says: Enabling Threaded VDP1 Rendering just before it crashes. Maybe see if you get the same error.
For anyone who wants to try: to launch a command prompt, just right click on the folder containing the RA executable while holding r-shift (haven’t tried on Win11 but I’m guessing it still works) then choose “open window command menu here” then in the prompt type
retroarch --verbose
In my case it progresses further but crashes right after the last line:
[INFO] [Core] Loading dynamic libretro core from: “i:\emulators\retroarch64\cores\ymir_libretro.dll”. [INFO] [Override] Redirecting save file to “i:\emulators\retroarch64\saves\Ymir\Darius Gaiden (USA).srm”. [INFO] [Override] Redirecting save state to “i:\emulators\retroarch64\states\Ymir\Darius Gaiden (USA).state”. [INFO] [Environ] SET_SUPPORT_NO_GAME: no. [INFO] [Environ] SET_CORE_OPTIONS_V2. [INFO] [Environ] SET_CONTROLLER_INFO. [INFO] [Environ] SET_INPUT_DESCRIPTORS. [INFO] [Environ] SET_DISK_CONTROL_EXT_INTERFACE. [INFO] [Environ] GET_LOG_INTERFACE. [INFO] [Content] Content loading skipped. Implementation will load it on its own. [INFO] [Environ] GET_SYSTEM_DIRECTORY: “i:\emulators\retroarch64\system”. [INFO] [Environ] GET_SAVE_DIRECTORY: “i:\emulators\retroarch64\saves\Ymir”. [INFO] [Environ] SET_PIXEL_FORMAT: XRGB8888. [libretro INFO] [Ymir] Loaded BIOS: sega_101.bin debug | SMPC | Setting area code to 4 info | Media | Filesystem built successfully [INFO] [Environ] SET_MEMORY_MAPS. [INFO] [Environ] SET_SUPPORT_ACHIEVEMENTS: yes. debug | SWRender-VDP1 | Enabling threaded VDP1 rendering debug | VDP2 | Enabling threaded VDP2 rendering [INFO] [SRAM] Skipping SRAM load. [INFO] [Core] Version of libretro API: 1, Compiled against API: 1 [INFO] [Core] Geometry: 320x224, Aspect: 1.333, FPS: 59.82, Sample rate: 44100.00 Hz. [INFO] [Video] Set video size to: fullscreen. [INFO] [Vulkan] Vulkan dynamic library loaded. [INFO] [Vulkan] Found GPU at index 0: “NVIDIA GeForce RTX 5060 Ti”. [INFO] [Vulkan] Using GPU index 0. [INFO] [Vulkan] Using GPU: “NVIDIA GeForce RTX 5060 Ti”. [INFO] [Vulkan] Queue family 0 supports 16 sub-queues. [INFO] [Vulkan] Got 2 swapchain images. [INFO] [Vulkan] Using resolution 3440x1440. [INFO] [Vulkan] Using BGRA8888 format. [INFO] [Vulkan] Loading stock shader. [INFO] [Input] Found joypad driver: “dinput”. [INFO] [Video] Found display server: “win32”. [INFO] [Audio] Set audio input rate to: 44100.00 Hz. [INFO] [WASAPI] Client initialized (shared, FLOAT, 48000Hz, 32.0ms). [INFO] [Audio] Started synchronous audio driver. [INFO] [Microphone] Initialized microphone driver. [INFO] [Display] Found display driver: “vulkan”. debug | SMPC | Processing RESDISA
Hm, look like it crashes further down the line than me but still before it had time to create an .opt file (which might have had an option to disable threaded rendering on vdp1 maybe).


