RetroArch Config Confusion and Issues
-
I am a little confused about the nature of the various different config files and how to edit them.
Currently I am having an issue where I edit the config properties for the PSX emulator inside the 'Configuration Editor' and the settings are applied to the emulator when I launch a game,but then reset back to default when it is relaunched.
https://github.com/retropie/retropie-setup/wiki/Configuration-Editor
I also edit the options for emulators from within 'RetroPi Setup' and these changes are not saved.I can edit various things within 'RetroArch' GUI such as Aspect Ratio etc and save those settings when 'save on exit' is enabled,but I cannot access the Smoothing,Shaders etc for particular emulators from here.
There seems to be a lot of ways to skin a cat,and I'm slightly confused as to which approach to use.
-
(firstly, sorry if I make a grammar mistake. English is not my mother language.)
I was very confused about these RGUI configs too. And then I realized that RetroPie wasn't made to work very "integrated" with RetroArch GUI by default (but RetroPie is very very flexible, and you can revert this with some knowledge).
I think I can't help you directly to your issue, but maybe I can help you to understand some things... A bit of linux command line knowledge helps. Let's go:
Take a look at the file
/opt/retropie/configs/SYSTEMNAME/emulators.cfg
(replace SYSTEMNAME with the obvious). You'll notice there are various commands to invoke an emulator, and thedefault
is the default (oh really?) command used.You'll also notice that the commands invoke a specific config file. If you are using a libretro core, this config file is
/opt/retropie/configs/SYSTEMNAME/retroarch.cfg
. In other words: each libretro-core loads its own specific retroarch.cfg file. Now go and take a look at some of these retroarch.cfg files.It exists to configure a specific core and also invokes the default configurations using the
#include /opt/retropie/configs/all/retroarch.cfg
. Keep in mind that the config uses the "first match if finds" approach, so for you override a global config, keep the#include
line at the end of file.This approach can be a good thing for those who usually edit the retroarch.cfg "by hand". But for those who like to use RGUI, it can be annoying.
Example of how annoying this can be:
You invoke RGUI through RetroPie menu and enable "save config on exit" and then you can edit and save RetroArch configs via RGUI. The changes you make will be saved in the global
/opt/retropie/configs/all/retroarch.cfg
.Later you invoke RGUI during a NES game playing. You change some configs and then "Save config file". It'll save
/opt/retropie/configs/nes/retroarch.cfg
. This is the annoying thing! You think you saved the "default and only one retroarch.cfg", but you saved the NES specific retroarch.cfg.Let's say you changed the On Screen Display text size to a bigger size using RGUI during this NES session, and saved. Then you quit and play Sonic (MegaDrive) and see that little yellow text again! You'll think "WHAT THE F#$@%CK?! I've just changed this text size!!!". But when you started the MegaDrive emulator the config file loaded was
/opt/retropie/configs/megadrive/retroarch.cfg
and you changed the text size only in the NES retroarch.cfg file.After a lot of confusion I finally learned to deal with config files by hand, but for those who aren't familiar with command line it can be hard...
As a further reading, I suggest https://github.com/RetroPie/RetroPie-Setup/wiki/RetroArch-Configuration#hardcoded-configurations
-
We used to have it so the main retroarch.cfg was passed in and the additional config a an `--appendconfig" option - which would mean that the main retroarch.cfg would get overwritten if saving in an emulator. However there are problems with this too - as you may change a setting that you want specifically for a system, but not globally, so the current method was seen as an improvement.
Using the configuration editor is the cleanest way - with manual configuration for settings that are not included. For most people, they probably only need to change a few of the basic options included though. More stuff will be added to the configuration editor in the future such as some additional controller configs.
-
@BuZz I agree. The current way is cleaner, but I went through many confusing situations to learn how these things work. Now I like it a lot!
About the controller configs, this is an area that I am interested and made a progress (documented here). I was planning to adjust my script to add to
scriptmodules/supplementary
scripts. And later I was planning to implement a way to manage RetroAchievements accounts (I'm used to share the same RetroPie with some friends, and each one of us have a different RetroAchievements account).So let me ask: are you guys about to implement this controller configs feature? If yes, I let this task with you, the experienced guys, and try to work on the cheevos area.
-
I didn't have any plans for setting which controller for which player - at least not initially - do you handle it so that if they plug a controller in a different port, it will automatically update the config ? It's something I could consider - I'm currently working on some other code though. You can also just plug the controllers in the order you want in the correct usb port, but it might be useful to have it on a per system basis, to force specific controllers.
When I do some work on the input configuration, I will think about implementing it. I do want to make it easier to configure player 2 / player 3 when using keyboard also, which isn't automatic currently - that would need to be implemented into ES so it passes a parameter to the autoconfiguration script.
-
do you handle it so that if they plug a controller in a different port, it will automatically update the config ?
I think RetroArch already do this by searching the configs in
/opt/retropie/configs/all/retroarch-joypads/
based on the joystick name, not the port. I never had problems with it.You can also just plug the controllers in the order you want in the correct usb port
Yeah. But my script deal with any joystick connected to the system. If the connection is through USB, bluetooth (I didn't test GPIO)... It doesn't matter. If the SDL identifies a device as a joystick, my script can deal with it.
My only concern is with the dynamic nature of bluetooth connections. If one connect and/or disconnect controllers "on-the-fly", the indexes will change and then it's required to execute the script again.
but it might be useful to have it on a per system basis, to force specific controllers.
I'm planning to work on this later. But I'm thinking about how to deal with the dynamic connections issue I mentioned (index changing). Maybe I'll work with joystick names... It's in my TODO list. :-)
-
@BuZz
Sorry if I'm asking too much, but could you please translate this small C code to python. I don't know python, but I think this code is as simple as a "hello world" for you. :-)A python version will have a better portability.
@wolfman100 Sorry for messing with your thread...
-
@Wolfman100 As mentioned above, you can use the configuration editor to save settings that are persistent that way.
Or if you want to do it manually this video may help.
-
@Floob Thanks for this.Will check the vid.Seen some of yours before,very clearly and concisely presented....good work!
-
@Floob By 'Configuration Editor' do you mean the one in the RetroPie Setup,the one you can access once a rom is loaded,or the one provided in 'RetroArch'?
This is kind of what I'm saying,there's 3-4 ways to change the same settings and very little clarity as to what way is the 'right' way....if you know what I mean?
-
@Wolfman100
When I say that RetroPie is very flexible, you can read it as "there is no only one right way to do a task". :DAnswering your question: when we say configuration editor, we mean Configuration Editor.
-
@meleu haha!Thanks for that clarification.....
In other words,theres not only one way to break something!
-
@Wolfman100 If you don't want this freedom and wanna let the developer make decisions for you, maybe you should take a look at recalbox.com ;-)
-
@meleu I was only joking sir,somehow I have developed a somewhat sadistic joy from configuring RetroPie and having it turn into a full time job :-)
Also I didn't actually realise that all these responses had been posted as I wasn't notified....as you can see it doesn't take much to confuse me!
-
@meleu Also thanks for the in-depth response....just trying to get my head around it all right now,which is proving a little trickier than usual after just having to write a two hour long email!
-
Just to really clarify my process and how I was going about editing the config files.
At the moment I was concentrating mainly on the PSX emulator.I would open the RetroPie-Setup script via the menu in Emulation Station.This would then take me to the RetroPie Setup interface,in there I would then select:
-
list item 'Edit RetroPie/RetroArch Configurations' >
-
list item 'Configure basic libretro emulator option' >
-
list item 'Configure Additional Options for PSX' >
-
list item I would then make the required changes and exit
Noooooow......the crazy thing is,as I went through the steps in order to write this....I have now discovered that the settings have actually been saved,and the correct shader,aspect ratio etc is already selected when going through the configuration!!!!
Ermmmmm,so I guess the only thing to ask is whether this is the best and most robust way to make the configuration changes?
-
-
@Wolfman100
don't take my suggestion to recalbox as a reprimand. :-)It's a good system for those who just wanna play videogames and don't care about learning/tinkering with Linux. But, as you said, this is not your case.
I'm enjoying messing around with RetroPie too. It brought me back to programming after some years away... And somehow this is the purpose of Raspberry Pi.
I guess the only thing to ask is whether this is the best and most robust way to make the configuration changes?
I think the most robust and organised way is editing the file
by handwith the Configuration Editor. But I can't say if it's the best, this is a very personal answer! :-)The problem is that editing the file by hand requires that you know the variables name. I don't know a good reference for the meaning of each variable in retroarch.cfg.
-
@Wolfman100 said in RetroArch Config Confusion and Issues:
Ermmmmm,so I guess the only thing to ask is whether this is the best and most robust way to make the configuration changes?
yes, i'd say so. the configuration editor explains all the settings, and limits your changes to valid settings.
-
Sooooo....ignore my last post,switching to a different PSX game seems to have actually reset all the config settings to default again!Jeeeeeezzzz....time to investigate!
-
@Wolfman100 hahahaha this is the very same feeling I had while I kept the "save config on exit" enabled!!!
:-D
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.