Libretro Cores

Packaging Libretro cores

Games supports only Libretro cores shipping a Libretro Core Descriptor file. The cores and their descriptors are looked for in $(libdir)/libretro directory and in paths defined in the LIBRETRO_PLUGIN_PATH environment variable.

Cores flatpaked with Games

For a list of cores flatpaked with our current stable or development versions, check the application's documentation.

Cores available for Games as flatpak extensions

These cores include correct *.info files so they can be used in Games, but need to be provided separately (e.g. licensing issues)

  • PicoDrive (non-commercial)

    • flatpak remote-add --from bochecha

    • flatpak install bochecha org.gnome.Games.LibretroPlugin.PicoDrive

Cores we need to evaluate

Additional info

Rules for selection of cores

  • No BIOS needed, either at all or not for the commonly used games in the core, or the BIOS needs to be available by legal means that don't require a soldering iron. For example, the NeoGeo BIOS is shipped with Linux versions of the games.

  • No single game ports, those should be installed as an "app", not as a data file that the front-end would handle. gnome-games should be seen as a concatenation of games available in the system, and a way to handle "data files" from older systems, such as ROMs for consoles, floppy disks from vintage computers or installers/archives for games for which we have an engine (SCUMMVM being a prime example).
  • The core needs to be of decent quality and require hardware features comparable to those necessary to run GNOME Shell comfortably.


  • How to choose the Libretro core if multiple ones are available for the games?
  • We need to ensure that running a game with a core and then another doesn't break the saves.
    • Should we use per game+core saves rather than simply per game saves?
    • Should we push for and interchangeable save format per system? (NES saves should work with any NES emulator, etc.)

Design/Playground/Games/LibretroCores (last edited 2018-08-29 13:40:32 by LaurentPointecouteau)