EDIT
The tip I got here panned out. I found some useful info that got me started on my project.
Feel free to add more thoughts, or move on knowing the world is a friendly place.
Thanks guys.
[HR][/HR]
Disclaimer: Rather new to retroarch, please bear with me if I’ve missed something obvious. If so, perhaps we can make it more visible / intuitive.
[HR][/HR] ::Key Goal::
I want to get a list of cores available for each system programatically, i.e. without going through the retroarch graphical client and with a preference for shell scripting.
I’m wondering what options there are for this, already available or to prepare myself.
[HR][/HR]
::Initial Research::
As far as I can tell, this is not currently an scripting or programmatic option already available.
[ul]
[li] retroarch --help
doesn’t seem to have any options for this. [/li][li]Cores are named after the emulator project and do not include a system name, so I can’t simply scan the filenames in the libretro directory. [/li][li]I have not been able to locate API documentation that would indicate how to do this outside of the command line. [/li][/ul]
Is there a tool already out there? Or do I need to create my own by resource explicitly?
In terms of preparing such a resource, I’m also short on resources which list the available cores by system.
This is what I’ve found.
[ul]
[li]The retroarch application does this, but it’s not a copy / paste friendly situation. [/li][li]I looked in the libretro repositories, but couldn’t find my way to the information that populates the core downloader. Anybody know where this is? It might be ideal. [/li][li]The retroarch wiki lists cores in the format core -> platform
. Same problem as using the file system (some emulators have non-obvious names or support multiple platforms). The compatibility list is a start, but doesn’t cover the full list of systems, so it would involve cross-referencing (ugh). [/li][li]The retropie wiki does this, but it also includes non-libretro sources. I would like to stick to libretro for now, and would prefer my resources did, too. [/li][/ul]
[HR][/HR] ::Background::
<snark>Since every technical forum post in the history of forums is inevitably followed by the we can’t help you if we don’t know why guy, followed by the don’t be greedy just do x guy: </snark>
For a hobby / learning project, I am developing simple tools to streamline installation, configuration, and integration emulationstation / retroarch on Ubuntu derivative systems. My primary use case is Linux Mint.
I realize that retropie is available for this, but I’ve found the project sources / structure to be nigh undecipherable, and this is much about me learning / doing and how that relates to other projects and goals.
Since I found my way to retroarch from emulation station, one of my first goals is to abstract away the need to identify core locations explicitly in the es_systems.cfg
.
Instead of:
<command>retroarch -L /path/to/nescore-libretro.so %ROM%</command>
I want to look like:
<command>nes %ROM%</command>
Perhaps even, ideally, create an enhancement where the default is:
<command>%PLATFORM% %ROM%</command>
Then, to switch the default core, or even another emulator, bash can be used, i.e.:
nes --set-core=quicknes
etc.
This way, I can provide sensible defaults, provide a platform independent configuration file, and combat the plague of tutorials that teach you how to do all of the configuration yourself, by providing a tool that actually does it.
From there I can extend it to support other emulators / options / command line formats.
[HR][/HR] Thanks for putting your eyes on this.