aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/engine/game.cpp2
-rw-r--r--engines/sci/gfx/gfx_resmgr.cpp4
-rw-r--r--engines/sci/resource.cpp8
3 files changed, 11 insertions, 3 deletions
diff --git a/engines/sci/engine/game.cpp b/engines/sci/engine/game.cpp
index c2db6fc793..76dda57518 100644
--- a/engines/sci/engine/game.cpp
+++ b/engines/sci/engine/game.cpp
@@ -197,7 +197,7 @@ int _reset_graphics_input(EngineState *s) {
} else {
resource = s->resMan->findResource(ResourceId(kResourceTypePalette, 999), 1);
if (resource) {
- if (getSciVersion() < SCI_VERSION_1_1)
+ if (s->resMan->getViewType() != kViewVga11)
s->gfx_state->gfxResMan->setStaticPalette(gfxr_read_pal1(999, resource->data, resource->size));
else
s->gfx_state->gfxResMan->setStaticPalette(gfxr_read_pal11(999, resource->data, resource->size));
diff --git a/engines/sci/gfx/gfx_resmgr.cpp b/engines/sci/gfx/gfx_resmgr.cpp
index 90aaaad091..967b80b889 100644
--- a/engines/sci/gfx/gfx_resmgr.cpp
+++ b/engines/sci/gfx/gfx_resmgr.cpp
@@ -90,7 +90,7 @@ void GfxResManager::calculatePic(gfxr_pic_t *scaled_pic, gfxr_pic_t *unscaled_pi
error("calculatePic(): pic number %d not found", nr);
if (need_unscaled) {
- if (getSciVersion() == SCI_VERSION_1_1)
+ if (_resMan->getViewType() == kViewVga11)
gfxr_draw_pic11(unscaled_pic, flags, default_palette, res->size, res->data, &basic_style, res->id.number, _staticPalette, _portBounds);
else
gfxr_draw_pic01(unscaled_pic, flags, default_palette, res->size, res->data, &basic_style, res->id.number, _resMan->getViewType(), _staticPalette, _portBounds);
@@ -99,7 +99,7 @@ void GfxResManager::calculatePic(gfxr_pic_t *scaled_pic, gfxr_pic_t *unscaled_pi
if (scaled_pic && scaled_pic->undithered_buffer)
memcpy(scaled_pic->visual_map->index_data, scaled_pic->undithered_buffer, scaled_pic->undithered_buffer_size);
- if (getSciVersion() == SCI_VERSION_1_1)
+ if (_resMan->getViewType() == kViewVga11)
gfxr_draw_pic11(scaled_pic, flags, default_palette, res->size, res->data, &style, res->id.number, _staticPalette, _portBounds);
else
gfxr_draw_pic01(scaled_pic, flags, default_palette, res->size, res->data, &style, res->id.number, _resMan->getViewType(), _staticPalette, _portBounds);
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index 743ee27165..493c56560a 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -1629,6 +1629,14 @@ void ResourceManager::detectSciVersion() {
}
}
+ // Check for transitive SCI1/SCI1.1 games, like PQ1 here
+ // If the game has any heap file (here we check for heap file 0), then
+ // it definitely uses a SCI1.1 kernel
+ if (testResource(ResourceId(kResourceTypeHeap, 0))) {
+ s_sciVersion = SCI_VERSION_1_1;
+ return;
+ }
+
switch (_mapVersion) {
case kResVersionSci0Sci1Early:
if (_viewType == kViewVga) {