This repository contains libretro game add-ons for XBMC.
- /addons - Auxiliary files for add-ons (icon.png, etc)
- /libretro-extract - A program to extract information from libretro shared libraries
- /libretro-super - libretro-super cloned repository
- /release - Generated release archives
- /src - Python scripts to generate release archives
To generate add-on .zips that can be installed in XBMC, run create_release.py
in the /src directory. This script will clone and build the libretro-super project, then extract the compiled libretro cores and package them into .zips. This script will take a very long time to run. Once libretro-super is fetched and built, re-fetching and re-building 45 libretro cores can be disabled by commenting out the following lines in create_release.py
:
#libretroSuper.Fetch()
#libretroSuper.Build()
An installable add-on archive usually contains the following items:
- The libretro core (compiled by libretro-super)
- addon.xml (generated by
create_release.py
, specifies the core's filename and info from /libretro-super/dist/info) - changelog.txt (not yet generated - still a work-in-progress)
- icon.png (optional, stored in /addons)
- fanarat.jpb (optional, stored in /addons)
- resources/ - folder for more generated XBMC stuff, like settings.xml and language files
- Possibly other XBMC stuff. I'm not an add-on expert
Libretro cores might need other files like BIOSes or configuration scripts. These are stored in /addons. Currently, create_release.py
ignores these extra files (as we don't have any yet).
Generated release archives are placed in the /release folder. When a libretro core is updated (its git hash changes) a new release archive will be generated and the old one erased. These changes should be synced to GitHub so that the new add-ons can be made available to everyone. Many new releases can be grouped into one commit. Should anyone need to access old versions of add-ons, they can be pulled from the git history.
libretro-extract is a C++ and CMake program that extracts information from compiled libretro cores. It loads the DLLs and queries information like the valid extensions, supported features and (in the future) settings. Much of the code is shared with the library.xmbc.libretro wrapper library.
If a Readme is ever written for this program, you'll find it in the /libretro-extract folder.
Here is what extracted settings looked like in the old repository.libretro system: https://github.com/garbear/repository.libretro-backup/commit/39ddf68
- Export settings from libretro cores in the libretro-extract program
- Generate settings.xml and language files from the extracted settings
- Include extra files (like BIOSes and libretro configuration scripts) stored in /addons
- changelog.txt support, so that the history of new releases can be displayed within XBMC
- Find more artwork for libretro cores!