aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/resource.cpp
diff options
context:
space:
mode:
authorMatthew Hoops2010-07-28 15:34:34 +0000
committerMatthew Hoops2010-07-28 15:34:34 +0000
commit191d50171a1afe358be2a56d26c0c50c36231df2 (patch)
tree66a430192ace6ea109ccdf680510bb45f312a92d /engines/sci/resource.cpp
parent8a843b6c2152ef0019dfbf864fb250af308b6f9e (diff)
downloadscummvm-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/resource.cpp')
-rw-r--r--engines/sci/resource.cpp16
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: