SCI: Some slight changes to get the "find_callk" console command working in KQ5

- Ignore invalid object in KQ5 script 784
- Script 980 looks to be an unused leftover, as its object contain references to
classes placed in script 988, which is missing

svn-id: r54455
This commit is contained in:
Filippos Karapetis 2010-11-24 11:57:11 +00:00
parent 332a438ccf
commit 7fc171e3bc
2 changed files with 9 additions and 1 deletions

View File

@ -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);

View File

@ -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));
}