aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Snover2017-05-01 12:30:02 -0500
committerColin Snover2017-05-01 12:31:21 -0500
commitb208c8249441f21c22ebf23256c2e8e81a34034c (patch)
tree44c78ce4f8337488578e939263d4c17432d40253
parent6da5a175cb5e1808e8a3f22dadee31cfd410271e (diff)
downloadscummvm-rg350-b208c8249441f21c22ebf23256c2e8e81a34034c.tar.gz
scummvm-rg350-b208c8249441f21c22ebf23256c2e8e81a34034c.tar.bz2
scummvm-rg350-b208c8249441f21c22ebf23256c2e8e81a34034c.zip
SCI32: Add support for Shivers interactive demo
Closes Trac#9745.
-rw-r--r--engines/sci/detection_tables.h11
-rw-r--r--engines/sci/resource.cpp10
2 files changed, 19 insertions, 2 deletions
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 975377b09a..6ea7079848 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -3992,14 +3992,21 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING, GUIO_SHIVERS },
- // Shivers - English Windows Demo
+ // Shivers - English Windows Non-interactive Demo
// Executable scanning reports "2.100.002"
- {"shivers", "Demo", {
+ {"shivers", "Non-interactive Demo", {
{"resmap.000", 0, "d9e0bc5eddefcbe47f528760085d8927", 1186},
{"ressci.000", 0, "3a93c6340b54e07e65d0e5583354d186", 10505469},
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING, GUIO_SHIVERS },
+ // Shivers - English Windows Interactive Demo (from bgK in bug report Trac#9745)
+ {"shivers", "Demo", {
+ {"resmap.000", 0, "58a20b0c839d31d56802ead6c8f953c4", 7069},
+ {"ressci.000", 0, "f9eb6338f658945feadd4d27e58bdb93", 37404155},
+ AD_LISTEND},
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING, GUIO_SHIVERS },
+
#undef GUIO_SHIVERS_DEMO
#undef GUIO_SHIVERS
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index f61a8dbb54..94347ec4bc 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -1372,6 +1372,16 @@ void ResourceManager::processPatch(ResourceSource *source, ResourceType resource
ResourceId resId = ResourceId(resourceType, resourceNr, tuple);
ResourceType checkForType = resourceType;
+ // HACK: The SFX resource map patch in the Shivers interactive demo has
+ // broken offsets for some sounds; ignore it so that the correct map from
+ // RESSCI.000 will be used instead
+ if (g_sci->getGameId() == GID_SHIVERS && g_sci->isDemo() &&
+ resourceType == kResourceTypeMap && resourceNr == 65535) {
+
+ delete source;
+ return;
+ }
+
// base36 encoded patches (i.e. audio36 and sync36) have the same type as their non-base36 encoded counterparts
if (checkForType == kResourceTypeAudio36)
checkForType = kResourceTypeAudio;