diff options
Diffstat (limited to 'engines/lab/anim.cpp')
-rw-r--r-- | engines/lab/anim.cpp | 55 |
1 files changed, 13 insertions, 42 deletions
diff --git a/engines/lab/anim.cpp b/engines/lab/anim.cpp index ee636604e8..bb5c5e9e88 100644 --- a/engines/lab/anim.cpp +++ b/engines/lab/anim.cpp @@ -162,25 +162,6 @@ void Anim::unDiffByteWord(uint16 *dest, uint16 *diff) { } } -/*****************************************************************************/ -/* UnDiffs a coded DIFF string onto an already initialized piece of memory. */ -/*****************************************************************************/ -bool Anim::unDiffMemory(byte *dest, byte *diff, uint16 headerSize, uint16 copySize) { - if (headerSize == 1) { - if (copySize == 1) - unDiffByteByte(dest, diff); - - else if (copySize == 2) - unDiffByteWord((uint16 *)dest, (uint16 *)diff); - - else - return false; - } else - error("unDIFFMemory: HeaderSize is %d", headerSize); - - return true; -} - /*------------------------- unDiff Vertical Memory --------------------------*/ /*****************************************************************************/ @@ -305,25 +286,6 @@ void Anim::VUnDiffByteLong(uint32 *dest, uint32 *diff, uint16 bytesPerRow) { } /*****************************************************************************/ -/* UnDiffs a coded DIFF string onto an already initialized piece of memory. */ -/*****************************************************************************/ -bool Anim::VUnDiffMemory(byte *dest, byte *diff, uint16 headerSize, uint16 copySize, uint16 bytesPerRow) { - if (headerSize == 1) { - if (copySize == 1) - VUnDiffByteByte(dest, diff, bytesPerRow); - else if (copySize == 2) - VUnDiffByteWord((uint16 *)dest, (uint16 *)diff, bytesPerRow); - else if (copySize == 4) - VUnDiffByteLong((uint32 *)dest, (uint32 *)diff, bytesPerRow); - else - return false; - } else - return (false); - - return true; -} - -/*****************************************************************************/ /* Runlength decodes a chunk of memory. */ /*****************************************************************************/ void Anim::runLengthDecode(byte *dest, byte *source) { @@ -403,10 +365,19 @@ void Anim::unDiff(byte *newBuf, byte *oldBuf, byte *diffData, uint16 bytesPerRow byte bufType = *diffData; diffData++; - if (isV) - VUnDiffMemory(newBuf, diffData, 1, bufType + 1, bytesPerRow); - else - unDiffMemory(newBuf, diffData, 1, bufType + 1); + if (isV) { + if (bufType == 0) + VUnDiffByteByte(newBuf, diffData, bytesPerRow); + else if (bufType == 1) + VUnDiffByteWord((uint16 *)newBuf, (uint16 *)diffData, bytesPerRow); + else if (bufType == 3) + VUnDiffByteLong((uint32 *)newBuf, (uint32 *)diffData, bytesPerRow); + } else { + if (bufType == 0) + unDiffByteByte(newBuf, diffData); + else if (bufType == 1) + unDiffByteWord((uint16 *)newBuf, (uint16 *)diffData); + } } void Anim::readBlock(void *Buffer, uint32 Size, byte **File) { |