aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorTorbjörn Andersson2006-05-21 18:16:34 +0000
committerTorbjörn Andersson2006-05-21 18:16:34 +0000
commit9fad465cf6c22dfe17f32057c627bfb3e5f0a258 (patch)
treec50c28c672dc754da4d4fc5a889349ef4a7cc36a /engines
parentb2d8f804cd40df6d3e3e50d7640bd8f1433be9ba (diff)
downloadscummvm-rg350-9fad465cf6c22dfe17f32057c627bfb3e5f0a258.tar.gz
scummvm-rg350-9fad465cf6c22dfe17f32057c627bfb3e5f0a258.tar.bz2
scummvm-rg350-9fad465cf6c22dfe17f32057c627bfb3e5f0a258.zip
At LordHoto's request...
* The VQA move player isn't as similar to the WSA movie player as we first envisioned, so the VQA player no longer inherits from Movie. It does retain a fairly similar calling interface, though. * Use the Kyra engine's idea of screen dimensions, rather than the backend's. svn-id: r22561
Diffstat (limited to 'engines')
-rw-r--r--engines/kyra/kyra3.cpp3
-rw-r--r--engines/kyra/vqa.cpp13
-rw-r--r--engines/kyra/vqa.h122
-rw-r--r--engines/kyra/wsamovie.h78
4 files changed, 132 insertions, 84 deletions
diff --git a/engines/kyra/kyra3.cpp b/engines/kyra/kyra3.cpp
index 3ad2c1f46f..b7c6f763cf 100644
--- a/engines/kyra/kyra3.cpp
+++ b/engines/kyra/kyra3.cpp
@@ -25,6 +25,7 @@
#include "kyra/wsamovie.h"
#include "kyra/sound.h"
#include "kyra/text.h"
+#include "kyra/vqa.h"
#include "common/system.h"
#include "common/config-manager.h"
@@ -160,7 +161,7 @@ void KyraEngine_v3::playVQA(const char *name) {
snprintf(filename, sizeof(filename), "%s%d.VQA", name, size);
- vqa.open(filename, 0, NULL);
+ vqa.open(filename);
if (vqa.opened()) {
vqa.setDrawPage(0);
vqa.play();
diff --git a/engines/kyra/vqa.cpp b/engines/kyra/vqa.cpp
index 07a8354301..b209f5ea6d 100644
--- a/engines/kyra/vqa.cpp
+++ b/engines/kyra/vqa.cpp
@@ -34,13 +34,16 @@
#include "sound/audiostream.h"
#include "sound/mixer.h"
#include "kyra/sound.h"
-#include "kyra/wsamovie.h"
#include "kyra/screen.h"
+#include "kyra/vqa.h"
namespace Kyra {
-VQAMovie::VQAMovie(KyraEngine *vm, OSystem *system) : Movie(vm) {
+VQAMovie::VQAMovie(KyraEngine *vm, OSystem *system) {
_system = system;
+ _vm = vm;
+ _opened = false;
+ _x = _y = _drawPage = -1;
}
VQAMovie::~VQAMovie() {
@@ -246,7 +249,7 @@ void VQAMovie::decodeSND1(byte *inbuf, uint32 insize, byte *outbuf, uint32 outsi
}
}
-void VQAMovie::open(const char *filename, int dummy1, uint8 *dummy2) {
+void VQAMovie::open(const char *filename) {
debugC(9, kDebugLevelMovie, "VQAMovie::open('%s')", filename);
close();
@@ -312,8 +315,8 @@ void VQAMovie::open(const char *filename, int dummy1, uint8 *dummy2) {
}
}
- setX((_system->getWidth() - _header.width) / 2);
- setY((_system->getHeight() - _header.height) / 2);
+ setX((Screen::SCREEN_W - _header.width) / 2);
+ setY((Screen::SCREEN_H - _header.height) / 2);
// HACK: I've only seen 8-bit mono audio in Kyra 3
diff --git a/engines/kyra/vqa.h b/engines/kyra/vqa.h
new file mode 100644
index 0000000000..ec13bb1c6c
--- /dev/null
+++ b/engines/kyra/vqa.h
@@ -0,0 +1,122 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef VQA_H
+#define VQA_H
+
+class OSystem;
+
+namespace Kyra {
+
+class KyraEngine;
+
+class VQAMovie {
+public:
+ VQAMovie(KyraEngine *vm, OSystem *system);
+ ~VQAMovie();
+
+ bool opened() { return _opened; }
+ int frames() { return _opened ? _header.numFrames : -1; }
+
+ // It's unlikely that we ever want to change the movie position from
+ // its default.
+
+ void setX(int x) { _x = x; }
+ void setY(int y) { _y = y; }
+
+ void setDrawPage(int page) { _drawPage = page; }
+
+ void open(const char *filename);
+ void close();
+ void play();
+
+protected:
+ OSystem *_system;
+ KyraEngine *_vm;
+
+ bool _opened;
+ int _x, _y;
+ int _drawPage;
+
+ struct VQAHeader {
+ uint16 version;
+ uint16 flags;
+ uint16 numFrames;
+ uint16 width;
+ uint16 height;
+ uint8 blockW;
+ uint8 blockH;
+ uint8 frameRate;
+ uint8 cbParts;
+ uint16 colors;
+ uint16 maxBlocks;
+ uint32 unk1;
+ uint16 unk2;
+ uint16 freq;
+ uint8 channels;
+ uint8 bits;
+ uint32 unk3;
+ uint16 unk4;
+ uint32 maxCBFZSize;
+ uint32 unk5;
+ };
+
+ struct Buffer {
+ void *data;
+ uint32 size;
+ };
+
+ Buffer _buffers[2];
+
+ void initBuffers();
+ void *allocBuffer(int num, uint32 size);
+ void freeBuffers();
+
+ int decodeFormat80(byte *inbuf, byte *outbuf);
+ void decodeSND1(byte *inbuf, uint32 insize, byte *outbuf, uint32 outsize);
+
+ void displayFrame(int frameNum);
+
+ Common::File _file;
+
+ VQAHeader _header;
+ uint32 *_frameInfo;
+ byte *_codeBook;
+ byte *_partialCodeBook;
+ bool _compressedCodeBook;
+ int _partialCodeBookSize;
+ int _numPartialCodeBooks;
+ uint32 _numVectorPointers;
+ uint16 *_vectorPointers;
+
+ byte _palette[4 * 256];
+ byte *_frame;
+
+ Audio::AppendableAudioStream *_stream;
+ Audio::SoundHandle *_sound;
+
+ uint32 readTag();
+};
+
+} // end of namespace Kyra
+
+#endif
diff --git a/engines/kyra/wsamovie.h b/engines/kyra/wsamovie.h
index ba803317d7..71402badb7 100644
--- a/engines/kyra/wsamovie.h
+++ b/engines/kyra/wsamovie.h
@@ -114,84 +114,6 @@ protected:
int16 _yAdd;
};
-// Kyra 3 VQA movies. Should perhaps be in another header file.
-
-class VQAMovie : public Movie {
-public:
- VQAMovie(KyraEngine *vm, OSystem *system);
- ~VQAMovie();
-
- // Only the first parameter is used.
- void open(const char *filename, int offscreen, uint8 *palette);
- void close();
-
- int frames() { return _opened ? _header.numFrames : -1; }
-
- // should not be used (maybe don't use Movie as a baseclass then?)
- void displayFrame(int frameNum);
-
- void play();
-protected:
- OSystem *_system;
-
- struct VQAHeader {
- uint16 version;
- uint16 flags;
- uint16 numFrames;
- uint16 width;
- uint16 height;
- uint8 blockW;
- uint8 blockH;
- uint8 frameRate;
- uint8 cbParts;
- uint16 colors;
- uint16 maxBlocks;
- uint32 unk1;
- uint16 unk2;
- uint16 freq;
- uint8 channels;
- uint8 bits;
- uint32 unk3;
- uint16 unk4;
- uint32 maxCBFZSize;
- uint32 unk5;
- };
-
- struct Buffer {
- void *data;
- uint32 size;
- };
-
- Buffer _buffers[2];
-
- void initBuffers();
- void *allocBuffer(int num, uint32 size);
- void freeBuffers();
-
- int decodeFormat80(byte *inbuf, byte *outbuf);
- void decodeSND1(byte *inbuf, uint32 insize, byte *outbuf, uint32 outsize);
-
- Common::File _file;
-
- VQAHeader _header;
- uint32 *_frameInfo;
- byte *_codeBook;
- byte *_partialCodeBook;
- bool _compressedCodeBook;
- int _partialCodeBookSize;
- int _numPartialCodeBooks;
- uint32 _numVectorPointers;
- uint16 *_vectorPointers;
-
- byte _palette[4 * 256];
- byte *_frame;
-
- Audio::AppendableAudioStream *_stream;
- Audio::SoundHandle *_sound;
-
- uint32 readTag();
-};
-
} // end of namespace Kyra
#endif