diff options
author | Eugene Sandulenko | 2005-10-07 10:44:48 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2005-10-07 10:44:48 +0000 |
commit | 313fe937f7fd9fb290d623e1eeada1156763b5c8 (patch) | |
tree | 5296ef09f5a02dacaebcbb975e72dbe5b7090506 | |
parent | 4893e3271bea98f5a80a03b534c0c8bbb0321962 (diff) | |
download | scummvm-rg350-313fe937f7fd9fb290d623e1eeada1156763b5c8.tar.gz scummvm-rg350-313fe937f7fd9fb290d623e1eeada1156763b5c8.tar.bz2 scummvm-rg350-313fe937f7fd9fb290d623e1eeada1156763b5c8.zip |
Cleanup sprite header reader.
svn-id: r18956
-rw-r--r-- | saga/sprite.cpp | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/saga/sprite.cpp b/saga/sprite.cpp index a2b9c64056..b4eb44848d 100644 --- a/saga/sprite.cpp +++ b/saga/sprite.cpp @@ -108,34 +108,30 @@ void Sprite::loadList(int resourceId, SpriteList &spriteList) { spritePointer = spriteListData; spritePointer += offset; - MemoryReadStream readS2(spritePointer, (_vm->getFeatures() & GF_MAC_RESOURCES || _vm->getGameType() == GType_IHNM) ? 8 : 4); + if ((_vm->getGameType()) != GType_ITE || (_vm->getFeatures() & GF_MAC_RESOURCES)) { + MemoryReadStreamEndian readS2(spritePointer, 8, _spriteContext->isBigEndian); - if (_vm->getGameType() == GType_ITE) { - if (!(_vm->getFeatures() & GF_MAC_RESOURCES)) { - spriteInfo->xAlign = readS2.readSByte(); - spriteInfo->yAlign = readS2.readSByte(); + spriteInfo->xAlign = readS2.readSint16(); + spriteInfo->yAlign = readS2.readSint16(); - spriteInfo->width = readS2.readByte(); - spriteInfo->height = readS2.readByte(); - } else { - spriteInfo->xAlign = readS2.readSint16BE(); - spriteInfo->yAlign = readS2.readSint16BE(); + spriteInfo->width = readS2.readUint16(); + spriteInfo->height = readS2.readUint16(); - spriteInfo->width = readS2.readUint16BE(); - spriteInfo->height = readS2.readUint16BE(); + if (spriteInfo->width > 100) { // FIXME: HACK + spriteInfo->width = spriteInfo->height = 0; } + spriteDataPointer = spritePointer + readS2.pos(); } else { - spriteInfo->xAlign = readS2.readSint16LE(); - spriteInfo->yAlign = readS2.readSint16LE(); + MemoryReadStreamEndian readS2(spritePointer, 4); - spriteInfo->width = readS2.readUint16LE(); - spriteInfo->height = readS2.readUint16LE(); + spriteInfo->xAlign = readS2.readSByte(); + spriteInfo->yAlign = readS2.readSByte(); - if (spriteInfo->width > 100) { // FIXME: HACK - spriteInfo->width = spriteInfo->height = 0; - } + spriteInfo->width = readS2.readByte(); + spriteInfo->height = readS2.readByte(); + spriteDataPointer = spritePointer + readS2.pos(); } - spriteDataPointer = spritePointer + readS2.pos(); + outputLength = spriteInfo->width * spriteInfo->height; inputLength = spriteListLength - (spriteDataPointer - spriteListData); decodeRLEBuffer(spriteDataPointer, inputLength, outputLength); |