Wednesday, July 30, 2008

Progress with Savestate Mgmt

Hey everyone. As I mentioned, the past week I've been working on implementing some savestate management features, namely loading games directly from savestates '-x', and listing savestates '--list-saves'. Some engines already supported these features, and I have added support for some of the engines that didn't. I've added '-x' support for LURE and PARALLACTION, and I'm still working on AGOS and GOB. I've added '--list-saves' support for quite a few engines as well.

Engines currently supporting -x:

AGI, CINE, KYRA, LURE, PARA, QUEEN, SAGA, SCUMM, SKY, SWORD1, SWORD2, TOUCHE

Engines currently supporting --list-saves:

AGI, AGOS, KYRA, LURE, PARA, QUEEN, SAGA, SCUMM, SKY, SWORD1, SWORD2, TOUCHE

I also managed to work in a 'Load' button into the launcher, which opens a savestate chooser. So now all of the engines supporting both -x and --list-saves can load savestates directly from the launcher, which is pretty cool I think.

So now I'm going to try and finish working with AGOS, GOB, and I'll also try to incorporate the newly added TINSEL engine. Also, I'm going to see about adding support for Autosaving in the engines where I can. Oh yeah, I might also add support for deleting savesates from the launcher.

4 comments:

DrMcCoy said...

Well, given the way the Gob engine's saves work, I don't think there's a realistic way of getting -x to work, at least not without major hooking into the scripts (and that would require certain offsets in the script files for each different game version).
Basically everything is handled by the scripts. The engine only sees "write n bytes at offset m from the variables memory into file a at offset b" and "write n bytes from file a at offset b into the variables memory at offset m".

--list-saves is doable, though you can't check whether a save in question is really a valid one at all.

Kirben said...

The AGOS engine uses script based load/save system too, with even the current quick load/save support been hackish. So I don't think -x support would be possible for the AGOS engine either.

Also if you eventually add support for deleting saved games, the saved games for AGOS engine could need to be renamed. Since in game listing of saved games, stops when a saved game isn't found.

For example: If you had 50 saved game, and saved game 25 was deleted. Saved games 26 onwards would need to be rename, otherwise they would fail to be detected via load/save listing in game.

Eugene Sandulenko said...

Thus, for better usability I suggest to add a special flag to engine description which will indicate whether load from launcher is possible or not, and provide corresponding message to the user.

All games look the same in the launcher, so it will confuse users when some particular games just silently will not load.

Chris said...

Thanks for the info guys, yeah after a closer look I had figured as much for AGOS and GOB using -x.

Also, sev I think that's a good idea, I'll be sure to do that.