aboutsummaryrefslogtreecommitdiff
path: root/kyra/wsamovie.h
diff options
context:
space:
mode:
authorJames Brown2004-11-11 13:37:35 +0000
committerJames Brown2004-11-11 13:37:35 +0000
commit1f7ccd02938a1e418bf83ed44014631187df7fcb (patch)
tree4520666f4533c081d991932bdb6cb81ae9f0fe7c /kyra/wsamovie.h
parente67ffaaff0c95a25580db000e4fc1cc9ae81940c (diff)
downloadscummvm-rg350-1f7ccd02938a1e418bf83ed44014631187df7fcb.tar.gz
scummvm-rg350-1f7ccd02938a1e418bf83ed44014631187df7fcb.tar.bz2
scummvm-rg350-1f7ccd02938a1e418bf83ed44014631187df7fcb.zip
Bring kyra up-to-date with patch 1051358
svn-id: r15786
Diffstat (limited to 'kyra/wsamovie.h')
-rw-r--r--kyra/wsamovie.h69
1 files changed, 61 insertions, 8 deletions
diff --git a/kyra/wsamovie.h b/kyra/wsamovie.h
index 2f23a5c4c2..62b7b8489d 100644
--- a/kyra/wsamovie.h
+++ b/kyra/wsamovie.h
@@ -31,30 +31,42 @@ namespace Kyra {
public:
- virtual ~Movie() {}
+ virtual ~Movie() { _transparency = -1; _ownPalette = 0; _frameCount = 0; }
+ virtual void renderFrame(uint8* plane, uint16 planepitch, uint16 planeheight, uint16 frame) = 0;
virtual const uint8* loadFrame(uint16 frame, uint16* width = 0, uint16* height = 0) = 0;
virtual uint16 countFrames(void) { return _frameCount; }
+ // could be deleted(not imdiantly maybe it's needed sometime)
+ virtual void transparency(int16 color) { _transparency = color; }
+ virtual void position(uint16 x, uint16 y) = 0;
+
virtual bool hasPalette(void) { return (_ownPalette != 0); }
virtual Palette* palette(void) { return _ownPalette; }
+
+ virtual bool looping(void) { return false; }
+ virtual uint32 frameChange(void) { return 100; }
+ virtual void setImageBackground(uint8* plane, uint16 planepitch, uint16 height) {};
protected:
+ int16 _transparency;
uint16 _frameCount;
Palette* _ownPalette;
};
// movie format for Kyrandia 1
- // there is also a new WSA Format for Kyrandia 2
- // which i will implement in future
class WSAMovieV1 : public Movie {
public:
- WSAMovieV1(uint8* data, uint32 size);
+ WSAMovieV1(uint8* data, uint32 size, uint8 gameid);
~WSAMovieV1();
+ void renderFrame(uint8* plane, uint16 planepitch, uint16 planeheight, uint16 frame);
const uint8* loadFrame(uint16 frame, uint16* width, uint16* height);
+ void setImageBackground(uint8* plane, uint16 planepitch, uint16 height);
+
+ void position(uint16 x, uint16 y) { _wsaHeader._xPos = x; _wsaHeader._yPos = y; }
protected:
uint8* _buffer;
@@ -62,19 +74,60 @@ namespace Kyra {
#pragma START_PACK_STRUCTS
struct WSAHeader {
uint16 _numFrames; // All right
+ uint16 _width; // All right
+ uint16 _height; // All right
+ uint8 _xPos; // is wrong
+ uint8 _yPos; // is wrong
+ uint16 _delta; // should be right
+ uint16 _type; // should be right
+ } GCC_PACK _wsaHeader;
+#pragma END_PACK_STRUCTS
+
+ uint32* _offsetTable;
+
+ uint8* _currentFrame;
+ uint16 _prefetchedFrame;
+
+ uint8* _background; // only a pointer to the screen
+ uint16 _backWidth, _backHeight;
+ };
+
+ // movie format for Kyrandia 2+
+ class WSAMovieV2 : public Movie {
+
+ public:
+ WSAMovieV2(uint8* data, uint32 size);
+ ~WSAMovieV2();
+
+ void renderFrame(uint8* plane, uint16 planepitch, uint16 planeheight, uint16 frame);
+ const uint8* loadFrame(uint16 frame, uint16* width, uint16* height);
+ void setImageBackground(uint8* plane, uint16 planepitch, uint16 height);
+
+ void position(uint16 x, uint16 y) { _wsaHeader._xPos = x; _wsaHeader._yPos = y; }
+ bool looping(void) { return _looping; }
+ protected:
+
+ uint8* _buffer;
+
+ struct WSAHeader {
+ uint16 _numFrames; // All right
uint16 _width; // should be right
uint16 _height; // should be right
- uint8 _xPos; // could be wrong
- uint8 _yPos; // could be wrong
+ uint16 _xPos; // could be wrong
+ uint16 _yPos; // could be wrong
uint16 _delta; // could be wrong
uint16 _type; // should be right
} GCC_PACK _wsaHeader;
-#pragma END_PACK_STRUCTS
-
+
uint32* _offsetTable;
uint8* _currentFrame;
uint16 _prefetchedFrame;
+
+ uint8* _background; // only a pointer to the screen
+ uint16 _backWidth, _backHeight;
+
+ bool _looping;
};
} // end of namespace Kyra