diff --git a/engines/access/access.cpp b/engines/access/access.cpp index cb47598066f..cdabb323e4e 100644 --- a/engines/access/access.cpp +++ b/engines/access/access.cpp @@ -107,6 +107,7 @@ AccessEngine::AccessEngine(OSystem *syst, const AccessGameDescription *gameDesc) _txtPages = 0; _sndSubFile = 0; _loadSaveSlot = -1; + _vidX = _vidY = 0; } AccessEngine::~AccessEngine() { @@ -171,6 +172,7 @@ void AccessEngine::initialize() { _buffer1.create(g_system->getWidth() + TILE_WIDTH, g_system->getHeight()); _buffer2.create(g_system->getWidth(), g_system->getHeight()); + _vidBuf.create(160, 101); // If requested, load a savegame instead of showing the intro if (ConfMan.hasKey("save_slot")) { diff --git a/engines/access/access.h b/engines/access/access.h index 12e0e1bd5ef..2cd35fbf1df 100644 --- a/engines/access/access.h +++ b/engines/access/access.h @@ -156,6 +156,8 @@ public: ASurface *_current; ASurface _buffer1; ASurface _buffer2; + ASurface _vidBuf; + int _vidX, _vidY; Common::Array _charTable; SpriteResource *_objectsTable[100]; bool _establishTable[100]; diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp index 3f94ea2e556..442d91d2550 100644 --- a/engines/access/scripts.cpp +++ b/engines/access/scripts.cpp @@ -123,7 +123,7 @@ void Scripts::executeCommand(int commandIndex) { &Scripts::cmdSetTravel, &Scripts::cmdSetVideo, &Scripts::cmdPlayVideo, &Scripts::cmdPlotImage, &Scripts::cmdSetDisplay, &Scripts::cmdSetBuffer, &Scripts::cmdSetScroll, &Scripts::cmdVideoEnded, &Scripts::cmdVideoEnded, - &Scripts::CMDSETBUFVID, &Scripts::CMDPLAYBUFVID, &Scripts::cmdRemoveLast, + &Scripts::cmdSetBufVid, &Scripts::CMDPLAYBUFVID, &Scripts::cmdRemoveLast, &Scripts::cmdSpecial, &Scripts::cmdSpecial, &Scripts::cmdSpecial, &Scripts::cmdSetCycle, &Scripts::cmdCycle, &Scripts::cmdCharSpeak, &Scripts::cmdTexSpeak, &Scripts::cmdTexChoice, &Scripts::cmdWait, @@ -497,8 +497,19 @@ void Scripts::cmdVideoEnded() { } } -void Scripts::CMDSETBUFVID() { error("TODO CMDSETBUFVID"); } -void Scripts::CMDPLAYBUFVID() { error("TODO CMDPLAYBUFVID"); } +void Scripts::cmdSetBufVid() { + _vm->_vidX = _data->readUint16LE(); + _vm->_vidY = _data->readUint16LE(); + int idx = _data->readUint16LE(); + int rate = _data->readUint16LE(); + + _vm->_video->setVideo(&_vm->_vidBuf, Common::Point(0, 0), FileIdent(_vm->_extraCells[idx]._vid._fileNum, _vm->_extraCells[idx]._vid._subfile), rate); +} + +void Scripts::CMDPLAYBUFVID() { + _vm->_video->playVideo(); + _vm->_video->copyVideo(); +} void Scripts::cmdRemoveLast() { --_vm->_numAnimTimers; diff --git a/engines/access/scripts.h b/engines/access/scripts.h index de27ae72056..aa9b266c0c2 100644 --- a/engines/access/scripts.h +++ b/engines/access/scripts.h @@ -98,7 +98,7 @@ protected: void cmdSetBuffer(); void cmdSetScroll(); void cmdVideoEnded(); - void CMDSETBUFVID(); + void cmdSetBufVid(); void CMDPLAYBUFVID(); void cmdRemoveLast(); void cmdSpecial(); diff --git a/engines/access/video.cpp b/engines/access/video.cpp index b46bdf240fe..539ad34b8cd 100644 --- a/engines/access/video.cpp +++ b/engines/access/video.cpp @@ -140,5 +140,7 @@ void VideoPlayer::playVideo() { } } - +void VideoPlayer::copyVideo() { + warning("TODO: copyVideo"); +} } // End of namespace Access diff --git a/engines/access/video.h b/engines/access/video.h index b49c876a079..f4be76de31b 100644 --- a/engines/access/video.h +++ b/engines/access/video.h @@ -69,6 +69,7 @@ public: */ void playVideo(); + void copyVideo(); /** * Frees the data for a previously loaded video */