diff options
author | Colin Snover | 2017-09-24 03:42:27 -0500 |
---|---|---|
committer | Colin Snover | 2017-09-24 22:56:58 -0500 |
commit | 663d845d631ccd9d970e03fa7504daa55efd4a12 (patch) | |
tree | 3f6bb478dff360ec455b1b59d90f61aee7e3c2e3 /engines | |
parent | 3e107c1eb06a33f1cbb8442a5a5732f98dfa4823 (diff) | |
download | scummvm-rg350-663d845d631ccd9d970e03fa7504daa55efd4a12.tar.gz scummvm-rg350-663d845d631ccd9d970e03fa7504daa55efd4a12.tar.bz2 scummvm-rg350-663d845d631ccd9d970e03fa7504daa55efd4a12.zip |
SCI32: Add workarounds for uninitialized reads in RAMA
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/engine/workarounds.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index 1bbca7559f..0254ead9ea 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -236,6 +236,26 @@ static const uint16 sig_uninitread_qfg3_2[] = { SIG_END }; +// Game: RAMA +// Calling method: securityKeypad::newRoom +// Subroutine offset: English 0x3b20 (script 6110) +// Applies to at least: English +static const uint16 sig_uninitread_rama_1[] = { + 0x7e, SIG_UINT16(0x121), // line 289 + 0x7d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x6b, 0x65, 0x79, 0x2e, 0x73, 0x63, 0x00, // file "securkey.sc" + SIG_END +}; + +// Game: RAMA +// Calling method: key1::doVerb, key2, key3, etc. +// Subroutine offset: English 0x5254 (script 6107) +// Applies to at least: English +static const uint16 sig_uninitread_rama_2[] = { + 0x7e, SIG_UINT16(0xf2), // line 242 + 0x7d, 0x61, 0x76, 0x73, 0x65, 0x63, 0x75, 0x72, 0x37, 0x2e, 0x73, 0x63, 0x00, // file "avsecur7.sc" + SIG_END +}; + // Game: Space Quest 1 // Calling method: firePulsar::changeState // Subroutine offset: English 0x018a (script 703) @@ -401,6 +421,8 @@ const SciWorkaroundEntry uninitializedReadWorkarounds[] = { { GID_QFG4, 800, 64950, 0, "View", "handleEvent", NULL, 0, { WORKAROUND_FAKE, 0 } }, // CD version, in the room with the spider pillar, when climbing on the pillar { GID_RAMA, -1, 64950, -1, NULL, "handleEvent", NULL, 0, { WORKAROUND_FAKE, 0 } }, // When clicking on the main game interface, or the main menu buttons, or mousing over things in the main game window { GID_RAMA, -1, 64923, -1, "Inset", "init", NULL, 0, { WORKAROUND_FAKE, 0 } }, // When receiving a message on the pocket computer at the start of the game + { GID_RAMA, 6107, 6107, -1, NULL, "doVerb", sig_uninitread_rama_2, 0, { WORKAROUND_FAKE, 0 } }, // When pressing keys on the final console in the Avian Lair + { GID_RAMA, 6110, 6110, -1, "securityKeypad", "newRoom", sig_uninitread_rama_1, 0, { WORKAROUND_FAKE, 0 } }, // When entering the correct key combination on the security console in the Avian Lair { GID_SHIVERS, -1, 952, 0, "SoundManager", "stop", NULL, 2, { WORKAROUND_FAKE, 0 } }, // Just after Sierra logo { GID_SHIVERS, -1, 64950, 0, "Feature", "handleEvent", NULL, 0, { WORKAROUND_FAKE, 0 } }, // When clicking on the locked door at the beginning { GID_SHIVERS, -1, 64950, 0, "View", "handleEvent", NULL, 0, { WORKAROUND_FAKE, 0 } }, // When clicking on the gargoyle eye at the beginning |