libretro-mirrors / libretro-arb

For proposed improvements to libretro API.
8 stars 2 forks source link

Save data extensions #15

Closed Alcaro closed 9 years ago

Alcaro commented 9 years ago
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: