diff options
-rw-r--r-- | engines/sci/engine/kernel.cpp | 1 | ||||
-rw-r--r-- | engines/sci/engine/kernel.h | 1 | ||||
-rw-r--r-- | engines/sci/engine/kgraphics.cpp | 17 | ||||
-rw-r--r-- | engines/sci/gfx/gfx_resource.h | 2 |
4 files changed, 20 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index 7985d3301b..98392803a4 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -211,6 +211,7 @@ SciKernelFunction kfunct_mappers[] = { DEFUN("ResCheck", kResCheck, "iii*"), DEFUN("SetQuitStr", kSetQuitStr, "r"), DEFUN("ShowMovie", kShowMovie, "ri"), + DEFUN("SetVideoMode", kSetVideoMode, ".*"), // Special and NOP stuff {KF_NEW, NULL, k_Unknown, NULL}, diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h index c7110d5165..8269157ff9 100644 --- a/engines/sci/engine/kernel.h +++ b/engines/sci/engine/kernel.h @@ -434,6 +434,7 @@ reg_t kDoSync(EngineState *s, int funct_nr, int argc, reg_t *argv); reg_t kResCheck(EngineState *s, int funct_nr, int argc, reg_t *argv); reg_t kSetQuitStr(EngineState *s, int funct_nr, int argc, reg_t *argv); reg_t kShowMovie(EngineState *s, int funct_nr, int argc, reg_t *argv); +reg_t kSetVideoMode(EngineState *s, int funct_nr, int argc, reg_t *argv); reg_t k_Unknown(EngineState *s, int funct_nr, int argc, reg_t *argv); // The Unknown/Unnamed kernel function diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index 580ec4fc54..5c2fe7b642 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -3374,4 +3374,21 @@ reg_t kShowMovie(EngineState *s, int funct_nr, int argc, reg_t *argv) { return s->r_acc; } +reg_t kSetVideoMode(EngineState *s, int funct_nr, int argc, reg_t *argv) { + // This call is used for KQ6's intro. It has one parameter, which is + // 1 when the intro begins, and 0 when it ends. It is suspected that + // this is actually a flag to enable video planar memory access, as + // the video decoder in KQ6 is specifically written for the planar + // memory model. Planar memory mode access was used for VGA "Mode X" + // (320x240 resolution, although the intro in KQ6 is 320x200). + // Refer to http://en.wikipedia.org/wiki/Mode_X + + //warning("STUB: SetVideoMode %d", UKPV(0)); + + // We (ab)use this kernel function to free tagged resources when the + // intro of KQ6 starts. This fixes some palette issues in the intro. + s->gfx_state->gfxResMan->freeTaggedResources(); + return s->r_acc; +} + } // End of namespace Sci diff --git a/engines/sci/gfx/gfx_resource.h b/engines/sci/gfx/gfx_resource.h index 711681c14d..292fdfa327 100644 --- a/engines/sci/gfx/gfx_resource.h +++ b/engines/sci/gfx/gfx_resource.h @@ -95,7 +95,7 @@ struct gfxr_pic_t { ** Bit 3-5: 'filled' (all three bits are set to 1) */ - rect_t bounds; + // rect_t bounds; // unused void *undithered_buffer; /* copies visual_map->index_data before dithering */ int undithered_buffer_size; |