[Scummvm-cvs-logs] SF.net SVN: scummvm: [24835] scummvm/trunk/engines/scumm/script_v8.cpp
kirben at users.sourceforge.net
kirben at users.sourceforge.net
Mon Dec 11 07:12:13 CET 2006
Revision: 24835
http://scummvm.svn.sourceforge.net/scummvm/?rev=24835&view=rev
Author: kirben
Date: 2006-12-10 22:12:12 -0800 (Sun, 10 Dec 2006)
Log Message:
-----------
Allow load of saved game from original COMI load/save screens
Modified Paths:
--------------
scummvm/trunk/engines/scumm/script_v8.cpp
Modified: scummvm/trunk/engines/scumm/script_v8.cpp
===================================================================
--- scummvm/trunk/engines/scumm/script_v8.cpp 2006-12-11 05:19:57 UTC (rev 24834)
+++ scummvm/trunk/engines/scumm/script_v8.cpp 2006-12-11 06:12:12 UTC (rev 24835)
@@ -856,14 +856,18 @@
setCurrentPalette(a);
break;
case 0x5D: // SO_ROOM_SAVE_GAME Save game
+ _saveSound = 0;
_saveTemporaryState = true;
_saveLoadSlot = 1;
_saveLoadFlag = 1;
break;
case 0x5E: // SO_ROOM_LOAD_GAME Load game
- _saveTemporaryState = true;
- _saveLoadSlot = 1;
- _saveLoadFlag = 2;
+ _saveSound = pop();
+ if (!_saveLoadFlag) {
+ _saveTemporaryState = true;
+ _saveLoadSlot = 1;
+ _saveLoadFlag = 2;
+ }
break;
case 0x5F: // SO_ROOM_SATURATION Set saturation of room colors
e = pop();
@@ -1230,32 +1234,31 @@
removeBlastTexts();
break;
case 25: { // saveGameReadName
- char *address = (char*)getStringAddress(args[2]);
char name[30];
+ if (getSavegameName(args[1], name)) {
+ int size = resStrLen((const byte *)name) + 1;
+ _res->nukeResource(rtString, args[2]);
- if (!address) {
- error("o8_kernelSetFunctions: saveGameReadName failed finding slot string %d", args[2]);
- break;
+ ArrayHeader *ah = (ArrayHeader *)_res->createResource(rtString, args[2], size + sizeof(ArrayHeader));
+ ah->type = TO_LE_16(kStringArray);
+ ah->dim1 = TO_LE_16(size + 1);
+ ah->dim2 = TO_LE_16(1);
+
+ memcpy(getStringAddress(args[2]), name, size);
}
- getSavegameName(args[1] - 1, name);
- if (strlen(name) > 0 && strlen(name) < 30)
- strcpy(address, name);
break;
}
- case 26: { // saveGame?
- //char *address = (char*)getStringAddress(args[2]);
- char address[30];
- debug(0, "o8_kernelSetFunctions: saveGame?(%d, %s)", args[1], address);
+ case 26: { // saveGameWrite
+ // FIXME: This doesn't work
+ char *address = (char*)getStringAddress(args[2]);
+ debug(0, "o8_kernelSetFunctions: saveGame(%d, %s)", args[1], address);
break;
}
- case 27: { // FIXME: This doesn't work
- // saveGameRead
+ case 27: // saveGameRead
_saveLoadSlot = args[1];
_saveLoadFlag = 2;
_saveTemporaryState = false;
- debug(0, "Sgl: %d", args[1]);
break;
- }
case 28: // saveGameStampScreenshot
debug(0, "o8_kernelSetFunctions: saveGameStampScreenshot(%d, %d, %d, %d, %d, %d)", args[1], args[2], args[3], args[4], args[5], args[6]);
break;
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