aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/kfile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/engine/kfile.cpp')
-rw-r--r--engines/sci/engine/kfile.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp
index 76cae6c4c1..6aad256664 100644
--- a/engines/sci/engine/kfile.cpp
+++ b/engines/sci/engine/kfile.cpp
@@ -306,6 +306,11 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {
// their game version from the VERSION file
if (name.compareToIgnoreCase("version") == 0) {
unwrapFilename = false;
+
+ // LSL6hires version is in a file with an empty extension
+ if (Common::File::exists(name + ".")) {
+ name += ".";
+ }
}
if (g_sci->getGameId() == GID_SHIVERS && name.hasSuffix(".SG")) {
@@ -1322,11 +1327,11 @@ reg_t kGetSaveFiles32(EngineState *s, int argc, reg_t *argv) {
const SavegameDesc &save = saves[i];
char *target = &descriptions.charAt(SCI_MAX_SAVENAME_LENGTH * i);
Common::strlcpy(target, save.name, SCI_MAX_SAVENAME_LENGTH);
- saveIds.int16At(i) = save.id - kSaveIdShift;
+ saveIds.setFromInt16(i, save.id - kSaveIdShift);
}
descriptions.charAt(SCI_MAX_SAVENAME_LENGTH * saves.size()) = '\0';
- saveIds.int16At(saves.size()) = 0;
+ saveIds.setFromInt16(saves.size(), 0);
return make_reg(0, saves.size());
}
@@ -1345,7 +1350,7 @@ reg_t kMakeSaveFileName(EngineState *s, int argc, reg_t *argv) {
SciArray &outFileName = *s->_segMan->lookupArray(argv[0]);
// argv[1] is the game name, which is not used by ScummVM
const int16 saveNo = argv[2].toSint16();
- outFileName.fromString(g_sci->getSavegameName(saveNo));
+ outFileName.fromString(g_sci->getSavegameName(saveNo + kSaveIdShift));
return argv[0];
}