From 168774c3c6bd942970b7bc35ebe7b5abdb535b5b Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Mon, 27 Feb 2017 10:11:46 -0600 Subject: SCI32: Add kPlayVMD subop 27 (SetPlane) Used by RAMA, when playing a video at the Hub Camp computer at the beginning of the game (room 1004). --- engines/sci/engine/kernel.h | 1 + engines/sci/engine/kernel_tables.h | 1 + engines/sci/engine/kvideo.cpp | 5 +++++ 3 files changed, 7 insertions(+) (limited to 'engines/sci/engine') diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h index c648cd0323..dd75f26320 100644 --- a/engines/sci/engine/kernel.h +++ b/engines/sci/engine/kernel.h @@ -477,6 +477,7 @@ reg_t kPlayVMDPlayUntilEvent(EngineState *s, int argc, reg_t *argv); reg_t kPlayVMDShowCursor(EngineState *s, int argc, reg_t *argv); reg_t kPlayVMDSetBlackoutArea(EngineState *s, int argc, reg_t *argv); reg_t kPlayVMDRestrictPalette(EngineState *s, int argc, reg_t *argv); +reg_t kPlayVMDSetPlane(EngineState *s, int argc, reg_t *argv); reg_t kShowMovie32(EngineState *s, int argc, reg_t *argv); reg_t kShowMovieWin(EngineState *s, int argc, reg_t *argv); diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index fd7415ba8f..716a8515a0 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -474,6 +474,7 @@ static const SciKernelMapSubEntry kPlayVMD_subops[] = { { SIG_SINCE_SCI21, 18, MAP_DUMMY(PlayVMDStopBlobs), "", NULL }, { SIG_SINCE_SCI21, 21, MAP_CALL(PlayVMDSetBlackoutArea), "iiii", NULL }, { SIG_SINCE_SCI21, 23, MAP_CALL(PlayVMDRestrictPalette), "ii", NULL }, + { SIG_SCI3, 27, MAP_CALL(PlayVMDSetPlane), "i(i)", NULL }, { SIG_SCI3, 28, MAP_EMPTY(PlayVMDSetPreload), "i", NULL }, SCI_SUBOPENTRY_TERMINATOR }; diff --git a/engines/sci/engine/kvideo.cpp b/engines/sci/engine/kvideo.cpp index 6f93b041b5..9398e6d75e 100644 --- a/engines/sci/engine/kvideo.cpp +++ b/engines/sci/engine/kvideo.cpp @@ -471,6 +471,11 @@ reg_t kPlayVMDRestrictPalette(EngineState *s, int argc, reg_t *argv) { return s->r_acc; } +reg_t kPlayVMDSetPlane(EngineState *s, int argc, reg_t *argv) { + g_sci->_video32->getVMDPlayer().setPlane(argv[0].toSint16(), argc > 1 ? argv[1] : NULL_REG); + return s->r_acc; +} + reg_t kPlayDuck(EngineState *s, int argc, reg_t *argv) { if (!s) return make_reg(0, getSciVersion()); -- cgit v1.2.3