libretro / libretro/RetroArch

[Feature Request] Create option to include core name/version in save state filename

Open
#17,632 4 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature request
Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

For save states which are handled by the libretro interface, options should be added to have save state filenames to include the core name and core version, delimited by character(s) or pattern(s) deemed least likely to cause collisions.

Justification:

  1. Prevent user confusion when trying to load a state created by a different core (leading to failure for unknown reason).
  2. Prevent data loss from clobbering a save state created by a different core.
  3. Allow users to the ability to identify with a glance at their states folder whether or not they need to lock a core from being updated
  4. Allow the frontend to display a toast notification (optional) indicating a mismatch with the core version the state was created with, a common cause of user confusion.

Arguments against:

  1. Most users will not switch between multiple cores for the same system.
    • Users bugtesting cores will likely directly benefit, as they can have identically-indexed save states in multiple cores for comparison testing.
  2. Metadata should be encapsulated in the file header, not the filename.
    • Agreed on principle, but:
      1. End users can't identify the source of savestates from their file manager.
      2. A more complex feature would need to be programmed into RetroArch to allow reviewing that information, and it would still be less convenient to the end user.

A discussion would warranted on whether or not it would be useful to have (optional) warnings on loading legacy states without the core version tag present if version tagging is enabled.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No file, test, or entry point is named. Start by locating RetroArch's libretro save-state filename handling and review how core metadata is currently represented. Done requires an agreed optional naming scheme for core name/version and a decision on handling legacy states and version-mismatch warnings.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.