aboutsummaryrefslogtreecommitdiff
path: root/engines/voyeur
diff options
context:
space:
mode:
authorPaul Gilbert2013-12-29 21:12:03 +1100
committerPaul Gilbert2013-12-29 21:12:03 +1100
commit3fd1abbe324a5386608fea083b15d2bd9c02e3c7 (patch)
tree0765c0b05eb8ace6c81df000b5a28f2d3650f337 /engines/voyeur
parent10af04da6a9a01d2f1ff5febed86c4c5ca6cfb8d (diff)
downloadscummvm-rg350-3fd1abbe324a5386608fea083b15d2bd9c02e3c7.tar.gz
scummvm-rg350-3fd1abbe324a5386608fea083b15d2bd9c02e3c7.tar.bz2
scummvm-rg350-3fd1abbe324a5386608fea083b15d2bd9c02e3c7.zip
VOYEUR: Implemented playAVideo code, and support for RLV3 videos
Diffstat (limited to 'engines/voyeur')
-rw-r--r--engines/voyeur/animation.cpp5
-rw-r--r--engines/voyeur/voyeur.cpp12
-rw-r--r--engines/voyeur/voyeur.h2
-rw-r--r--engines/voyeur/voyeur_game.cpp7
4 files changed, 15 insertions, 11 deletions
diff --git a/engines/voyeur/animation.cpp b/engines/voyeur/animation.cpp
index 4f8cca5707..4099ea87bd 100644
--- a/engines/voyeur/animation.cpp
+++ b/engines/voyeur/animation.cpp
@@ -37,7 +37,8 @@ RL2Decoder::~RL2Decoder() {
}
bool RL2Decoder::loadVideo(int videoId) {
- Common::String filename = Common::String::format("%s.rl2", ::Voyeur::SZ_FILENAMES[videoId]);
+ Common::String filename = Common::String::format("%s.rl2",
+ ::Voyeur::SZ_FILENAMES[videoId * 2]);
return loadFile(filename);
}
@@ -161,7 +162,7 @@ RL2Decoder::RL2VideoTrack::RL2VideoTrack(const RL2FileHeader &header, RL2AudioTr
_surface = new Graphics::Surface();
_surface->create(320, 200, Graphics::PixelFormat::createFormatCLUT8());
- if (header._backSize == 0) {
+ if (header._backSize == 0 || !strncmp((char *)&header._signature, "RLV3", 4)) {
_backSurface = NULL;
} else {
_backSurface = new Graphics::Surface();
diff --git a/engines/voyeur/voyeur.cpp b/engines/voyeur/voyeur.cpp
index b2256f06b5..dbd48f7a6a 100644
--- a/engines/voyeur/voyeur.cpp
+++ b/engines/voyeur/voyeur.cpp
@@ -535,14 +535,18 @@ void VoyeurEngine::playRL2Video(const Common::String &filename) {
}
}
+void VoyeurEngine::playAVideo(int videoId) {
+ playAVideoDuration(videoId, 9999);
+}
+
void VoyeurEngine::playAVideoDuration(int videoId, int duration) {
byte *dataP = NULL;
int totalFrames = duration * 10;
- if (videoId != -1)
+ if (videoId == -1)
return;
- if (videoId != 42) {
+ if (videoId == 42) {
_eventsManager._videoDead = 0;
dataP = _bVoy->memberAddr(0xE00);
}
@@ -625,10 +629,6 @@ void VoyeurEngine::doTransitionCard(const Common::String &time, const Common::St
flipPageAndWait();
}
-void VoyeurEngine::playAVideo(int id) {
- warning("TODO: playAVideo");
-}
-
void VoyeurEngine::saveLastInplay() {
LockClass lock;
lock.getThePassword();
diff --git a/engines/voyeur/voyeur.h b/engines/voyeur/voyeur.h
index f18ec4be16..2dde65c5d3 100644
--- a/engines/voyeur/voyeur.h
+++ b/engines/voyeur/voyeur.h
@@ -143,7 +143,7 @@ public:
void playRL2Video(const Common::String &filename);
void doTransitionCard(const Common::String &time, const Common::String &location);
- void playAVideo(int id);
+ void playAVideo(int videoId);
void playAVideoDuration(int videoId, int duration);
/**
diff --git a/engines/voyeur/voyeur_game.cpp b/engines/voyeur/voyeur_game.cpp
index 8f49680202..46b4ef6ce1 100644
--- a/engines/voyeur/voyeur_game.cpp
+++ b/engines/voyeur/voyeur_game.cpp
@@ -498,8 +498,11 @@ void VoyeurEngine::doGossip() {
// Transfer initial background to video decoder
PictureResource videoFrame(decoder.getVideoSurface());
- _graphicsManager.sDrawPic(bgPic, &videoFrame, Common::Point(-32, -20));
+ _graphicsManager.sDrawPic(bgPic, &videoFrame, Common::Point(-32, -20));
+ flipPageAndWait();
+
+ /*
byte *frameNumsP = _bVoy->memberAddr(0x309);
byte *posP = _bVoy->boltEntry(0x30A)._data;
@@ -557,7 +560,7 @@ void VoyeurEngine::doGossip() {
_eventsManager.pollEvents();
g_system->delayMillis(10);
}
-
+ */
_bVoy->freeBoltGroup(0x300);
_graphicsManager.screenReset();
}