aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Snover2017-09-24 03:40:50 -0500
committerColin Snover2017-09-24 22:56:58 -0500
commit3e107c1eb06a33f1cbb8442a5a5732f98dfa4823 (patch)
treedcb6b148f5528e34a8d31ebf41692fd0460f6289
parentf42480d7cd5f75b661acc74ad48572888af250fc (diff)
downloadscummvm-rg350-3e107c1eb06a33f1cbb8442a5a5732f98dfa4823.tar.gz
scummvm-rg350-3e107c1eb06a33f1cbb8442a5a5732f98dfa4823.tar.bz2
scummvm-rg350-3e107c1eb06a33f1cbb8442a5a5732f98dfa4823.zip
SCI32: Allow invalid references to be passed to kFileIO
Near the end of the game, RAMA will start trying to store some invalid references. This does not affect the save game negatively in any way, but it was causing the kernel to assert a signature failure.
-rw-r--r--engines/sci/engine/kernel_tables.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h
index 6a45241817..4002062db9 100644
--- a/engines/sci/engine/kernel_tables.h
+++ b/engines/sci/engine/kernel_tables.h
@@ -326,7 +326,7 @@ static const SciKernelMapSubEntry kFileIO_subops[] = {
{ SIG_SINCE_SCI21MID, 14, MAP_CALL(FileIOWriteByte), "ii", NULL },
{ SIG_SINCE_SCI21MID, 15, MAP_CALL(FileIOReadWord), "i", NULL },
{ SIG_SCI21MID_LATE, 16, MAP_CALL(FileIOWriteWord), "ii", NULL },
- { SIG_SCI3, 16, MAP_CALL(FileIOWriteWord), "i.", NULL },
+ { SIG_SCI3, 16, MAP_CALL(FileIOWriteWord), "i[.!]", NULL },
{ SIG_SINCE_SCI21MID, 17, "FileIOCheckFreeSpace", kCheckFreeSpace, "i(r)", NULL },
{ SIG_SINCE_SCI21MID, 18, MAP_CALL(FileIOGetCWD), "r", NULL },
{ SIG_SINCE_SCI21MID, 19, MAP_CALL(FileIOIsValidDirectory), "[ro]", NULL },
@@ -698,7 +698,7 @@ static SciKernelMapEntry s_kernelMap[] = {
{ "FGets", kFileIOReadString, SIG_EVERYWHERE, "rii", NULL, NULL },
{ "FOpen", kFileIOOpen, SIG_EVERYWHERE, "ri", NULL, NULL },
{ "FPuts", kFileIOWriteString, SIG_EVERYWHERE, "ir", NULL, NULL },
- { MAP_CALL(FileIO), SIG_EVERYWHERE, "i(.*)", kFileIO_subops, NULL },
+ { MAP_CALL(FileIO), SIG_EVERYWHERE, "i([.!]*)", kFileIO_subops, NULL },
{ MAP_CALL(FindKey), SIG_EVERYWHERE, "l.", NULL, kFindKey_workarounds },
{ MAP_CALL(FirstNode), SIG_EVERYWHERE, "[l0]", NULL, NULL },
{ MAP_CALL(FlushResources), SIG_EVERYWHERE, "i", NULL, NULL },