Opened 7 years ago

Closed 7 years ago

#6110 closed defect (fixed)

TINSEL: Saved games don't load

Reported by: SF/ingsoc85 Owned by: dreammaster
Priority: normal Component: Engine: Tinsel
Keywords: Cc:
Game: Discworld

Description

I've installed the new version (1.5.0) and it seem to cause trouble with my Discworld saved games. I run the ScummVM on Windows XP, the game is the CD Hebrew version, each time I try to open one of my old saved game the game crush and bring me back to Windows, if I try to open a saved game made since the new ScummVM release its loaded just fine.

Ticket imported from: #3551516. Ticket imported from: bugs/6110.

Attachments (1)

dw-cd-he.005 (3.8 KB) - added by SF/ingsoc85 7 years ago.
An old Saved game

Download all attachments as: .zip

Change History (7)

Changed 7 years ago by SF/ingsoc85

Attachment: dw-cd-he.005 added

An old Saved game

comment:1 Changed 7 years ago by lordhoto

Just to repeat my findings from IRC and my mail to dreammaster:

Old saved games will cause ScummVM to error out with "Incompatible saved game!". Creating new saves and loading them again seems to work fine. I only tried Discworld 2 though.

I made an git bisect and came down to c6810c174e06aa85fc58808f916c6e9cd1d989ea or 41692ef48ab9cb5b38d80e580316186e9c76cec5 being the changes, which introduced this regression. Sadly c6810c174e06aa85fc58808f916c6e9cd1d989ea does not build for me, so I can't tell whether it's this or the other commit.

comment:2 Changed 7 years ago by lordhoto

Owner: set to dreammaster
Summary: Tinsel: Discworld: Saved games don't loadTINSEL: Saved games don't load

comment:3 Changed 7 years ago by fuzzie

To repeat from IRC, this seems likely to be caused by constants having changed. It seems tricky to fix, since there's no clear way to distinguish between the savegames..

comment:4 Changed 7 years ago by lordhoto

I suppose Tinsel saved games are not fixed size? Otherwise we could try to exploit the total size of the (uncompressed) savegame.

comment:5 Changed 7 years ago by dreammaster

Unfortunately not. But on the plus side, in my experience, all cases of invalid savegames we've ever had always bombed out at the point where it tries to load the currently held object - it needs to be either -1 or a number between 1 and 150-ish. Generally with a wrong savegame, as in this case, it normally ends up as zero.

What I'll do is introduce a new savegame version that can encode the number of interpreter context in the savegame, and have code for older versions that it will first try with the old number of interpreter contexts, and if the held object is zero, it'll fall back to retrying with the hardcoded 1.5 release number of interpreter contexts.

That will resolve support for pre 1.5 savegames, 1.5 saveagmes, and future savegames allowing for if we ever need to change the maximum number of interpreter contexts for other engines.

comment:6 Changed 7 years ago by dreammaster

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.