aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2010-08-18 07:14:17 +0000
committerFilippos Karapetis2010-08-18 07:14:17 +0000
commit98a8c01dbb4498edfb4f310b15334d6139f614c3 (patch)
treed3556bcc29ec817495923f536597b377f5df29c7 /engines
parent1ca946caf0a29ae8c3279f8c9519bbcfa62ee310 (diff)
downloadscummvm-rg350-98a8c01dbb4498edfb4f310b15334d6139f614c3.tar.gz
scummvm-rg350-98a8c01dbb4498edfb4f310b15334d6139f614c3.tar.bz2
scummvm-rg350-98a8c01dbb4498edfb4f310b15334d6139f614c3.zip
SCI: Fixed bug #3038433 - "HOYLE1: Crashes"
svn-id: r52182
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/engine/klists.cpp3
-rw-r--r--engines/sci/engine/workarounds.cpp1
2 files changed, 4 insertions, 0 deletions
diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp
index 93e95099f5..2188087b8c 100644
--- a/engines/sci/engine/klists.cpp
+++ b/engines/sci/engine/klists.cpp
@@ -40,6 +40,9 @@ static bool isSaneNodePointer(SegManager *segMan, reg_t addr) {
if ((g_sci->getGameId() == GID_ICEMAN) && (g_sci->getEngineState()->currentRoomNumber() == 40)) {
// ICEMAN: when plotting course, unDrawLast is called by startPlot::changeState
// there is no previous entry so we get 0 in here
+ } else if ((g_sci->getGameId() == GID_HOYLE1) && (g_sci->getEngineState()->currentRoomNumber() == 3)) {
+ // HOYLE1: after sorting cards in hearts, in the next round
+ // we get an invalid node - bug #3038433
} else {
error("isSaneNodePointer: Node at %04x:%04x wasn't found", PRINT_REG(addr));
}
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index 4fe1e66570..f7b2b16792 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -48,6 +48,7 @@ const SciWorkaroundEntry opcodeDptoaWorkarounds[] = {
// gameID, room,script,lvl, object-name, method-name, call,index, workaround
const SciWorkaroundEntry opcodeGeWorkarounds[] = {
+ { GID_HOYLE1, 5, 213, 0, "", "export 0", -1, 0, { WORKAROUND_FAKE, 1 } }, // happens sometimes during cribbage - bug #3038433
{ GID_PQ3, 31, 31, 0, "rm031", "init", -1, 0, { WORKAROUND_FAKE, 1 } }, // pq3 english: when exiting the car, while morales is making phonecalls - bug #3037565
SCI_WORKAROUNDENTRY_TERMINATOR
};