I’ll keep this thread up-to-date with RetroArch news and changes.
For now, I’ll start with a guide to build an up-to-date RetroArch
I assume you can SSH into your GS already.
Setup
First let’s setup the build environment
sudo apt-get install git build-essential
sudo apt-get build-dep retroarch
Then let’s clone the repo
git clone https://github.com/libretro/RetroArch.git retroarch
Enter the directory and run the following commands
cd retroarch
./configure --disable-vulkan --disable-ffmpeg --enable-xmb --disable-materialui --disable-flac --disable-parport --disable-vulkan_display --disable-videocore --disable-videoprocessor --disable-v4l2 --enable-x11 --disable-wayland --disable-vg --disable-jack --enable-kms --disable-discord
make -j4
sudo make install
It should take a while, the CPI is not a powerhouse but you should end up with a fully functional RetroArch stripped of some superfluous things that will not work (at least yet) on the GS
Configuration
First thing you should do is configure input, the config shipped in the GS is wrong.
By default RetroArch navigation controls are defined independently for keyboards and gamepads, but the GameShell gamepad is… well, a keyboard (they call it a keypad), So you need to make some changes:
For this guide I’ll assume you installed your buttons in SNES layout (YX/BA) as opposed to the default XBOX 360 layout (XY/AB), why? because it makes a lot more sense for RetroArch, and retro games, that’s all. If you didn’t then you’ll have to consider the differences in mapping for your own use case
The default RetroArch keyboard controls for navigation are:
===> navigate up
===> navigate down
===> navigate left
===> navigate right
===> select
===> back
And by default these correspond to the following buttons on the GameShell dpad:
===>
===>
===>
===>
===>
Problem is this is not too intuitive, so we’ll change inputs to match RetroArch gamepad defaults which are:
===> navigate up
===> navigate down
===> navigate left
===> navigate right
===> back
===> select
===> clear setting
===> search
===> reset setting
===> help
So navigate to Settings -> Input
I recommend the following changes:
- Bind Timeout: 5
- Max Users: anything other than zero
- Unified Controls: On (important)
Next step, configure input bindings, navigate to User 1 Input binds and configure them as follows:
You may just use the User 1 Bind All option, it should work if you made the changes I recommended before.
Finally regarding input, I recommend you to clear the Input Hotkey Binds, they are tailored for a full keyboard and you’ll get nothing but problems with them
So, navigate to Input Hotkey Binds and clear them by pressing
I recommend setting the last one at least, so you can return to the main menu. I used my menu key.
Next step: configure directories, you can do so by navigating to: Settings -> Directories
I recommend settings System, Savefile, Savestate, File Browser at the very least.
Just remember this is a linux filesystem, your user is cpi so you’ll find your dirs at /home/cpi/
Personally my folder layout is as follows:
/home/cpi
|
|---retroarch
|-------|-------games
|-------|-------saves
|-------|-------states
|-------|-------system
I usually setup all the folders in a similar layout but for explanation purposes this should suffice.
The config file is always at /home/cpi/.config/retroarch/retroarch.cfg
With these changes (remember to exit cleanly to save the configuration) you should be able to have a functioning RetroArch.
Tweaking
I’ve found the following tweaks to help performance and improve the experience:
Drivers
Configure drivers as follows:
Video
Make sure Threaded Video is enabled, Vertical Sync is on and Vertical Sync Swap Interval is at 1. Don’t enable Hard GPU Sync (btw, seems VSYNC is still kinda off with these drivers, hopefully that can be improved with time)
Audio
Just make sure Audio Sync is enabled, also try adjusting the Audio Resampler Quality to low. If you have crackling in some cores, try increasing the Audio Latency to 96 or 128.
.
Cores
You can install cores from the online updater, I forced a refresh build of them today. I’m trying to add a more optimized core tree on the buildbot.
Until that happens there are a few here that should be faster than the buildbot counterparts:
https://files.andressm.org/d/439d852b9ed243f9b296/
Results
Snes9x 2005+ running fullspeed
gPSP running fullspeed
PCSX-ReARMed running fullspeed
Video Filters
I was messing with shaders but with the current drivers they are not usable at all so I tested the CPU based video filters, and surprisingly they work well!
So from the RetroArch repo do:
cd gfx/video_filters
make
mkdir -p ~/.config/retroarch/filters/
cp *.filt *.so ~/.config/retroarch/filters/video
Now edit your config and change the video_filter_dir too
video_filter_dir = “~/.config/retroarch/filters/video/”
It’s hard to tell with such a small framebuffer, but there is a difference:
No filter
Scale2x
Image is sharper and there are less scaling artifacts at least, performance may take a hit, and filters are pixel format specific so your mileage may vary