diff options
author | Matthew Hoops | 2010-07-28 15:34:34 +0000 |
---|---|---|
committer | Matthew Hoops | 2010-07-28 15:34:34 +0000 |
commit | 191d50171a1afe358be2a56d26c0c50c36231df2 (patch) | |
tree | 66a430192ace6ea109ccdf680510bb45f312a92d /engines/sci | |
parent | 8a843b6c2152ef0019dfbf864fb250af308b6f9e (diff) | |
download | scummvm-rg350-191d50171a1afe358be2a56d26c0c50c36231df2.tar.gz scummvm-rg350-191d50171a1afe358be2a56d26c0c50c36231df2.tar.bz2 scummvm-rg350-191d50171a1afe358be2a56d26c0c50c36231df2.zip |
SCI: Fix bug #3035737 - SCI Fan Games: Incorrect Version Detection
If we have a vocab 900 resource with the new decompressors, it can also be SCI0 late. If there is no parser vocab (with new decompressors), it is SCI1 early.
svn-id: r51423
Diffstat (limited to 'engines/sci')
-rw-r--r-- | engines/sci/resource.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index 65c9e6f34e..111bf6ad9b 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -1938,14 +1938,18 @@ void ResourceManager::detectSciVersion() { return; } - // New decompressors. It's either SCI_VERSION_1_EGA or SCI_VERSION_1_EARLY. - if (hasSci1Voc900()) { - s_sciVersion = SCI_VERSION_1_EGA; - return; + // New decompressors. It's either SCI_VERSION_0_LATE, SCI_VERSION_1_EGA or SCI_VERSION_1_EARLY. + if (testResource(ResourceId(kResourceTypeVocab, 900))) { + if (hasSci1Voc900()) { + s_sciVersion = SCI_VERSION_1_EGA; + return; + } else { + s_sciVersion = SCI_VERSION_0_LATE; + return; + } } - // SCI_VERSION_1_EARLY EGA versions seem to be lacking a valid vocab.900. - // If this turns out to be unreliable, we could do some pic resource checks instead. + // SCI_VERSION_1_EARLY EGA versions lack the parser vocab s_sciVersion = SCI_VERSION_1_EARLY; return; case kResVersionSci1Middle: |