SCI: Better fix for bug #3035058 - ECOQUEST demo: Missing subtitles
The demo really uses kGetMessage and not kMessage. We now detect which version of the message function is used. Thanks to Walter for pointing this out. svn-id: r51384
This commit is contained in:
parent
3cae0f3452
commit
828434456f
5 changed files with 52 additions and 19 deletions
|
@ -38,6 +38,7 @@ GameFeatures::GameFeatures(SegManager *segMan, Kernel *kernel) : _segMan(segMan)
|
|||
_doSoundType = SCI_VERSION_NONE;
|
||||
_lofsType = SCI_VERSION_NONE;
|
||||
_gfxFunctionsType = SCI_VERSION_NONE;
|
||||
_messageFunctionType = SCI_VERSION_NONE;
|
||||
_moveCountType = kMoveCountUninitialized;
|
||||
|
||||
#ifdef ENABLE_SCI32
|
||||
|
@ -407,6 +408,41 @@ SciVersion GameFeatures::detectGfxFunctionsType() {
|
|||
return _gfxFunctionsType;
|
||||
}
|
||||
|
||||
SciVersion GameFeatures::detectMessageFunctionType() {
|
||||
if (_messageFunctionType != SCI_VERSION_NONE)
|
||||
return _messageFunctionType;
|
||||
|
||||
if (getSciVersion() > SCI_VERSION_1_1) {
|
||||
_messageFunctionType = SCI_VERSION_1_1;
|
||||
return _messageFunctionType;
|
||||
} else if (getSciVersion() < SCI_VERSION_1_1) {
|
||||
_messageFunctionType = SCI_VERSION_1_LATE;
|
||||
return _messageFunctionType;
|
||||
}
|
||||
|
||||
Common::List<ResourceId> *resources = g_sci->getResMan()->listResources(kResourceTypeMessage, -1);
|
||||
|
||||
if (resources->empty()) {
|
||||
// No messages found, so this doesn't really matter anyway...
|
||||
_messageFunctionType = SCI_VERSION_1_1;
|
||||
return _messageFunctionType;
|
||||
}
|
||||
|
||||
Resource *res = g_sci->getResMan()->findResource(*resources->begin(), false);
|
||||
assert(res);
|
||||
|
||||
// Only v2 Message resources use the kGetMessage kernel function.
|
||||
// v3-v5 use the kMessage kernel function.
|
||||
|
||||
if (READ_SCI11ENDIAN_UINT32(res->data) / 1000 == 2)
|
||||
_messageFunctionType = SCI_VERSION_1_LATE;
|
||||
else
|
||||
_messageFunctionType = SCI_VERSION_1_1;
|
||||
|
||||
debugC(1, kDebugLevelVM, "Detected message function type: %s", getSciVersionDesc(_messageFunctionType));
|
||||
return _messageFunctionType;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_SCI32
|
||||
bool GameFeatures::autoDetectSci21KernelType() {
|
||||
// First, check if the Sound object is loaded
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue