I found some time to test this core and the input lag is the same as in any other Saturn core i ever tried. That’s at least 3 frames of lag in all games, which is higher than any other system/emulator.
Could you provide your settings for Beetle Saturn please? Are you using Vulkan/GL/DX? What else? I tried Steamgear Mash myself and it gives me 3 frames of lag. You said it only gives you 1 frame of lag, i have never seen this on any Saturn core.
If you’re using the frame advance method for testing, the RA settings, core options, monitor, GLcore or Vulkan, video drivers etc you’re using will have no impact on the results.Testing this way only measure the internal game’s lag. So it’s not surprising you got the same exact results with the ymir core.
Testing with frame advance, it’s important to understand what results you are actually getting To quote my example with Steamgear earlier in the thread.
So during frame advance:
1st press is current frame -the frame which register the key/button press. That frame is already been displayed so it’s not possible to ever see any change as a result of it.
2nd press would be next frame -not 1 frame of lag. Very, very few games will have next frame’s reaction/output (even more rare with PS1/Saturn era games compared to NES era games) You can test this in the stage selection of Mega Man (1) on NES. I believe when you’re pressing left/right during the stage selection it is next frame. So you should see the change after the 2nd press. During the actual gameplay (like if you’re jumping) the game has a 1 frame of internal lag I think. So it’s also important to keep in mind that the internal lag can vary even within the same game. And that many Saturn games did had a lot of lag on hardware, including when they were PSX/Saturn multi-platform releases (one possible reason for that or part of a reason anyway is that often they were ports of games first developed on PSX and those ports could often be un-optimized)
3rd press -if you see a change after the 3rd press that means the game -or at least this specific part of the game, has 1 frame of delay.
For the bomb animation change, 3 frames of lag would mean you pressed a key during frame advance 5 times.
As for setting: My setup is pretty common really. I have an old 10+ years ASUS monitor that’s supposed to be relatively low lag (around 8-10ms).
Running in exclusive fullscreen. Usually using glcore with beetle saturn (with hard sync on of course). In a handful of games that are more demanding on my PC and can’t reach 60fps with glcore I use Vulkan then. I think using maxswapchain = 2 should give the same lag as glcore with hard sync but I have never tested it properly (with a high speed recording -frame advance wouldn’t tell you anything in this case).
As for core options, the only relevant option would be to turn on midframe synchronization. Honestly I don’t how much impact it has. Best case scenario it saves maybe 6-7ms so it will be a frame faster around 50% of the time (again, this will not show up with frame advance at all).
tl;dr
During frame advance, you should see the little bomb icon animation after the 3rd press from this ![]()
to this:
![]()
Ok same settings on a fast, VRR monitor.
The game reacts on the 4th press (jump), so 3 frames of lag. Is that correct? Because you wrote about only 1 frame of lag and that seemed way too fast to me.
BarbuDreadMon has written in an earlier thread that minimum lag on hardware is supposed to be 2 frames for 2D and 3 frames for 3D according to the Kronos discord.
I don’t feel my Saturn as laggy as any emulator though. My N64 and PS1 feel the same but the Saturn feels more responsive than emulation. I don’t know why this is the case and i always assumed Saturn emulators can’t get this right.
Okay I just re-tested
Shooting and turning around started their animation on the 4th press so 2 frames of lag. Jumping and bomb switch animation on the 5th press so 3 frames of lag. So indeed, not 1.
However:
Here’s a much simpler test still with SteamGear Mash since we’re just interested in measuring internal lag here. In the menu, where you can select one of 4 saved games or start a new game:
Pause emulation, press and hold up or down on your gamepad. While holding up, press frame advance on the keyboard 3 times. You should see the highlighted selection change after the 3rd frame advance press which means 1 frame of delay.
edit: So, let’s try a real world scenario -forget frame advance:
From the moment you power on the system. We begin counting in milliseconds. 1 frame roughly equals 16ms on a 60fps display.
Say you press ‘up’ at 40ms or, in the middle of the 3rd frame (1st frame 0-16ms, 2nd 16-32ms 3rd: 32-48)…
Afaik it’s not possible to have the visual output of your input show up on the same frame (in this case in less than 8ms). Console or arcade doesn’t matter: you can’t have the output within that 16ms slice in which you pressed the input.
The 4th/next frame begins: meaning we are at time 48ms. So far from the moment of your input ~8ms have elapsed. If you saw a result then, it would be considered ‘next frame’ response (Like in the Mega Man 1 stage selection).
The 5th/next frame after that we are at time 64ms. 24ms have elapsed since the user key press So one whole frame plus half a frame since you pressed in the middle of the 3rd frame. So, that counts as 1 frame of lag. Note that because the user can press at the very beginning or toward the end of a frame/16ms slice, 1 frame of lag could be anywhere from around 17ms to worse case scenario around 31ms in real time. So input lag can be inconsistent even on hardware depending on when you press the key within a frame,.
I count every press as 1 potential frame of lag because there are cores and games that react on the very first press. Bubble Bobble for instance, on MAME and FBNeo, reacts on the first frame advance press, thus if a game doesn’t react on the first press it should count as 1 frame of lag.
So if something reacts on the 3rd press/frame that should equal to 2 frames of lag.
BTW, i pause using the “P” button and then “K” for the frames. The paused frame shouldn’t count.
Seems the Warmenhoven core is still being actively worked on. Last commits were from a few days ago. Couldn’t find a compiled build/job that wasn’t removed. But if anyone has one or wants to take a shot at compiling the core.
Update regarding the previous attempts to get the core(s) running on Win8/7.after trying on Win10.
First, there are two libretro forks it seems: One by Warmenhoven
The other brimir by coredds
Regarding ymir_libretro:
So, as mentioned previously, I couldn’t get the core to run on Win8 (crash on launch though it did load at least). Error seemed related to threaded VDP1/2.
Trying the ymir_libretro core on Win10 was able to launch the core, though it crash after the Saturn bios/booting sequence. This way I was at least able to create a core opt file and mess with the core’s options and sure enough, the threaded VDP1/2 rendering options are enabled by default.
So, these are the defaults opt settings:
ymir_audio_interpolation = “linear”
ymir_audio_step_granularity = “0”
ymir_cartridge = “auto”
ymir_cd_speed = “2”
ymir_cdblock_lle = “disabled”
ymir_deinterlace = “disabled”
ymir_region = “auto”
ymir_rtc_mode = “virtual”
ymir_sh2_cache = “disabled”
ymir_threaded_deinterlacer = “enabled”
ymir_threaded_vdp1 = “enabled”
ymir_threaded_vdp2 = “enabled”
ymir_transparent_meshes = “disabled”
If the core crashes at start for you try with these:
ymir_audio_interpolation = “linear”
ymir_audio_step_granularity = “0”
ymir_cartridge = “auto”
ymir_cd_speed = “2”
ymir_cdblock_lle = “disabled”
ymir_deinterlace = “disabled”
ymir_region = “auto”
ymir_rtc_mode = “virtual”
ymir_sh2_cache = “disabled”
ymir_threaded_deinterlacer = “disabled”
ymir_threaded_vdp1 = “disabled”
ymir_threaded_vdp2 = “disabled”
ymir_transparent_meshes = “disabled”
The core opt file should be called ymir.opt
Launching with threaded vdp disabled I was able to start the core on Win8 but it still crashed after the bios though.
Bimir otoh did not crash for me on (a Guest) Win10 but performance -even during the booting intro was much worse than on ymir_libretro but I’d have to test on an actual host Win10 to judge properly. Unlike ymir libretro, the bimir core didn’t had any threaded vdp1/2 rendering settings in its core options, so maybe the poorer performance was due to these being disabled .
The artifacts there live for literally 3-4 hours, the latest version that I managed to download was dated April 28, 2026 - it shows good performance results, but still does not have the ability to upscale the resolution, I literally have several titles in the collection of this console, and they all run on this core. But I’m certainly glad that development continues.
Ah, bummer for the artifacts’ duration.
Also forgot to mention; Ymir (both standalone and the warmenhoven core) supports an optional “CD block ROM” file. Something with emulating the cd-rom more accurately. At first I didn’t know what file it actually wanted but digging a bit I found out the (standalone and core) emu expects a MAME set called “satcdb.zip”, itself containing three files.
For the ymir core it says to place the file within a folder called ‘cdb’ within RA system folder so: RA_folder/system/cdb/satcdb.zip
After that, once you have the file placed in the right folder, you got to also enable it in the core’s option – ymir_cdblock_lle = “enabled”
keep in mind that the CD block feature disables cd audio in some chd games
Afaik, pgxp is theoretically impossible with saturn emulation.
How do you download the Files from gitlab?
Not the same as Github
As I mentioned earlier, the artifacts on GitLab Warmenhoven are only available for about 3–4 hours, I managed to download the latest release core from 04/28/2026 (commit 3588b89a); subsequent commits (as of today) are in the test branch and are not actually compiled into artifacts.
I usually monitor all Libretro core builds via the link https://git.libretro.com/explore.
If I see that a core I’m interested in has updates, I go to its page (by clicking on the name), check the “History” section at the top to see what was changed and when, and then switch to the “Build” section on the left -> Pipelines. This page shows all the latest builds and their completion status, and on the right there is an Actions button; clicking it brings up a menu with the option to download the artifact for the desired operating system (if available).
Since Warmenhoven’s page is currently empty, I uploaded his latest compiled core to the cloud; it’s available via the link for 7 days starting 10/05/2026, link https://dropmefiles.com/H8RE9. There’s a zipped archive with the Windows x64 core DLL (apologies to those with other OSes); you should know what to do with the core and how to use it.
Downloaded that but asks for a Password to Unzip the File
Look carefully at the name of the downloaded archive, the password is indicated there (pass 123)
Awesome, the April 28 build no longer crash for me on Win10 (still does and probably always will on Win8/7 since the standalone explicitly need at least Win10). Tested both cue/bin and chd.
That was also said for PSX
But someone came, did not know that everyone said „it is not possible“ and he did it
Never say never
Isn’t pgxp the ps1 “polygon wobble” issue correction? i think the Saturn renders 3d quite differently than that.
