RetroArch icon indicating copy to clipboard operation
RetroArch copied to clipboard

[Feature Request] Introduce a new menu section, `Quick Save` -> `Save File`, dedicated to managing save files

Open davidhedlund opened this issue 6 months ago • 2 comments

Feature Requests

Configuration File (reference structure)

Main Menu -> Configuration File is used to manage retroarch.cfg.

Image

Image

Quick Menu -> Save File (feature request)

Currently, the Save File entry does not exist under Quick Menu:

Image

Proposed menu entries for Quick Menu -> Save File:

Load Save File
Load existing save file and replace current save file.

Save Current Save File
Overwrite current save file.

Save New Save File
Save current save file to a separate file.

Delete Save File
Delete current save file.

Ideally, the existing source code from Main Menu -> Configuration File can be reused and modified to develop this feature.

Load Save File is the most crucial first step, as it would eliminate the need for using symlinks from games to custom SRM files—a method that isn’t supported on Android. Without this, game files must be copied and renamed to match the custom SRM files, which takes up a lot of storage space.

Save New Save File example

The Save New Configuration option (reference example at the top) saves a filename with the core name. Save New Save File would differ, as explained below.

  • Main Menu -> Load Content -> Legend of Zelda, The - A Link to the Past (USA).sfc
    • Select any core to start the game.
  • Create a player in the game and complete it. Now you have access to the whole map. At this point, you may want to archive the save file:
  • Quick Menu -> Save File -> Save New Save File (feature request)
    • The virtual keyboard appears with "Legend of Zelda, The - A Link to the Past (USA).srm" pre-filled, since that is the loaded content file.
    • Change it to "Legend of Zelda, The - A Link to the Past (USA)-My_game.srm" and click "Done" on the virtual keyboard.
    • The save file "Legend of Zelda, The - A Link to the Past (USA)-My_game.srm" will be generated.

Load Save File example

  • Close RetroArch and reopen it.
  • Main Menu -> Load Content -> Legend of Zelda, The - A Link to the Past (USA).sfc
    • Select any core to start the game.
  • Quick Menu -> Save File -> Load Save File (feature request)
    • The File Browser will be used (similar to Main Menu -> Configuration File -> Load Configuration).
    • Select "Legend of Zelda, The - A Link to the Past (USA)-Test.srm".

Additional info

For the rationale behind this feature request and examples of its use cases, see:

  • https://github.com/libretro/RetroArch/issues/18032

davidhedlund avatar May 26 '25 04:05 davidhedlund

@zoltanvb Thank you for commenting on

  • https://github.com/libretro/RetroArch/issues/18032#issuecomment-2993594050

Could you please also share your thoughts on this feature request? Keeping the feedback separate will help avoid any confusion.

davidhedlund avatar Jun 22 '25 11:06 davidhedlund

I have not worked on save file functionality so far, so my comments may be misleading. Replacing the save file while the core is running may have side effects, and also cores are not obliged to use the respective interface, and could just read/write the files themselves. Saving a new copy may be OK, but loading is more complicated, maybe it could be solved somewhat like subsystems, after loading (but not starting) the core the option appears in main menu.

zoltanvb avatar Jun 24 '25 19:06 zoltanvb

I have not worked on save file functionality so far, so my comments may be misleading. Replacing the save file while the core is running may have side effects, and also cores are not obliged to use the respective interface, and could just read/write the files themselves. Saving a new copy may be OK, but loading is more complicated, maybe it could be solved somewhat like subsystems, after loading (but not starting) the core the option appears in main menu.

Thanks for your input! You’re absolutely right that replacing a save file while the core is running could have unpredictable side effects, especially since not all cores use the standard save interface—some handle file I/O directly.

As you suggested, maybe the safest route is to allow loading or replacing save files through the proposed Quick Menu -> Save File menu entries only when the core is loaded but not yet running (i.e., before the game actually starts). This could be similar to how subsystems or BIOS selection works, where the user can pick a save file before launching the actual game session.

Your idea is the safer and more practical choice for an initial implementation, while the core restart approach could be explored after the basic functionality is proven stable.

davidhedlund avatar Jun 25 '25 21:06 davidhedlund

Ideally, the existing source code from Main Menu -> Configuration File can be reused and modified to develop this feature.

Do you think leveraging this existing codebase would be helpful for implementation? @zoltanvb

davidhedlund avatar Jul 11 '25 16:07 davidhedlund