RetroArch on Pinephone, no cores?

I made a post 6+ months ago asking for help troubleshooting Retroarch on the Pinephone, but I ended up never replying and leaving the issue alone. I just came back to test if things are different and have a bit of an update.

Retroarch no longer crashes! Now that it was running I was able to configure the online updater to work, but now I’m finding out there are no available pre-built cores for this device. I tried setting the buildbot core to both of these URLs, but neither worked:

http://buildbot.libretro.com/nightly/linux/armhf/latest/

http://buildbot.libretro.com/nightly/linux/armv7-neon-hf/latest/

Then I checked, uname -a reveals:

Linux manjaro-arm 5.15.7-2-MANJARO-ARM #1 SMP PREEMP Sat Dec11 16:52:20 UTC 2021 aarch64 GNU/Linux

I think this means that Im running aarch64 architecture, which is not listed in the buildbot?

Im willing to take a crack at learning to compile a core or two when I have time, but if I’m on the right track, is there any way we can have aarch64 linux builds added to the buildbot?

Yes armv7 and armv8 libretro cores are not yet integrated to the new buildbot.

In the time being, you might try pmOS which is based on Alpine Linux as they provide libretro cores and RetroArch packages.

It will be nice to post video if you succeed :wink:

Thank you !

I’ve got an update:

By telling retroarch to stick to ~/.config/retroarch/* for internal settings, I was able to use the online updater to update/fix the broken menus(missing icons).

I was able to (mostly) follow the instructions here to download and successfully compile some cores. Once compiled, I copied “nxengine_libretro.so” to:

~/.config/retroarch/cores/

and it showed as an installed core. I then used the Online Updater to download CaveStory. However, when I try to launch Doukutsu.exe, it says “No Cores Available”.

What am I missing, or what should I do next to troubleshoot this?

1 Like

Sounds like you’re missing the core info files.

1 Like

That was it! CaveStory works! Runs like molasses but it runs!

Next things I’d like to figure out:

Controller support-
Running Android on the same device, my Razer Kishi is recognized and just works. On Manjaro, it says “Razer Kishi is not configured”. My theory is that this rather exotic controller made for Android devices just hasn’t been added to the autoconfig files for Linux yet. Will reply back with an update once I’ve done more digging.

Performance-
Running via Android (again, same device) Retroarch/Cavestory runs much better, to the point sound isn’t choppy at all. Framerate still chugs a bit under duress, but it’s certainly playable. Alternatively, running the Flatpak package of CaveStory on Manjaro runs even better (but no controller support). Is there anything I can do to improve performance for Retroarch? My hopes are not raised, but if there are ideas to try, I’m willing to try.

Touch support (extra credit)-
I personally dislike using touch screen controls, but is there any way for Retroarch to detect certain linux devices upon starting for the first time? This way if it opens on a linux device with a phone or tablet form factor, it could maybe default to touch controls so users don’t need to finagle a keyboard connection just to navigate retroarch.

1 Like

Another update:

I was able to connect a mouse+keyboard via bluetooth so I could plug the Kishi in and have keyboard controls, and was able to successfully map out the controller inputs. How/where do I go to help share my button mapping so it will autoconfig properly for others?

Also, I tried enabling Threaded Video and suddenly it runs great. That was probably good enough for me.

Now, another extra credit question: If the Pinephone screen is locked, the game continues to run in the background, which is less than ideal for a phone. Would that be considered a bug for Retroarch, or for Manjaro+Plasma Mobile?

1 Like

https://github.com/libretro/retroarch-joypad-autoconfig is where you would submit the autoconfig profile (which we greatly appreciate, btw)

I think there’s a setting in RetroArch that controls whether it continues running when it loses focus. I’m not 100% sure that locking the screen counts as losing focus, but I’d say that’s a good place to start.

I do not seem to have privileges to upload or even make a branch to make a pull request to that page. just added the contents of the .cfg file as a bug report here.

You have to fork the repo, make your changes, then make a PR from there.

Gotcha, I was able to figure it out. Made a fork + pull request, and I closed the “issue” I made about it. All that’s left is it getting merged, I think.

And I went to file a bug report with KDE. There is no way for the pinephone to “suspend” things as of now so that’ll be a longterm feature request.

I also noticed that KDE will go to sleep after a minute of gameplay, it does not bother to stay awake if I am playing with a controller. KDE’s hibernation function doesn’t respect gamepad inputs the same way as keyboard key presses. Turns out this has been a known bug report since 2013! I might have to get creative to find a workaround there.

1 Like

I have another update; I made a new bug report for hibernation toggling despite the gamepad being in use, and time will tell if that can get addressed. I had another thought though:

I realized that the Pinephone already knows better than to go to sleep if a youtube video is playing in the web browser, so I started wondering if something like that was possible for Retroarch.

“What if the Pinephone knew better than to go to sleep while Retroarch is running?”

I asked around on the Plasma Mobile matrix about this, and they said it is absolutely possible, but would need to be implemented on the App’s side of things. They used KDE Discover and Angelfish browser as examples that already do this. Would this be possible/worth implementing in Retroarch?