diff options
Diffstat (limited to 'engines/sci/engine/kfile.cpp')
-rw-r--r-- | engines/sci/engine/kfile.cpp | 11 |
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]; } |