[Scummvm-cvs-logs] SF.net SVN: scummvm:[40582] scummvm/trunk/engines/sci/engine/savegame.cpp
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Fri May 15 01:39:36 CEST 2009
Revision: 40582
http://scummvm.svn.sourceforge.net/scummvm/?rev=40582&view=rev
Author: fingolfin
Date: 2009-05-14 23:39:36 +0000 (Thu, 14 May 2009)
Log Message:
-----------
SCI: Fixed restoring scripts when loading a SCI 1.1 savestate
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/savegame.cpp
Modified: scummvm/trunk/engines/sci/engine/savegame.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cpp 2009-05-14 23:39:16 UTC (rev 40581)
+++ scummvm/trunk/engines/sci/engine/savegame.cpp 2009-05-14 23:39:36 UTC (rev 40582)
@@ -580,15 +580,23 @@
case MEM_OBJ_SCRIPT: {
Script *scr = (Script *)mobj;
+ // FIXME: Unify this code with script_instantiate_*
load_script(s, i);
scr->locals_block = (scr->locals_segment == 0) ? NULL : (LocalVariables *)(s->seg_manager->_heap[scr->locals_segment]);
- scr->export_table = (uint16 *) find_unique_script_block(s, scr->buf, SCI_OBJ_EXPORTS);
- scr->synonyms = find_unique_script_block(s, scr->buf, SCI_OBJ_SYNONYMS);
+ if (s->seg_manager->isSci1_1) {
+ scr->export_table = 0;
+ scr->synonyms = 0;
+ if (READ_LE_UINT16(scr->buf + 6) > 0) {
+ scr->export_table = (uint16 *)(scr->buf + 8);
+ scr->exports_nr = READ_LE_UINT16((byte *)(scr->export_table - 1));
+ }
+ } else {
+ scr->export_table = (uint16 *) find_unique_script_block(s, scr->buf, SCI_OBJ_EXPORTS);
+ scr->synonyms = find_unique_script_block(s, scr->buf, SCI_OBJ_SYNONYMS);
+ scr->export_table += 3;
+ }
scr->_codeBlocks.clear();
- if (!self->isSci1_1)
- scr->export_table += 3;
-
for (j = 0; j < scr->_objects.size(); j++) {
byte *data = scr->buf + scr->_objects[j].pos.offset;
scr->_objects[j].base = scr->buf;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list