aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/console.cpp7
-rw-r--r--engines/sci/engine/script.cpp3
2 files changed, 9 insertions, 1 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp
index 409abb6298..7dfafba8ae 100644
--- a/engines/sci/console.cpp
+++ b/engines/sci/console.cpp
@@ -2749,6 +2749,13 @@ bool Console::cmdFindKernelFunctionCall(int argc, const char **argv) {
SegManager *segMan = _engine->getEngineState()->_segMan;
while (itr != resources->end()) {
+ if (_engine->getGameId() == GID_KQ5 && itr->getNumber() == 980) {
+ // Ignore script 980 in KQ5. Seems to be a leftover, as it
+ // uses a superclass from script 988, which doesn't exist
+ itr++;
+ continue;
+ }
+
// Load script
scriptSegment = segMan->instantiateScript(itr->getNumber());
script = segMan->getScript(scriptSegment);
diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp
index 5fe2f289b6..ec64e1bfa1 100644
--- a/engines/sci/engine/script.cpp
+++ b/engines/sci/engine/script.cpp
@@ -596,10 +596,11 @@ void Script::initialiseObjectsSci0(SegManager *segMan, SegmentId segmentId) {
obj->initSpecies(segMan, addr);
if (!obj->initBaseObject(segMan, addr)) {
- if (_nr == 202 && g_sci->getGameId() == GID_KQ5) {
+ if ((_nr == 202 || _nr == 764) && g_sci->getGameId() == GID_KQ5) {
// WORKAROUND: Script 202 of KQ5 French and German
// (perhaps Spanish too?) has an invalid object.
// This is non-fatal. Refer to bug #3035396.
+ // Same happens with script 764, it seems to contain junk towards its end
} else {
error("Failed to locate base object for object at %04X:%04X; skipping", PRINT_REG(addr));
}