aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/he/cup_player_he.h
diff options
context:
space:
mode:
authorGregory Montoir2007-01-25 21:42:18 +0000
committerGregory Montoir2007-01-25 21:42:18 +0000
commit519af02245354ced0680ad3b0381eb62c69a92ed (patch)
tree7ea8bdbcf4a2e6ae5c42030a69f685564cdc47c9 /engines/scumm/he/cup_player_he.h
parentd70c83bd4b6b5a37a8c90abfff954823b49e9524 (diff)
downloadscummvm-rg350-519af02245354ced0680ad3b0381eb62c69a92ed.tar.gz
scummvm-rg350-519af02245354ced0680ad3b0381eb62c69a92ed.tar.bz2
scummvm-rg350-519af02245354ced0680ad3b0381eb62c69a92ed.zip
modified CUP player code to read data directly from a file stream instead of a large memory buffer.
svn-id: r25195
Diffstat (limited to 'engines/scumm/he/cup_player_he.h')
-rw-r--r--engines/scumm/he/cup_player_he.h43
1 files changed, 21 insertions, 22 deletions
diff --git a/engines/scumm/he/cup_player_he.h b/engines/scumm/he/cup_player_he.h
index 6f2f72ba64..317a371a0e 100644
--- a/engines/scumm/he/cup_player_he.h
+++ b/engines/scumm/he/cup_player_he.h
@@ -24,6 +24,8 @@
#if !defined(CUP_PLAYER_HE_H) && !defined(DISABLE_HE)
#define CUP_PLAYER_HE_H
+#include "common/stream.h"
+
namespace Scumm {
struct CUP_Sfx {
@@ -57,26 +59,22 @@ public:
bool open(const char *filename);
void close();
- uint32 loadNextChunk();
- void parseHeaderTags();
void play();
- void setDirtyScreenRect(const Common::Rect &r);
+ void copyRectToScreen(const Common::Rect &r);
void updateScreen();
void updateSfx();
void waitForSfxChannel(int channel);
- void parseNextTag(const uint8 *data, uint32 &tag, uint32 &size);
- void handleHEAD(const uint8 *data, uint32 dataSize);
- void handleSFXB(const uint8 *data, uint32 dataSize);
- void handleRGBS(const uint8 *data, uint32 dataSize);
- void handleFRAM(uint8 *dst, const uint8 *data, uint32 size);
- void decodeFRAM(uint8 *dst, Common::Rect &dstRect, const uint8 *data, int type);
- void handleSRLE(uint8 *dst, const uint8 *data, uint32 size);
- void decodeSRLE(uint8 *dst, const uint8 *colorMap, const uint8 *data, int unpackedSize);
- uint8 *handleLZSS(const uint8 *data, uint32 dataSize);
- void decodeLZSS(uint8 *dst, const uint8 *src1, const uint8 *src2, const uint8 *src3);
- void handleRATE(const uint8 *data, uint32 dataSize);
- void handleSNDE(const uint8 *data, uint32 dataSize);
- void handleTOIL(const uint8 *data, uint32 dataSize);
+ bool parseNextHeaderTag(Common::SeekableReadStream &dataStream);
+ bool parseNextBlockTag(Common::SeekableReadStream &dataStream);
+ void handleHEAD(Common::SeekableReadStream &dataStream, uint32 dataSize);
+ void handleSFXB(Common::SeekableReadStream &dataStream, uint32 dataSize);
+ void handleRGBS(Common::SeekableReadStream &dataStream, uint32 dataSize);
+ void handleFRAM(Common::SeekableReadStream &dataStream, uint32 dataSize);
+ void handleSRLE(Common::SeekableReadStream &dataStream, uint32 dataSize);
+ bool handleLZSS(Common::SeekableReadStream &dataStream, uint32 dataSize);
+ void handleRATE(Common::SeekableReadStream &dataStream, uint32 dataSize);
+ void handleSNDE(Common::SeekableReadStream &dataStream, uint32 dataSize);
+ void handleTOIL(Common::SeekableReadStream &dataStream, uint32 dataSize);
protected:
@@ -84,8 +82,7 @@ protected:
Audio::Mixer *_mixer;
OSystem *_system;
- Common::File _fd;
- uint32 _dataSize;
+ Common::File _fileStream;
int _playbackRate;
int _width, _height;
@@ -94,10 +91,12 @@ protected:
bool _paletteChanged;
uint8 *_offscreenBuffer;
- uint8 *_currentChunkData;
- uint32 _currentChunkSize;
- uint8 *_bufferLzssData;
- uint32 _bufferLzssSize;
+ uint8 *_inLzssBufData;
+ uint32 _inLzssBufSize;
+ uint8 *_outLzssBufData;
+ uint32 _outLzssBufSize;
+
+ uint32 _dataSize;
int _sfxCount;
uint8 *_sfxBuffer;