Opened 12 years ago

Closed 12 years ago

Last modified 12 months ago

#8775 closed patch

Basic savestate plugin API

Reported by: fingolfin Owned by: fingolfin
Priority: normal Component: --Other--
Keywords: Cc:
Game:

Description

The attached patch implements a basic savestate plugin API. It is not yet quite ready for SVN, but I thought people might already want to have a peek at it or comment, so I am putting this into a tracker item for now.

Basically, it adds a new plugin API function, which can be used to query a plugin for a list of savestates for a given target. Currently, in the patch this is only implemented for a single engine (the SCUMM engine). My hope is that for other engines, the resp. engine maintainers will help out.

Eventually, this would make it possible to add a feature to the launcher where the user can directly load a specific savegame instead of first loading up a game, then navigating to its save/load system. However, this is not yet implemented, and one would have think about a good GUI for this, too. (For example, add a "load savestate" button which pops up a dialog with a list of all saves, and lets the user choose one. Or change the launcher to display a tree display, where all saveslots for a given target are displayed as children of that target in the main launcher list).

Right now, the only way the new API is used is via a hack to the --list-targets / -t command, which was extended to also list all savestates for each targets. This might eventually be turned into a separate --list-saves command, of course. It is only there to show how to use the API, and to demonstrate that it actually works.

Ticket imported from: #1868402. Ticket imported from: patches/880.

Attachments (2)

saves.patch (23.7 KB ) - added by fingolfin 12 years ago.
saves-2.patch (24.1 KB ) - added by fingolfin 12 years ago.
v2

Download all attachments as: .zip

Change History (8)

by fingolfin, 12 years ago

Attachment: saves.patch added

by fingolfin, 12 years ago

Attachment: saves-2.patch added

v2

comment:1 by fingolfin, 12 years ago

Updated version of the patch, which also stores the filename in the SaveStateDescriptor. This makes it possible to e.g. delete a specific savegame/savestate from within the launcher.

BTW, we should probably fix the terminology at some point: savegame vs. savestate vs. savefile...

File Added: saves-2.patch

comment:2 by sev-, 12 years ago

Maybe it would be better to put static SaveStateList Engine_XXX_listSaves(const char *target) to ADVANCED_DETECTOR_DEFINE_PLUGIN macro?

Otherwise the patch looks like an excellent start

comment:3 by fingolfin, 12 years ago

I don't see how that would be useful -- the advanced detector has nothing to do with the listSaves() functionality. They are completely independant of each other...

comment:4 by fingolfin, 12 years ago

Owner: set to fingolfin
Status: newclosed

comment:5 by fingolfin, 12 years ago

So I just commited an updated version to SVN, featuring a new "--list-saves" command line option (not yet documented).

comment:6 by digitall, 12 months ago

Component: --Other--
Note: See TracTickets for help on using tickets.