diff options
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/sci/engine/kernel_tables.h | 4 | ||||
| -rw-r--r-- | engines/sci/engine/kfile.cpp | 4 | ||||
| -rw-r--r-- | engines/sci/engine/workarounds.cpp | 6 | ||||
| -rw-r--r-- | engines/sci/engine/workarounds.h | 1 | 
4 files changed, 10 insertions, 5 deletions
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index 6630f1a98c..201afb66e2 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -311,9 +311,9 @@ static const SciKernelMapSubEntry kPalette_subops[] = {  	SCI_SUBOPENTRY_TERMINATOR  }; +//    version,         subId, function-mapping,                    signature,              workarounds  static const SciKernelMapSubEntry kFileIO_subops[] = { -	{ SIG_SCI32,           0, MAP_CALL(FileIOOpen),                "r(i)",                 NULL }, -	{ SIG_SCIALL,          0, MAP_CALL(FileIOOpen),                "ri",                   NULL }, +	{ SIG_SCIALL,          0, MAP_CALL(FileIOOpen),                "ri",                   kFileIOOpen_workarounds },  	{ SIG_SCIALL,          1, MAP_CALL(FileIOClose),               "i",                    NULL },  	{ SIG_SCIALL,          2, MAP_CALL(FileIOReadRaw),             "iri",                  NULL },  	{ SIG_SCIALL,          3, MAP_CALL(FileIOWriteRaw),            "iri",                  NULL }, diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp index 324eaf27ea..b81038385b 100644 --- a/engines/sci/engine/kfile.cpp +++ b/engines/sci/engine/kfile.cpp @@ -233,9 +233,7 @@ reg_t kFileIO(EngineState *s, int argc, reg_t *argv) {  reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {  	Common::String name = s->_segMan->getString(argv[0]); -	// SCI32 can call K_FILEIO_OPEN with only one argument. It seems to -	// just be checking if it exists. -	int mode = (argc < 2) ? (int)_K_FILE_MODE_OPEN_OR_FAIL : argv[1].toUint16(); +	int mode = argv[1].toUint16();  	bool unwrapFilename = true;  	// SQ4 floppy prepends /\ to the filenames diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index 71ffda5fa0..6669a144c2 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -550,6 +550,12 @@ const SciWorkaroundEntry kGetAngle_workarounds[] = {  };  //    gameID,           room,script,lvl,          object-name, method-name, local-call-signature, index,                workaround +const SciWorkaroundEntry kFileIOOpen_workarounds[] = { +	{ GID_TORIN,       61000, 61000,  0,       "roSierraLogo", "init",                      NULL,     0, { WORKAROUND_STILLCALL, 0 } }, // Missing second argument when the game checks for autosave.cat after the Sierra logo +	SCI_WORKAROUNDENTRY_TERMINATOR +}; + +//    gameID,           room,script,lvl,          object-name, method-name, local-call-signature, index,                workaround  const SciWorkaroundEntry kFindKey_workarounds[] = {  	{ GID_ECOQUEST2,     100,   999,  0,            "myList", "contains",                   NULL,     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  	{ GID_HOYLE4,        300,   999,  0,             "Piles", "contains",                   NULL,     0, { WORKAROUND_FAKE, 0 } }, // When passing the three cards in Hearts, a null reference to a list is passed - bug #5664 diff --git a/engines/sci/engine/workarounds.h b/engines/sci/engine/workarounds.h index 5304fceb31..a272baecd9 100644 --- a/engines/sci/engine/workarounds.h +++ b/engines/sci/engine/workarounds.h @@ -70,6 +70,7 @@ extern const SciWorkaroundEntry kDirLoop_workarounds[];  extern const SciWorkaroundEntry kDisposeScript_workarounds[];  extern const SciWorkaroundEntry kDoSoundPlay_workarounds[];  extern const SciWorkaroundEntry kDoSoundFade_workarounds[]; +extern const SciWorkaroundEntry kFileIOOpen_workarounds[];  extern const SciWorkaroundEntry kFindKey_workarounds[];  extern const SciWorkaroundEntry kDeleteKey_workarounds[];  extern const SciWorkaroundEntry kGetAngle_workarounds[];  | 
