diff options
author | Torbjörn Andersson | 2006-05-21 18:16:34 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2006-05-21 18:16:34 +0000 |
commit | 9fad465cf6c22dfe17f32057c627bfb3e5f0a258 (patch) | |
tree | c50c28c672dc754da4d4fc5a889349ef4a7cc36a /engines | |
parent | b2d8f804cd40df6d3e3e50d7640bd8f1433be9ba (diff) | |
download | scummvm-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.cpp | 3 | ||||
-rw-r--r-- | engines/kyra/vqa.cpp | 13 | ||||
-rw-r--r-- | engines/kyra/vqa.h | 122 | ||||
-rw-r--r-- | engines/kyra/wsamovie.h | 78 |
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 |