aboutsummaryrefslogtreecommitdiff
path: root/engines/gob
diff options
context:
space:
mode:
authorSven Hesse2010-03-11 06:15:23 +0000
committerSven Hesse2010-03-11 06:15:23 +0000
commitc8d5f21010808f572016fbc13da424e67978f933 (patch)
tree6b17d7c232a05756d174989d694097e5dde91f2a /engines/gob
parent31f980ffde0edd77594b7eece673dd5f0ec35962 (diff)
downloadscummvm-rg350-c8d5f21010808f572016fbc13da424e67978f933.tar.gz
scummvm-rg350-c8d5f21010808f572016fbc13da424e67978f933.tar.bz2
scummvm-rg350-c8d5f21010808f572016fbc13da424e67978f933.zip
Adding support for the early Fascination IMD format
svn-id: r48234
Diffstat (limited to 'engines/gob')
-rw-r--r--engines/gob/videoplayer.cpp14
-rw-r--r--engines/gob/videoplayer.h13
2 files changed, 16 insertions, 11 deletions
diff --git a/engines/gob/videoplayer.cpp b/engines/gob/videoplayer.cpp
index 6230cad18c..ec3901415a 100644
--- a/engines/gob/videoplayer.cpp
+++ b/engines/gob/videoplayer.cpp
@@ -38,7 +38,7 @@
namespace Gob {
-const char *VideoPlayer::_extensions[] = { "IMD", "VMD", "RMD", "SMD" };
+const char *VideoPlayer::_extensions[] = { "IMD", "IMD", "VMD", "RMD", "SMD" };
VideoPlayer::Video::Video(GobEngine *vm) : _vm(vm), _stream(0), _video(0) {
}
@@ -47,7 +47,7 @@ VideoPlayer::Video::~Video() {
close();
}
-bool VideoPlayer::Video::open(const char *fileName, Type which) {
+bool VideoPlayer::Video::open(const char *fileName, Type which, int16 width, int16 height) {
close();
int16 handle = _vm->_dataIO->openData(fileName);
@@ -61,6 +61,8 @@ bool VideoPlayer::Video::open(const char *fileName, Type which) {
if (which == kVideoTypeIMD) {
_video = new Graphics::Imd();
+ } else if (which == kVideoTypePreIMD) {
+ _video = new Graphics::PreImd(width, height);
} else if (which == kVideoTypeVMD) {
_video = new Graphics::Vmd(_vm->_video->_palLUT);
} else if (which == kVideoTypeRMD) {
@@ -223,7 +225,7 @@ bool VideoPlayer::findFile(char *fileName, Type &which) {
}
bool VideoPlayer::primaryOpen(const char *videoFile, int16 x, int16 y,
- int32 flags, Type which) {
+ int32 flags, Type which, int16 width, int16 height) {
char fileName[256];
@@ -233,7 +235,7 @@ bool VideoPlayer::primaryOpen(const char *videoFile, int16 x, int16 y,
return false;
if (scumm_strnicmp(_primaryVideo->getFileName(), fileName, strlen(fileName))) {
- if (!_primaryVideo->open(fileName, which))
+ if (!_primaryVideo->open(fileName, which, width, height))
return false;
// WORKAROUND: In some rare cases, the cursor should still be
@@ -389,7 +391,7 @@ void VideoPlayer::primaryClose() {
_primaryVideo->close();
}
-int VideoPlayer::slotOpen(const char *videoFile, Type which) {
+int VideoPlayer::slotOpen(const char *videoFile, Type which, int16 width, int16 height) {
Video *video = new Video(_vm);
char fileName[256];
@@ -400,7 +402,7 @@ int VideoPlayer::slotOpen(const char *videoFile, Type which) {
return -1;
}
- if (!video->open(fileName, which)) {
+ if (!video->open(fileName, which, width, height)) {
delete video;
return -1;
}
diff --git a/engines/gob/videoplayer.h b/engines/gob/videoplayer.h
index 28e72ab43a..8ca8aebf44 100644
--- a/engines/gob/videoplayer.h
+++ b/engines/gob/videoplayer.h
@@ -52,15 +52,17 @@ public:
enum Type {
kVideoTypeTry = -1,
kVideoTypeIMD = 0,
- kVideoTypeVMD = 1,
- kVideoTypeRMD = 2
+ kVideoTypePreIMD = 1,
+ kVideoTypeVMD = 2,
+ kVideoTypeRMD = 3
};
VideoPlayer(GobEngine *vm);
~VideoPlayer();
bool primaryOpen(const char *videoFile, int16 x = -1, int16 y = -1,
- int32 flags = kFlagFrontSurface, Type which = kVideoTypeTry);
+ int32 flags = kFlagFrontSurface, Type which = kVideoTypeTry,
+ int16 width = -1, int16 height = -1);
bool primaryPlay(int16 startFrame = -1, int16 lastFrame = -1,
int16 breakKey = kShortKeyEscape,
uint16 palCmd = 8, int16 palStart = 0, int16 palEnd = 255,
@@ -72,7 +74,8 @@ public:
uint16 palCmd = 8, int16 palStart = 0, int16 palEnd = 255,
int16 palFrame = -1 , int16 endFrame = -1, bool noRetrace = false);
- int slotOpen(const char *videoFile, Type which = kVideoTypeTry);
+ int slotOpen(const char *videoFile, Type which = kVideoTypeTry,
+ int16 width = -1, int16 height = -1);
void slotPlay(int slot, int16 frame = -1);
void slotClose(int slot);
void slotCopyFrame(int slot, byte *dest,
@@ -109,7 +112,7 @@ private:
Video(GobEngine *vm);
~Video();
- bool open(const char *fileName, Type which);
+ bool open(const char *fileName, Type which, int16 width, int16 height);
void close();
bool isOpen() const;