New Hypseus and lr-Daphne to add on Retropie-Setup
-
@mitu said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
I assume that RetroPie does nothing special to SDL rather than compile time arguments ?
We have a few patches added so it's more than just the compile flags.
EDIT: are you sure your setup is using the KMSDRM driver ? You would need to modify the
config.txt
boot configuration file to enable it, it won't work out-of-the-box on a Pi3 with the RetroPie image.Ok, I think I have pretty much seen that it is not necessarily related to KMSDRM, but is related to SDL version and 32bit land.
I'm not clear how to proceed on this in RetroPie.
I want to be able to configure various SDL commits from github to trace the issue, so kinda need a means to be able to do this in a controlled manner. In the method I describe above, I can just switch SDL libraries to whatever version I need to test, and back. How can I do this with RetroPie specific changes and have your local patches, and compile flags, available in those libraries easily?
I am certainly not qualified to tease through all the SDL commits to locate specific changes here.
Whether I do this on a Pi3 or Pi4 distributions seems mute at this point as they both exhibit the issue in later versions of SDL after the previous 2.0.10 package.
Edit: I have just tested SDL 2.0.20 libraries against both 32bit and 64bit Windows builds of Hypseues. And the issue isn't there. This is looking implementation specific....
-
@dirtbagxon If the issue appears in vanilla SDL, as you tested from 2.0.16 on, then you wouldn't necessarily need the RetroPie patches.
Regardless, the SDL tree used by RetroPIe is a clone of the main one from github.com/libsdl-org/SDL and you can find it at https://github.com/retropie/sdl. There are separate branches for each version, with the RetroPie patches applied, you can use the 2.0.20 branch and you'll get the tree used in the SDL packages we distribute with RetroPie-Setup. -
@mitu said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon If the issue appears in vanilla SDL, as you tested from 2.0.16 on, then you wouldn't necessarily need the RetroPie patches.
Sure, I just wanted to get specific, and in-line with your previous comments, on available features that are enabled outside of those auto-detected.
Regardless, the SDL tree used by RetroPIe is a clone of the main one from github.com/libsdl-org/SDL and you can find it at https://github.com/retropie/sdl. There are separate branches for each version, with the RetroPie patches applied, you can use the 2.0.20 branch and you'll get the tree used in the SDL packages we distribute with RetroPie-Setup.
Thanks for this, I will take a look.
I am struggling to get any difference whatsoever by enabled/disabling SDL features in the Window/Renderer/Surface/Texture functions in SDL on this version. CPU utilisation just goes through the roof on 2.0.16.
Are there any other SDL2 emulators in RetroPie that stream video at this resolution and bitrate in SDL you are aware of?
I am asking around the Batocera and Recalbox devs to see if they are experiencing any issue after 2.0.16 - it is almost like hardware acceleration has just been halved in RetroPie.
Weird....
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Are there any other SDL2 emulators in RetroPie that stream video at this resolution and bitrate in SDL you are aware of?
PPSSPP maybe, but also EmulationStation itself when displaying video in the gamelist - video frames are rendered via VLC and rendered to a GL texture.
-
@mitu said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Are there any other SDL2 emulators in RetroPie that stream video at this resolution and bitrate in SDL you are aware of?
PPSSPP maybe, but also EmulationStation itself when displaying video in the gamelist - video frames are rendered via VLC and rendered to a GL texture.
But these will H.264 and using mmal or v4l/v4l2 I assume?
-
@dirtbagxon For ES, it's MMAL through
libvlc
oromxplayer
, for PPSSPP I don't know for sure.EDIT: Maybe give it a try also with the current SDL dev branch, just in case of a regression that might have been fixed recently, after the 2.0.20 release.
-
Ok, so I have located the commit that causes the issue, it was from 2.0.15:
https://github.com/libsdl-org/SDL/commit/e87c7940f59db12670089a4ed79c91dfbca92b33
If I revert out this "fix" on SDL 2.0.21, i.e. HEAD of libsdl-org/SDL, it all stills works as expected.
Executing: /opt/retropie/emulators/hypseus/hypseus.sh "/home/pi/RetroPie/roms/daphne/dle21.daphne" [version] Hypseus Singe: v2.8.1-RPi - SDL(LD): 2.0.21 [console] Setting alternate home dir: /opt/retropie/emulators/hypseus [console] Forcing 4:3 aspect ratio. 2022-02-13 18:12:06.278 INFO [27986] [reset_logfile@324] Version v2.8.1-RPi 2022-02-13 18:12:06.279 INFO [27986] [reset_logfile@328] Command line: /opt/retropie/emulators/hypseus/hypseus.bin dle21 vldp -framefile /home/pi/RetroPie/roms/daphne/dle21.daphne/dle21.txt -homedir /opt/retropie/emulators/hypseus -fullscreen -volume_nonvldp 5 -min_seek_delay 600 -blank_searches -blank_skips -force_aspect_ratio
So this detection is obviously not optimal in the the 32bit RetroPie environment. Are you guys able to offer a correction ?
I am no dev of SDL, but I see you guys have some experience on the local patches of SDL.
Wondering how to proceed on this ?
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
So this detection is obviously not optimal in the the 32bit RetroPie environment. Are you guys able to offer a correction ?
Not sure what correction could we add - the RetroPie environment is just a plain Raspbian Lite (Buster), using the default GL libraries/drivers provided by the OS. Is there any test - from one of the ones provided by SDL - that would help reproduce the bug ?
For now we rolled back the 2.0.20 upgrade (due also to https://retropie.org.uk/forum/topic/32209/), so this issue will not affect any more user for now.
-
@mitu said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
So this detection is obviously not optimal in the the 32bit RetroPie environment. Are you guys able to offer a correction ?
Not sure what correction could we add - the RetroPie environment is just a plain Raspbian Lite (Buster), using the default GL libraries/drivers provided by the OS.
Yeah, I was hoping you wouldn't say that :)
I'm not sure where to go from here. The aarch64 version works obviously with this "fix" and doesn't see the CPU utilisation or video stuttering. So maybe this is a 32bit SDL bug. I am nowhere near the pay-grade to talk to the SDL guys on this topic,
Is there any test - from one of the ones provided by SDL - that would help reproduce the bug ?
Nothing that looks relevant to me unfortunately...
For now we rolled back the 2.0.20 upgrade (due also to https://retropie.org.uk/forum/topic/32209/), so this issue will not affect any more user for now.
Ok, but I'm sure this will come up again. I guess we may just need to pull back the package at that time until RetroPie makes the jump to aarch64.
The "alternatives", one of which is full 64bit, aren't seeing the issue. The other is 32bit, but using a different drivers I believe, is stating they are not seeing the issue, but I am continuing to investigate on that side too.
Edit: From an old SDL dev - "SDL people won't do a fix for 32bit" - guess I'm screwed...... lol
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
I'm not sure where to go from here. The aarch64 version works obviously with this "fix" and doesn't see the CPU utilisation or video stuttering.
The difference between 32/64 is that there are no legacy BRCM drivers for 64bit, regardless of platform (Pi3/Pi4). I don't think it's a 32bit vs 64bit thing, more likely a legacy GLES vs Mesa (mainline) GLES driver thing.
The other is 32bit, but using a different drivers I believe, is stating they are not seeing the issue, but I am continuing to investigate on that side too.
Yes, it's the legacy Broadcom drivers vs the Mesa driver (enabled with the
kms
overlay). The Mesa drivers are the default in Bullseye, so that may explain why some users may not see the issue, even on 32bit.EDIT: since the bisected commit points to changes in
SDL_CreateTexture
, is there a specific code path in Hypseus where this gets used and causes the issue ? I haven't checked the code, so I don't know wether there's multiple uses ofSDL_CreateTexture
. -
Yes, it's the legacy Broadcom drivers vs the Mesa driver (enabled with the
kms
overlay). The Mesa drivers are the default in Bullseye, so that may explain why some users may not see the issue, even on 32bit.Ok, that makes sense. See you do know more about SDL than I.
So RetroPie uses the Legacy drivers ?
Are there any public intentions on a move from this ?
EDIT: since the bisected commit points to changes in
SDL_CreateTexture
, is there a specific code path in Hypseus where this gets used and causes the issue ? I haven't checked the code, so I don't know wether there's multiple uses ofSDL_CreateTexture
.I can explore that, but there are two pixel formats that are tied into the Daphne VLDP codebase and overlays, YUV and 8-bit.
SDL_PIXELFORMAT_YV12
SDL_PIXELFORMAT_RGBA8888I have looked at these in the past and they appear fairly ingrained to the legacy codebase.
Fairly basic as far as pixel formats go...
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Ok, that makes sense. See you do know more about SDL than I.
So RetroPie uses the Legacy drivers ?It uses the RaspiOS's Buster default - on Pi3 and earlier it's the 'legacy' drivers, on Pi4 is the MESA drivers. In RaspiOS Bullseye, the default is MESA drivers only.
Are there any public intentions on a move from this ?
We'll add support for RaspiOS Bullseye, but we'll see why the pixel format detection doesn't work with the legacy driver.
-
@mitu said in New Hypseus and lr-Daphne to add on Retropie-Setup:
We'll add support for RaspiOS Bullseye, but we'll see why the pixel format detection doesn't work with the legacy driver.
Thanks for looking into this.
There is definitely a huge CPU utilisation jump with that commit. I'm not certain what interest the SDL devs are gonna have in fixing legacy driver issues in mainline, if the overall performance is beneficial elsewhere...
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Thanks for looking into this.
I've run some tests and added my info in an issue. We can discuss it there, without hijacking the main topic.
-
@mitu said in New Hypseus and lr-Daphne to add on Retropie-Setup:
I've run some tests and added my info in an issue. We can discuss it there, without hijacking the main topic.
Ok, gottit.
Ok, now seen the correct #issue, not the one in libsdl-org.
So is this issue relating to Aleph One Marathon and eduke32 also ?
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
So is this issue relating to Aleph One Marathon and eduke32 also ?
No, that's a different problem related to the GL renderer chosen by default (https://github.com/libsdl-org/SDL/issues/5348).
-
@mitu said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
So is this issue relating to Aleph One Marathon and eduke32 also ?
No, that's a different problem related to the GL renderer chosen by default
Thanks @mitu for all the help in tracking down the SDL2 regression. I will try and commit the "work-a-round" shortly to the main branches.
As this regression has pretty much reduced the chances of getting ActionMax working effectively with SDL2 on the Pi, I have been working on a little side project.
An "unofficial" RetroPie scriptmodule that uses the SDL1 version of Singe packaged up specifically for ActionMax. SDL1 had better native YUV support so there is less overhead in handling this pixel format. This emulator also supports ABS mouse input , and integrated Sinden borders, for all the lightgun enthusiasts out there.
I have been running this on RPi3 RetroPie with no issues. Although this is SDL1 and has all the inherent issues of this version.
Users with 4:3 monitors may find
-ignore_aspect_ratio
will provide help in using the full screen real estate.The intention was to use this Daphne system
actionmax
emulator as a ROM specific choice in ES. It also uses the standard<game>.commands
files for individual customization and has an independent config file, using SDL1 keycodes, as does the original Daphne.
https://github.com/DirtBagXon/actionmax-piI know a few users who have asked for this, so enjoy.
-
@dirtbagxon I tried installing the actionmax emulator, and I can boot games just fine. However I'm having a little trouble with the controls. The default singeinput.cfg does not work with my controller, but when I copied the config from my hypinput.cfg file in, the trigger buttons, quit button, and confirm buttons worked, but the direction buttons do not work so I am unable to move the cursor. This is my singeinput.ini (copied from hypinput.ini):
[KEYBOARD] KEY_UP = SDLK_UP 0 0 -002 KEY_DOWN = SDLK_DOWN 0 0 +002 KEY_LEFT = SDLK_LEFT 0 0 -001 KEY_RIGHT = SDLK_RIGHT 0 0 +001 KEY_COIN1 = SDLK_5 0 9 #SELECT KEY_COIN2 = SDLK_6 0 0 KEY_START1 = SDLK_1 0 10 #START KEY_START2 = SDLK_2 0 0 KEY_BUTTON1 = SDLK_LCTRL 0 1 #B KEY_BUTTON2 = SDLK_LALT 0 3 #Y KEY_BUTTON3 = SDLK_SPACE 0 2 #A KEY_SKILL1 = SDLK_LSHIFT 0 4 #X KEY_SKILL2 = SDLK_z 0 5 #L KEY_SKILL3 = SDLK_x 0 6 #R KEY_SERVICE = SDLK_9 0 12 #L3 KEY_TEST = SDLK_F2 0 0 KEY_RESET = SDLK_0 0 13 #R3 KEY_SCREENSHOT = SDLK_F12 0 0 KEY_QUIT = SDLK_ESCAPE 0 0 KEY_PAUSE = SDLK_p 0 0 KEY_CONSOLE = SDLK_BACKSLASH 0 0 KEY_TILT = SDLK_t 0 0 END
Unless I'm misunderstanding and this emulator is meant for mouse support only, in which case I apologize in advance.
-
@g30ff said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon I tried installing the actionmax emulator, and I can boot games just fine. However I'm having a little trouble with the controls. The default singeinput.cfg does not work with my controller, but when I copied the config from my hypinput.cfg file in, the trigger buttons, quit button, and confirm buttons worked, but the direction buttons do not work so I am unable to move the cursor. This is my singeinput.ini (copied from hypinput.ini):
Unless I'm misunderstanding and this emulator is meant for mouse support only, in which case I apologize in advance.
Good to hear the installation went well.
This is old SDL1 tech - what the Pi likes it would seem :)
The game was mouse (or lightgun) only I'm afraid. On Hypseus I added the ability to use the joystick as a mouse. If was fun but was never really a playable option (Anyone disagree?). If enough people really think it's worth while I can take a look at porting these changes in, but this is a different, and much simplified version of the INPUT system in SDL1, and the original Daphne code.
https://www.daphne-emu.com:9443/mediawiki/index.php/Input
https://www.daphne-emu.com:9443/mediawiki/index.php/KeyListIn referring to that, your singeinput.ini won't work. It needs to use the simplified (original Daphne style) SDL1 config. MACROS and direction etc were all additions I made to Hypseus (and SDL2) . I have added your js buttons to what I think should work for you:
[KEYBOARD] KEY_UP = 273 0 0 KEY_DOWN = 274 0 0 KEY_LEFT = 276 0 0 KEY_RIGHT = 275 0 0 KEY_BUTTON1 = 306 0 1 KEY_BUTTON2 = 308 0 3 KEY_BUTTON3 = 32 0 2 KEY_START1 = 49 0 10 KEY_START2 = 50 0 0 KEY_COIN1 = 53 0 9 KEY_COIN2 = 54 0 0 KEY_SKILL1 = 304 0 4 KEY_SKILL2 = 122 0 0 KEY_SKILL3 = 120 0 0 KEY_SERVICE = 57 0 12 KEY_TEST = 283 0 0 KEY_RESET = 284 0 13 KEY_SCREENSHOT = 293 0 0 KEY_QUIT = 27 0 0 END
Note: The keycode values between SDL1 and SDL2 are vastly different, however the js buttons numbering remains the same. So you can take the 3rd field value and copy them between configs, as indeed you did here. But not the others.
Edit: Adding this information page: https://github.com/DirtBagXon/actionmax-pi/discussions/1
-
@g30ff said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Unless I'm misunderstanding and this emulator is meant for mouse support only, in which case I apologize in advance.
Joystick support has now been added for the target cursor.
If you update via RetroPie-Setup, it should start working :)
Trying to direct conversation on this emulator now to: https://retropie.org.uk/forum/topic/32241/actionmax-vhs-lightgun-emulator
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.