diff options
author | Max Horn | 2006-10-28 01:20:19 +0000 |
---|---|---|
committer | Max Horn | 2006-10-28 01:20:19 +0000 |
commit | 9698d133a6b4559b7dbc1b1ec5cd8b6198e22466 (patch) | |
tree | bd4c646c18c718fae17c40d3ac7d73bf911df72d /engines | |
parent | 3652229147389477fe72a530cfeab9130761b35e (diff) | |
download | scummvm-rg350-9698d133a6b4559b7dbc1b1ec5cd8b6198e22466.tar.gz scummvm-rg350-9698d133a6b4559b7dbc1b1ec5cd8b6198e22466.tar.bz2 scummvm-rg350-9698d133a6b4559b7dbc1b1ec5cd8b6198e22466.zip |
SCUMM: Changed class Chunk (and subclasses) to inherit from Common::SeekableReadStream
svn-id: r24544
Diffstat (limited to 'engines')
-rw-r--r-- | engines/scumm/insane/insane.cpp | 6 | ||||
-rw-r--r-- | engines/scumm/insane/insane_iact.cpp | 44 | ||||
-rw-r--r-- | engines/scumm/smush/chunk.cpp | 123 | ||||
-rw-r--r-- | engines/scumm/smush/chunk.h | 38 | ||||
-rw-r--r-- | engines/scumm/smush/imuse_channel.cpp | 24 | ||||
-rw-r--r-- | engines/scumm/smush/saud_channel.cpp | 8 | ||||
-rw-r--r-- | engines/scumm/smush/smush_player.cpp | 112 |
7 files changed, 129 insertions, 226 deletions
diff --git a/engines/scumm/insane/insane.cpp b/engines/scumm/insane/insane.cpp index 4d769c4d84..de5b5f04d3 100644 --- a/engines/scumm/insane/insane.cpp +++ b/engines/scumm/insane/insane.cpp @@ -1320,7 +1320,7 @@ void Insane::procSKIP(Chunk &b) { if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { _player->checkBlock(b, MKID_BE('SKIP'), 2); - par1 = b.getWord(); + par1 = b.readUint16LE(); if (isBitSet(par1)) _player->_skipNext = true; return; @@ -1328,8 +1328,8 @@ void Insane::procSKIP(Chunk &b) { _player->checkBlock(b, MKID_BE('SKIP'), 4); - par1 = b.getWord(); - par2 = b.getWord(); + par1 = b.readUint16LE(); + par2 = b.readUint16LE(); if (!par2) { diff --git a/engines/scumm/insane/insane_iact.cpp b/engines/scumm/insane/insane_iact.cpp index e4275377f0..e43fb0d352 100644 --- a/engines/scumm/insane/insane_iact.cpp +++ b/engines/scumm/insane/insane_iact.cpp @@ -74,7 +74,7 @@ void Insane::iactScene1(byte *renderBitmap, int32 codecparam, int32 setupsan12, if (par3 != 1) break; - par5 = b.getWord(); // si + par5 = b.readUint16LE(); // si if (_actor[0].field_8 == 112) { setBit(par5); break; @@ -92,27 +92,27 @@ void Insane::iactScene1(byte *renderBitmap, int32 codecparam, int32 setupsan12, break; case 3: if (par3 == 1) { - setBit(b.getWord()); + setBit(b.readUint16LE()); _approachAnim = -1; } break; case 4: if (par3 == 1 && (_approachAnim < 0 || _approachAnim > 4)) - setBit(b.getWord()); + setBit(b.readUint16LE()); break; case 5: if (par2 != 13) break; - tmp = b.getWord(); // +8 - tmp = b.getWord(); // +10 - par7 = b.getWord(); // +12 dx - tmp = b.getWord(); // +14 - par9 = b.getWord(); // +16 bx - tmp = b.getWord(); // +18 - par11 = b.getWord(); // +20 cx - tmp = b.getWord(); // +22 - par13 = b.getWord(); // +24 ax + tmp = b.readUint16LE(); // +8 + tmp = b.readUint16LE(); // +10 + par7 = b.readUint16LE(); // +12 dx + tmp = b.readUint16LE(); // +14 + par9 = b.readUint16LE(); // +16 bx + tmp = b.readUint16LE(); // +18 + par11 = b.readUint16LE(); // +20 cx + tmp = b.readUint16LE(); // +22 + par13 = b.readUint16LE(); // +24 ax if (par13 > _actor[0].x || par11 < _actor[0].x) { _tiresRustle = true; @@ -143,8 +143,8 @@ void Insane::iactScene1(byte *renderBitmap, int32 codecparam, int32 setupsan12, _continueFrame1, 1300); break; case 9: - par5 = b.getWord(); // si - par6 = b.getWord(); // bx + par5 = b.readUint16LE(); // si + par6 = b.readUint16LE(); // bx smlayer_setFluPalette(_smush_roadrsh3Rip, 0); if (par5 == par6 - 1) smlayer_setFluPalette(_smush_roadrashRip, 0); @@ -153,10 +153,10 @@ void Insane::iactScene1(byte *renderBitmap, int32 codecparam, int32 setupsan12, case 7: switch (par4) { case 1: - _actor[0].x -= (b.getWord() - 160) / 10; + _actor[0].x -= (b.readUint16LE() - 160) / 10; break; case 2: - par5 = b.getWord(); + par5 = b.readUint16LE(); if (par5 - 8 > _actor[0].x || par5 + 8 < _actor[0].x) { if (smlayer_isSoundRunning(86)) @@ -297,8 +297,8 @@ void Insane::iactScene3(byte *renderBitmap, int32 codecparam, int32 setupsan12, int par2, par3; if (command == 6) { if (par1 == 9) { - par2 = b.getWord(); // ptr + 8 - par3 = b.getWord(); // ptr + 10 + par2 = b.readUint16LE(); // ptr + 8 + par3 = b.readUint16LE(); // ptr + 10 if (!par2) smlayer_setFluPalette(_smush_roadrsh3Rip, 0); @@ -322,7 +322,7 @@ void Insane::iactScene4(byte *renderBitmap, int32 codecparam, int32 setupsan12, switch (par1) { case 2: case 4: - par5 = b.getWord(); // si + par5 = b.readUint16LE(); // si switch (par3) { case 1: if (par4 == 1) { @@ -397,7 +397,7 @@ void Insane::iactScene6(byte *renderBitmap, int32 codecparam, int32 setupsan12, switch (par1) { case 7: - par5 = b.getWord(); + par5 = b.readUint16LE(); if (par4 != 3) break; @@ -408,7 +408,7 @@ void Insane::iactScene6(byte *renderBitmap, int32 codecparam, int32 setupsan12, break; case 2: case 4: - par5 = b.getWord(); + par5 = b.readUint16LE(); switch (par3) { case 1: if (par4 == 1) { @@ -483,7 +483,7 @@ void Insane::iactScene17(byte *renderBitmap, int32 codecparam, int32 setupsan12, case 3: case 4: if (par3 == 1) { - setBit(b.getWord()); + setBit(b.readUint16LE()); _approachAnim = -1; } break; diff --git a/engines/scumm/smush/chunk.cpp b/engines/scumm/smush/chunk.cpp index 7c7c27ac72..e70018b6f7 100644 --- a/engines/scumm/smush/chunk.cpp +++ b/engines/scumm/smush/chunk.cpp @@ -38,11 +38,11 @@ BaseChunk::BaseChunk() : _name("") { } -bool BaseChunk::eof() const { +bool BaseChunk::eos() const { return _curPos >= _size; } -uint32 BaseChunk::tell() const { +uint32 BaseChunk::pos() const { return _curPos; } @@ -50,22 +50,22 @@ Chunk::type BaseChunk::getType() const { return _type; } -uint32 BaseChunk::getSize() const { +uint32 BaseChunk::size() const { return _size; } -bool BaseChunk::seek(int32 delta, seek_type dir) { +void BaseChunk::seek(int32 delta, int dir) { switch (dir) { - case seek_cur: + case SEEK_CUR: _curPos += delta; break; - case seek_start: + case SEEK_SET: if (delta < 0) error("invalid seek request"); _curPos = (uint32)delta; break; - case seek_end: + case SEEK_END: if (delta > 0 || _size < (uint32)-delta) error("invalid seek request"); @@ -82,14 +82,13 @@ bool BaseChunk::seek(int32 delta, seek_type dir) { warning("Looks like you compressed file %s in wrong way. It has FLU index which was not updated", _name.c_str()); error("invalid seek request : %d > %d (delta == %d)", _curPos, _size, delta); } - return true; } FileChunk::FileChunk(BaseScummFile *data, int offset) { _data = data; _deleteData = false; - _data->seek(offset, seek_start); + _data->seek(offset, SEEK_SET); _type = _data->readUint32BE(); _size = _data->readUint32BE(); _offset = _data->pos(); @@ -102,7 +101,7 @@ FileChunk::FileChunk(const Common::String &name, int offset) { if (!g_scumm->openFile(*_data, name)) error("FileChunk: Unable to open file %s", name.c_str()); - _data->seek(offset, seek_start); + _data->seek(offset, SEEK_SET); _type = _data->readUint32BE(); _size = _data->readUint32BE(); _offset = _data->pos(); @@ -117,56 +116,22 @@ FileChunk::~FileChunk() { Chunk *FileChunk::subBlock() { FileChunk *ptr = new FileChunk(_data, _offset + _curPos); - seek(sizeof(Chunk::type) + sizeof(uint32) + ptr->getSize()); + seek(sizeof(Chunk::type) + sizeof(uint32) + ptr->size(), SEEK_CUR); return ptr; } void FileChunk::reseek() { - _data->seek(_offset + _curPos); + _data->seek(_offset + _curPos, SEEK_CUR); } -bool FileChunk::read(void *buffer, uint32 size) { - if (size <= 0 || (_curPos + size) > _size) +uint32 FileChunk::read(void *buffer, uint32 dataSize) { + if (dataSize <= 0 || (_curPos + dataSize) > _size) error("invalid buffer read request"); - _data->read(buffer, size); - _curPos += size; - return true; -} - -int8 FileChunk::getChar() { - return (int8)getByte(); -} - -byte FileChunk::getByte() { - _curPos++; - - if (_curPos > _size) - error("invalid byte read request"); - - return _data->readByte(); -} - -int16 FileChunk::getShort() { - return (int16)getWord(); -} - -uint16 FileChunk::getWord() { - _curPos += 2; - - if (_curPos > _size) - error("invalid word read request"); - - return _data->readUint16LE(); -} - -uint32 FileChunk::getDword() { - _curPos += 4; - - if (_curPos > _size) - error("invalid dword read request"); - - return _data->readUint32LE(); + dataSize = _data->read(buffer, dataSize); + _curPos += dataSize; + + return dataSize; } MemoryChunk::MemoryChunk(byte *data) { @@ -181,62 +146,20 @@ MemoryChunk::MemoryChunk(byte *data) { Chunk *MemoryChunk::subBlock() { MemoryChunk *ptr = new MemoryChunk(_data + _curPos); - seek(sizeof(Chunk::type) + sizeof(uint32) + ptr->getSize()); + seek(sizeof(Chunk::type) + sizeof(uint32) + ptr->size(), SEEK_CUR); return ptr; } void MemoryChunk::reseek() { } -bool MemoryChunk::read(void *buffer, uint32 size) { - if (size <= 0 || (_curPos + size) > _size) +uint32 MemoryChunk::read(void *buffer, uint32 dataSize) { + if (dataSize <= 0 || (_curPos + dataSize) > _size) error("invalid buffer read request"); - memcpy(buffer, _data + _curPos, size); - _curPos += size; - return true; -} - -int8 MemoryChunk::getChar() { - if (_curPos >= _size) - error("invalid char read request"); - - return _data[_curPos++]; -} - -byte MemoryChunk::getByte() { - if (_curPos >= _size) - error("invalid byte read request"); - - byte *ptr = (byte *)(_data + _curPos); - _curPos += 1; - return *ptr; -} - -int16 MemoryChunk::getShort() { - if (_curPos >= _size - 1) - error("invalid int16 read request"); - - int16 buffer = getWord(); - return *((int16 *)&buffer); -} - -uint16 MemoryChunk::getWord() { - if (_curPos >= _size - 1) - error("invalid word read request"); - - uint16 *ptr = (uint16 *)(_data + _curPos); - _curPos += 2; - return READ_LE_UINT16(ptr); -} - -uint32 MemoryChunk::getDword() { - if (_curPos >= _size - 3) - error("invalid dword read request"); - - uint32 *ptr = (uint32 *)(_data + _curPos); - _curPos += 4; - return READ_LE_UINT32(ptr); + memcpy(buffer, _data + _curPos, dataSize); + _curPos += dataSize; + return dataSize; } } // End of namespace Scumm diff --git a/engines/scumm/smush/chunk.h b/engines/scumm/smush/chunk.h index 22ca675413..5398693949 100644 --- a/engines/scumm/smush/chunk.h +++ b/engines/scumm/smush/chunk.h @@ -25,29 +25,19 @@ #include "common/scummsys.h" #include "common/str.h" +#include "common/stream.h" namespace Scumm { class BaseScummFile; -class Chunk { +class Chunk : public Common::SeekableReadStream { public: - virtual ~Chunk() {}; - enum seek_type { seek_start, seek_end, seek_cur }; typedef uint32 type; + virtual type getType() const = 0; - virtual uint32 getSize() const = 0; virtual Chunk *subBlock() = 0; virtual void reseek() = 0; - virtual bool eof() const = 0; - virtual uint32 tell() const = 0; - virtual bool seek(int32 delta, seek_type dir = seek_cur) = 0; - virtual bool read(void *buffer, uint32 size) = 0; - virtual int8 getChar() = 0; - virtual byte getByte() = 0; - virtual int16 getShort() = 0; - virtual uint16 getWord() = 0; - virtual uint32 getDword() = 0; }; // Common functionality for concrete chunks (FileChunk, MemoryChunk) @@ -62,10 +52,10 @@ protected: public: Chunk::type getType() const; - uint32 getSize() const; - bool eof() const; - uint32 tell() const; - bool seek(int32 delta, seek_type dir = seek_cur); + uint32 size() const; + bool eos() const; + uint32 pos() const; + void seek(int32 delta, int dir = SEEK_CUR); }; class FileChunk : public BaseChunk { @@ -80,12 +70,7 @@ public: virtual ~FileChunk(); Chunk *subBlock(); void reseek(); - bool read(void *buffer, uint32 size); - int8 getChar(); - byte getByte(); - short getShort(); - uint16 getWord(); - uint32 getDword(); + uint32 read(void *buffer, uint32 size); }; class MemoryChunk : public BaseChunk { @@ -96,12 +81,7 @@ public: MemoryChunk(byte *data); Chunk *subBlock(); void reseek(); - bool read(void *buffer, uint32 size); - int8 getChar(); - byte getByte(); - int16 getShort(); - uint16 getWord(); - uint32 getDword(); + uint32 read(void *buffer, uint32 size); }; } // End of namespace Scumm diff --git a/engines/scumm/smush/imuse_channel.cpp b/engines/scumm/smush/imuse_channel.cpp index e197fe2ccd..dc5641f859 100644 --- a/engines/scumm/smush/imuse_channel.cpp +++ b/engines/scumm/smush/imuse_channel.cpp @@ -60,8 +60,8 @@ bool ImuseChannel::checkParameters(int32 index, int32 nbframes, int32 size, int3 bool ImuseChannel::appendData(Chunk &b, int32 size) { if (_dataSize == -1) { assert(size > 8); - Chunk::type imus_type = b.getDword(); imus_type = SWAP_BYTES_32(imus_type); - uint32 imus_size = b.getDword(); imus_size = SWAP_BYTES_32(imus_size); + Chunk::type imus_type = b.readUint32LE(); imus_type = SWAP_BYTES_32(imus_type); + uint32 imus_size = b.readUint32LE(); imus_size = SWAP_BYTES_32(imus_size); if (imus_type != MKID_BE('iMUS')) error("Invalid Chunk for imuse_channel"); size -= 8; @@ -102,34 +102,34 @@ bool ImuseChannel::appendData(Chunk &b, int32 size) { } bool ImuseChannel::handleFormat(Chunk &src) { - if (src.getSize() != 20) error("invalid size for FRMT Chunk"); - uint32 imuse_start = src.getDword(); + if (src.size() != 20) error("invalid size for FRMT Chunk"); + uint32 imuse_start = src.readUint32LE(); imuse_start = SWAP_BYTES_32(imuse_start); - src.seek(4); - _bitsize = src.getDword(); + src.seek(4, SEEK_CUR); + _bitsize = src.readUint32LE(); _bitsize = SWAP_BYTES_32(_bitsize); - _rate = src.getDword(); + _rate = src.readUint32LE(); _rate = SWAP_BYTES_32(_rate); - _channels = src.getDword(); + _channels = src.readUint32LE(); _channels = SWAP_BYTES_32(_channels); assert(_channels == 1 || _channels == 2); return true; } bool ImuseChannel::handleRegion(Chunk &src) { - if (src.getSize() != 8) + if (src.size() != 8) error("invalid size for REGN Chunk"); return true; } bool ImuseChannel::handleStop(Chunk &src) { - if (src.getSize() != 4) + if (src.size() != 4) error("invalid size for STOP Chunk"); return true; } bool ImuseChannel::handleMap(Chunk &map) { - while (!map.eof()) { + while (!map.eos()) { Chunk *sub = map.subBlock(); switch (sub->getType()) { case MKID_BE('FRMT'): @@ -144,7 +144,7 @@ bool ImuseChannel::handleMap(Chunk &map) { handleStop(*sub); break; default: - error("Unknown iMUS subChunk found : %s, %d", tag2str(sub->getType()), sub->getSize()); + error("Unknown iMUS subChunk found : %s, %d", tag2str(sub->getType()), sub->size()); } delete sub; } diff --git a/engines/scumm/smush/saud_channel.cpp b/engines/scumm/smush/saud_channel.cpp index 2c8893d57f..09d7034ea8 100644 --- a/engines/scumm/smush/saud_channel.cpp +++ b/engines/scumm/smush/saud_channel.cpp @@ -41,7 +41,7 @@ bool SaudChannel::isTerminated() const { } void SaudChannel::handleStrk(Chunk &b) { - int32 size = b.getSize(); + int32 size = b.size(); if (size != 14 && size != 10) { error("STRK has an invalid size : %d", size); } @@ -52,7 +52,7 @@ void SaudChannel::handleSmrk(Chunk &b) { } void SaudChannel::handleShdr(Chunk &b) { - int32 size = b.getSize(); + int32 size = b.size(); if (size != 4) error("SHDR has an invalid size : %d", size); } @@ -133,9 +133,9 @@ bool SaudChannel::checkParameters(int32 index, int32 nb, int32 flags, int32 volu bool SaudChannel::appendData(Chunk &b, int32 size) { if (_dataSize == -1) { assert(size > 8); - Chunk::type saud_type = b.getDword(); + Chunk::type saud_type = b.readUint32LE(); saud_type = SWAP_BYTES_32(saud_type); - uint32 saud_size = b.getDword(); + uint32 saud_size = b.readUint32LE(); saud_size = SWAP_BYTES_32(saud_size); if (saud_type != MKID_BE('SAUD')) error("Invalid Chunk for SaudChannel : %X", saud_type); diff --git a/engines/scumm/smush/smush_player.cpp b/engines/scumm/smush/smush_player.cpp index 6e51aba652..337b068e41 100644 --- a/engines/scumm/smush/smush_player.cpp +++ b/engines/scumm/smush/smush_player.cpp @@ -360,8 +360,8 @@ void SmushPlayer::checkBlock(const Chunk &b, Chunk::type type_expected, uint32 m if (type_expected != b.getType()) { error("Chunk type is different from expected : %x != %x", b.getType(), type_expected); } - if (min_size > b.getSize()) { - error("Chunk size is inferior than minimum required size : %d < %d", b.getSize(), min_size); + if (min_size > b.size()) { + error("Chunk size is inferior than minimum required size : %d < %d", b.size(), min_size); } } @@ -392,16 +392,16 @@ void SmushPlayer::handleSoundFrame(Chunk &b) { checkBlock(b, MKID_BE('PSAD')); debugC(DEBUG_SMUSH, "SmushPlayer::handleSoundFrame()"); - int32 track_id = b.getWord(); - int32 index = b.getWord(); - int32 max_frames = b.getWord(); - int32 flags = b.getWord(); - int32 vol = b.getByte(); - int32 pan = b.getChar(); + int32 track_id = b.readUint16LE(); + int32 index = b.readUint16LE(); + int32 max_frames = b.readUint16LE(); + int32 flags = b.readUint16LE(); + int32 vol = b.readByte(); + int32 pan = b.readSByte(); if (index == 0) { debugC(DEBUG_SMUSH, "track_id:%d, max_frames:%d, flags:%d, vol:%d, pan:%d", track_id, max_frames, flags, vol, pan); } - int32 size = b.getSize() - 10; + int32 size = b.size() - 10; handleSoundBuffer(track_id, index, max_frames, flags, vol, pan, b, size); } @@ -424,10 +424,10 @@ void SmushPlayer::handleIACT(Chunk &b) { checkBlock(b, MKID_BE('IACT'), 8); debugC(DEBUG_SMUSH, "SmushPlayer::IACT()"); - int code = b.getWord(); - int flags = b.getWord(); - int unknown = b.getShort(); - int track_flags = b.getWord(); + int code = b.readUint16LE(); + int flags = b.readUint16LE(); + int unknown = b.readSint16LE(); + int track_flags = b.readUint16LE(); if ((code != 8) && (flags != 46)) { _vm->_insane->procIACT(_dst, 0, 0, 0, b, 0, 0, code, flags, unknown, track_flags); @@ -439,11 +439,11 @@ void SmushPlayer::handleIACT(Chunk &b) { } assert(flags == 46 && unknown == 0); - int track_id = b.getWord(); - int index = b.getWord(); - int nbframes = b.getWord(); - int32 size = b.getDword(); - int32 bsize = b.getSize() - 18; + int track_id = b.readUint16LE(); + int index = b.readUint16LE(); + int nbframes = b.readUint16LE(); + int32 size = b.readUint32LE(); + int32 bsize = b.size() - 18; if (_vm->_game.id != GID_CMI) { int32 track = track_id; @@ -546,23 +546,23 @@ void SmushPlayer::handleIACT(Chunk &b) { } void SmushPlayer::handleTextResource(Chunk &b) { - int pos_x = b.getShort(); - int pos_y = b.getShort(); - int flags = b.getShort(); - int left = b.getShort(); - int top = b.getShort(); - int right = b.getShort(); - /*int32 height =*/ b.getShort(); - /*int32 unk2 =*/ b.getWord(); + int pos_x = b.readSint16LE(); + int pos_y = b.readSint16LE(); + int flags = b.readSint16LE(); + int left = b.readSint16LE(); + int top = b.readSint16LE(); + int right = b.readSint16LE(); + /*int32 height =*/ b.readSint16LE(); + /*int32 unk2 =*/ b.readUint16LE(); const char *str; char *string = NULL, *string2 = NULL; if (b.getType() == MKID_BE('TEXT')) { - string = (char *)malloc(b.getSize() - 16); + string = (char *)malloc(b.size() - 16); str = string; - b.read(string, b.getSize() - 16); + b.read(string, b.size() - 16); } else { - int string_id = b.getWord(); + int string_id = b.readUint16LE(); if (!_strings) return; str = _strings->get(string_id); @@ -745,21 +745,21 @@ void SmushPlayer::handleDeltaPalette(Chunk &b) { checkBlock(b, MKID_BE('XPAL')); debugC(DEBUG_SMUSH, "SmushPlayer::handleDeltaPalette()"); - if (b.getSize() == 0x300 * 3 + 4) { + if (b.size() == 0x300 * 3 + 4) { - b.getWord(); - b.getWord(); + b.readUint16LE(); + b.readUint16LE(); for (int i = 0; i < 0x300; i++) { - _deltaPal[i] = b.getWord(); + _deltaPal[i] = b.readUint16LE(); } readPalette(_pal, b); setDirtyColors(0, 255); - } else if (b.getSize() == 6) { + } else if (b.size() == 6) { - b.getWord(); - b.getWord(); - b.getWord(); + b.readUint16LE(); + b.readUint16LE(); + b.readUint16LE(); for (int i = 0; i < 0x300; i++) { _pal[i] = delta_color(_pal[i], _deltaPal[i]); @@ -790,7 +790,7 @@ void SmushPlayer::handleZlibFrameObject(Chunk &b) { return; } - int32 chunkSize = b.getSize(); + int32 chunkSize = b.size(); byte *chunkBuffer = (byte *)malloc(chunkSize); assert(chunkBuffer); b.read(chunkBuffer, chunkSize); @@ -869,11 +869,11 @@ void SmushPlayer::handleFrameObject(Chunk &b) { return; } - int codec = b.getWord(); - int left = b.getWord(); - int top = b.getWord(); - int width = b.getWord(); - int height = b.getWord(); + int codec = b.readUint16LE(); + int left = b.readUint16LE(); + int top = b.readUint16LE(); + int width = b.readUint16LE(); + int height = b.readUint16LE(); if ((height == 242) && (width == 384)) { if (_specialBuffer == 0) @@ -901,10 +901,10 @@ void SmushPlayer::handleFrameObject(Chunk &b) { _height = _vm->_screenHeight; } - b.getWord(); - b.getWord(); + b.readUint16LE(); + b.readUint16LE(); - int32 chunk_size = b.getSize() - 14; + int32 chunk_size = b.size() - 14; byte *chunk_buffer = (byte *)malloc(chunk_size); assert(chunk_buffer); b.read(chunk_buffer, chunk_size); @@ -944,7 +944,7 @@ void SmushPlayer::handleFrame(Chunk &b) { _vm->_insane->procPreRendering(); } - while (!b.eof()) { + while (!b.eos()) { Chunk *sub = b.subBlock(); switch (sub->getType()) { case MKID_BE('NPAL'): @@ -984,12 +984,12 @@ void SmushPlayer::handleFrame(Chunk &b) { handleTextResource(*sub); break; default: - error("Unknown frame subChunk found : %s, %d", tag2str(sub->getType()), sub->getSize()); + error("Unknown frame subChunk found : %s, %d", tag2str(sub->getType()), sub->size()); } b.reseek(); - if (sub->getSize() & 1) - b.seek(1); + if (sub->size() & 1) + b.seek(1, SEEK_CUR); delete sub; } @@ -1017,9 +1017,9 @@ void SmushPlayer::handleAnimHeader(Chunk &b) { checkBlock(b, MKID_BE('AHDR'), 0x300 + 6); debugC(DEBUG_SMUSH, "SmushPlayer::handleAnimHeader()"); - _version = b.getWord(); - _nbframes = b.getWord(); - b.getWord(); + _version = b.readUint16LE(); + _nbframes = b.readUint16LE(); + b.readUint16LE(); if (_skipPalette) return; @@ -1106,14 +1106,14 @@ void SmushPlayer::parseNextFrame() { _skipPalette = true; } - _base->seek(_seekPos, FileChunk::seek_start); + _base->seek(_seekPos, SEEK_SET); _frame = _seekFrame; _seekPos = -1; } assert(_base); - if (_base->eof()) { + if (_base->eos()) { _vm->_smushVideoShouldFinish = true; _endOfFile = true; return; @@ -1129,7 +1129,7 @@ void SmushPlayer::parseNextFrame() { handleFrame(*sub); break; default: - error("Unknown Chunk found at %x: %x, %d", _base->tell(), sub->getType(), sub->getSize()); + error("Unknown Chunk found at %x: %x, %d", _base->pos(), sub->getType(), sub->size()); } delete sub; |