struct retro_system_info
{
/* All pointers are owned by libretro implementation, and pointers must
* remain valid until retro_deinit() is called. */
const char *library_name; /* Descriptive name of library. Should not
* contain any version numbers, etc. */
const char *library_version; /* Descriptive version of core. */
const char *valid_extensions; /* A string listing probably content
* extensions the core will be able to
* load, separated with pipe.
* I.e. "bin|rom|iso".
* Typically used for a GUI to filter
* out extensions. */
/* If true, retro_load_game() is guaranteed to provide a valid pathname
* in retro_game_info::path.
* ::data and ::size are both invalid.
*
* If false, ::data and ::size are guaranteed to be valid, but ::path
* might not be valid.
*
* This is typically set to true for libretro implementations that must
* load from file.
* Implementations should strive for setting this to false, as it allows
* the frontend to perform patching, etc. */
bool need_fullpath;
/* If true, the frontend is not allowed to extract any archives before
* loading the real content.
* Necessary for certain libretro implementations that load games
* from zipped archives. */
bool block_extract;
};
We have full support for whatever ROM extensions are needed, but there's no way to tell what the core wants RETRO_MEMORY_SAVE_RAM named. While .srm works fine for most if not all emulators, nobody thinks of non-emulator games having RAM, so .sav would fit them better; alternatively some acronym of the game name, or whatever the core wants. I vote add a field for that.
Additional related changes I propose:
As mentioned in #9, we could decide that valid_extensions==NULL means the same thing as calling SET_SUPPORT_NO_GAME and remove that env. The fewer we have, the less code needed to implement them all.
We want the same separator here as in core opts (#12); I proposed \n there, because that value is less likely than | (while | is rare too, there is probably some way to do it). I'm fine with changing either (or both) of those, but I'd rather have the same separator everywhere.
We have full support for whatever ROM extensions are needed, but there's no way to tell what the core wants RETRO_MEMORY_SAVE_RAM named. While .srm works fine for most if not all emulators, nobody thinks of non-emulator games having RAM, so .sav would fit them better; alternatively some acronym of the game name, or whatever the core wants. I vote add a field for that.
Additional related changes I propose: