[Scummvm-cvs-logs] scummvm master -> 045b10efb6fdc7b2910c18f10583d2c8e9e2badf

bluegr bluegr at gmail.com
Thu Mar 21 20:28:38 CET 2013


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
045b10efb6 SCI: Fix loading in Jones


Commit: 045b10efb6fdc7b2910c18f10583d2c8e9e2badf
    https://github.com/scummvm/scummvm/commit/045b10efb6fdc7b2910c18f10583d2c8e9e2badf
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-03-21T12:27:14-07:00

Commit Message:
SCI: Fix loading in Jones

This has been broken for a (very) long time, a regression from commit 6ff4dd2

Changed paths:
    engines/sci/engine/kfile.cpp



diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp
index e977f15..09ea35e 100644
--- a/engines/sci/engine/kfile.cpp
+++ b/engines/sci/engine/kfile.cpp
@@ -770,7 +770,10 @@ reg_t kSaveGame(EngineState *s, int argc, reg_t *argv) {
 				return NULL_REG;
 		} else if (virtualId < SAVEGAMEID_OFFICIALRANGE_START) {
 			// virtualId is low, we assume that scripts expect us to create new slot
-			if (virtualId == s->_lastSaveVirtualId) {
+			if (g_sci->getGameId() == GID_JONES) {
+				// Jones has one save slot only
+				savegameId = 0;
+			} else if (virtualId == s->_lastSaveVirtualId) {
 				// if last virtual id is the same as this one, we assume that caller wants to overwrite last save
 				savegameId = s->_lastSaveNewId;
 			} else {
@@ -848,12 +851,17 @@ reg_t kRestoreGame(EngineState *s, int argc, reg_t *argv) {
 	} else {
 		if (argv[2].isNull())
 			error("kRestoreGame: called with parameter 2 being NULL");
-		// Real call from script, we need to adjust ID
-		if ((savegameId < SAVEGAMEID_OFFICIALRANGE_START) || (savegameId > SAVEGAMEID_OFFICIALRANGE_END)) {
-			warning("Savegame ID %d is not allowed", savegameId);
-			return TRUE_REG;
+		if (g_sci->getGameId() == GID_JONES) {
+			// Jones has one save slot only
+			savegameId = 0;
+		} else {
+			// Real call from script, we need to adjust ID
+			if ((savegameId < SAVEGAMEID_OFFICIALRANGE_START) || (savegameId > SAVEGAMEID_OFFICIALRANGE_END)) {
+				warning("Savegame ID %d is not allowed", savegameId);
+				return TRUE_REG;
+			}
+			savegameId -= SAVEGAMEID_OFFICIALRANGE_START;
 		}
-		savegameId -= SAVEGAMEID_OFFICIALRANGE_START;
 	}
 
 	s->r_acc = NULL_REG; // signals success
@@ -922,10 +930,16 @@ reg_t kCheckSaveGame(EngineState *s, int argc, reg_t *argv) {
 	if (virtualId == 0)
 		return NULL_REG;
 
-	// Find saved-game
-	if ((virtualId < SAVEGAMEID_OFFICIALRANGE_START) || (virtualId > SAVEGAMEID_OFFICIALRANGE_END))
-		error("kCheckSaveGame: called with invalid savegameId");
-	uint savegameId = virtualId - SAVEGAMEID_OFFICIALRANGE_START;
+	uint savegameId = 0;
+	if (g_sci->getGameId() == GID_JONES) {
+		// Jones has one save slot only
+	} else {
+		// Find saved game
+		if ((virtualId < SAVEGAMEID_OFFICIALRANGE_START) || (virtualId > SAVEGAMEID_OFFICIALRANGE_END))
+			error("kCheckSaveGame: called with invalid savegame ID (%d)", virtualId);
+		savegameId = virtualId - SAVEGAMEID_OFFICIALRANGE_START;
+	}
+
 	int savegameNr = findSavegame(saves, savegameId);
 	if (savegameNr == -1)
 		return NULL_REG;






More information about the Scummvm-git-logs mailing list