RetroPie on x86 and (adjustable) refresh rate?
-
I'm happily using RetroPie on a Pi 400 with lr-puae2021 for Amiga emulation, and it's fantastic...I've even gotten refresh rate changes working extremely well for true native NTSC and PAL display.
The one problem is compatibility - when pushing things to their limit, the WinUAE 2.6.1 code base the 2021 version is based on is woefully out of date.
The only way to realistically run the current full lr-puae core is with (much) more horsepower, which means x86. I have a machine I could dedicate to the purpose, but I'm confused on how to solve the refresh rate issue.
My goal is to create a x86 box that works near-identically to RetroPie on Raspberry Pi - 100% dedicated, no X11 (which I assume means SDL2), EmulationStation and only the one core.
I handle refresh rates today with a custom-made runcommand-onlaunch script that picks up 'hints' from the filename being launched and then uses tvservice to set the display mode (and thus refresh rate) automatically. It works wonderfully, the only limitation is you can't do on-the-fly refresh switches.
Unfortunately, tvservice is very specific to the Raspberry Pi, being made specifically for the Pi's VideoCore chipset, and thus can't be used to set the mode and refresh just prior to starting the core for a specific game.
I've tried to do some research on this to see how people are solving this problem with EmulationStation/RetroArch on x86, and it appears one of the leading suggestions is xrandr...which is X11-specific and not really the 'native' solution I'm looking for.
What I really want is a work-alike for tvservice on x86 that works in console mode , allowing me to use onlaunch and onend scripts to directly manipulate the video output.
Does such a thing exist?
-
@rhester72 said in RetroPie on x86 and (adjustable) refresh rate?:
I've tried to do some research on this to see how people are solving this problem with EmulationStation/RetroArch on x86, and it appears one of the leading suggestions is xrandr...which is X11-specific and not really the 'native' solution I'm looking for.
You could use a simple KMS/DRM solution (i.e. no display manager and not necessarily SDL2), but we don't support or test this configuration and there's no obvious advantage by using it IMHO. If you wish a adjustable video resolution/refresh rate, then you need
xrandr
(Wayland doesn't support yet resolution switching).My advice would be to install Debian/Lubuntu and a lightweight DM (like Xfce, LXQT or Openbox) and configure it to auto-login and auto-start EmulationStation.
From the
runcommand
launch menu you can choose the resolutions to change when starting a game; if the video mode is not listed there, you can add custom modes toxrandr
and switch the resolution using the same method as on a Pi (with anon-start
script). -
@mitu Thank you!
It's possible I'm confused by the implementation vs. the Raspberry Pi version...EmulationStation uses X11 on x86? I assumed no, and that was my whole motivation for not doing so (plus the obvious memory and time burn from launching an X display you aren't going to use anyway). If that's not the case, it sounds like xrandr is absolutely the way to go (and the closest analog to what I'm doing today).
onstart will almost certainly be required, because my display lies and says it can't do PAL ;)
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.