diff options
author | sluicebox | 2019-10-31 04:30:09 -0700 |
---|---|---|
committer | sluicebox | 2019-10-31 04:30:09 -0700 |
commit | cdf9954eb569060184c937a48217f7cd2a6f03f9 (patch) | |
tree | a2217a318a00ee8d978437a374ad6e688a41f2d1 /engines | |
parent | 6c367c54151bfd4e32a8407fc1e0c36d95755036 (diff) | |
download | scummvm-rg350-cdf9954eb569060184c937a48217f7cd2a6f03f9.tar.gz scummvm-rg350-cdf9954eb569060184c937a48217f7cd2a6f03f9.tar.bz2 scummvm-rg350-cdf9954eb569060184c937a48217f7cd2a6f03f9.zip |
SCI32: Add HOYLE5 kFileIOReadString workaround
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/engine/kernel_tables.h | 2 | ||||
-rw-r--r-- | engines/sci/engine/workarounds.cpp | 6 | ||||
-rw-r--r-- | engines/sci/engine/workarounds.h | 1 |
3 files changed, 8 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index 0149f0ef8a..49a5168119 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -315,7 +315,7 @@ static const SciKernelMapSubEntry kFileIO_subops[] = { { SIG_SCIALL, 2, MAP_CALL(FileIOReadRaw), "iri", NULL }, { SIG_SCIALL, 3, MAP_CALL(FileIOWriteRaw), "iri", NULL }, { SIG_SCIALL, 4, MAP_CALL(FileIOUnlink), "r", NULL }, - { SIG_SCIALL, 5, MAP_CALL(FileIOReadString), "rii", NULL }, + { SIG_SCIALL, 5, MAP_CALL(FileIOReadString), "rii", kFileIOReadString_workarounds }, { SIG_SCIALL, 6, MAP_CALL(FileIOWriteString), "ir", NULL }, { SIG_SCIALL, 7, MAP_CALL(FileIOSeek), "iii", NULL }, { SIG_SCIALL, 8, MAP_CALL(FileIOFindFirst), "rri", NULL }, diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index c0713839ed..ddd6faf008 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -778,6 +778,12 @@ const SciWorkaroundEntry kFileIOCheckFreeSpace_workarounds[] = { SCI_WORKAROUNDENTRY_TERMINATOR }; +// gameID, room,script,lvl, object-name, method-name, local-call-signature, index-range, workaround +const SciWorkaroundEntry kFileIOReadString_workarounds[] = { + { GID_HOYLE5, -1, 64993, 0, "version", "readString", NULL, 0, 0, { WORKAROUND_IGNORE, 0 } }, // Zero passed as string when game initializes and VERSION file is present, which only Mac includes. Result is unused + SCI_WORKAROUNDENTRY_TERMINATOR +}; + // gameID, room,script,lvl, object-name, method-name, local-call-signature, index-range, workaround const SciWorkaroundEntry kFindKey_workarounds[] = { { GID_ECOQUEST2, 100, 999, 0, "myList", "contains", NULL, 0, 0, { WORKAROUND_FAKE, 0 } }, // When Noah Greene gives Adam the Ecorder, and just before the game gives a demonstration, a null reference to a list is passed - bug #4987 diff --git a/engines/sci/engine/workarounds.h b/engines/sci/engine/workarounds.h index 528fa93ac3..3e626e6d35 100644 --- a/engines/sci/engine/workarounds.h +++ b/engines/sci/engine/workarounds.h @@ -75,6 +75,7 @@ extern const SciWorkaroundEntry kDoSoundPlay_workarounds[]; extern const SciWorkaroundEntry kDoSoundFade_workarounds[]; extern const SciWorkaroundEntry kFileIOOpen_workarounds[]; extern const SciWorkaroundEntry kFileIOCheckFreeSpace_workarounds[]; +extern const SciWorkaroundEntry kFileIOReadString_workarounds[]; extern const SciWorkaroundEntry kFindKey_workarounds[]; extern const SciWorkaroundEntry kFrameOut_workarounds[]; extern const SciWorkaroundEntry kDeleteKey_workarounds[]; |