aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorColin Snover2017-09-24 03:42:27 -0500
committerColin Snover2017-09-24 22:56:58 -0500
commit663d845d631ccd9d970e03fa7504daa55efd4a12 (patch)
tree3f6bb478dff360ec455b1b59d90f61aee7e3c2e3 /engines/sci/engine
parent3e107c1eb06a33f1cbb8442a5a5732f98dfa4823 (diff)
downloadscummvm-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/sci/engine')
-rw-r--r--engines/sci/engine/workarounds.cpp22
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