aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2015-12-07 08:21:27 +0100
committerWillem Jan Palenstijn2015-12-23 21:33:53 +0100
commitf3a24ff593024e3a997ed1a9160d32a84eb42d74 (patch)
treefd624870e6930b730b83e9c88ef55a0c17ae23f8
parent5636181b78bcffa934cb00b14edb68c2d3319139 (diff)
downloadscummvm-rg350-f3a24ff593024e3a997ed1a9160d32a84eb42d74.tar.gz
scummvm-rg350-f3a24ff593024e3a997ed1a9160d32a84eb42d74.tar.bz2
scummvm-rg350-f3a24ff593024e3a997ed1a9160d32a84eb42d74.zip
LAB: Some refactoring, remove dead code and a useless return value
-rw-r--r--engines/lab/anim.cpp64
-rw-r--r--engines/lab/anim.h32
-rw-r--r--engines/lab/graphics.cpp30
-rw-r--r--engines/lab/graphics.h5
-rw-r--r--engines/lab/special.cpp1
-rw-r--r--engines/lab/tilepuzzle.cpp2
6 files changed, 62 insertions, 72 deletions
diff --git a/engines/lab/anim.cpp b/engines/lab/anim.cpp
index 7d2d171ae7..ee636604e8 100644
--- a/engines/lab/anim.cpp
+++ b/engines/lab/anim.cpp
@@ -33,9 +33,7 @@
namespace Lab {
-extern BitMap *DrawBitMap;
extern byte **startoffile;
-extern BitMap *DispBitMap;
Anim::Anim(LabEngine *vm) : _vm(vm) {
_header = 0;
@@ -71,12 +69,11 @@ Anim::Anim(LabEngine *vm) : _vm(vm) {
_doBlack = false;
_diffWidth = 0;
_diffHeight = 0;
- _stopSound = false;
_dataBytesPerRow = 0;
+ DrawBitMap = &bit2;
for (int i = 0; i < 3 * 256; i++)
_diffPalette[i] = 0;
-
}
/*------------------------ unDiff Horizontal Memory -------------------------*/
@@ -85,7 +82,7 @@ Anim::Anim(LabEngine *vm) : _vm(vm) {
/* Undiffs a piece of memory when header size is a byte, and copy/skip size */
/* is also a byte. */
/*****************************************************************************/
-void Anim::unDIFFByteByte(byte *dest, byte *diff) {
+void Anim::unDiffByteByte(byte *dest, byte *diff) {
uint16 skip, copy;
while (1) {
@@ -115,7 +112,7 @@ void Anim::unDIFFByteByte(byte *dest, byte *diff) {
/* Undiffs a piece of memory when header size is a byte, and copy/skip size */
/* is a word. */
/*****************************************************************************/
-void Anim::unDIFFByteWord(uint16 *dest, uint16 *diff) {
+void Anim::unDiffByteWord(uint16 *dest, uint16 *diff) {
uint16 skip, copy;
while (1) {
@@ -168,13 +165,13 @@ 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) {
+bool Anim::unDiffMemory(byte *dest, byte *diff, uint16 headerSize, uint16 copySize) {
if (headerSize == 1) {
if (copySize == 1)
- unDIFFByteByte(dest, diff);
+ unDiffByteByte(dest, diff);
else if (copySize == 2)
- unDIFFByteWord((uint16 *)dest, (uint16 *)diff);
+ unDiffByteWord((uint16 *)dest, (uint16 *)diff);
else
return false;
@@ -190,7 +187,7 @@ bool Anim::unDIFFMemory(byte *dest, byte *diff, uint16 headerSize, uint16 copySi
/* Undiffs a piece of memory when header size is a byte, and copy/skip size */
/* is a byte. */
/*****************************************************************************/
-void Anim::VUnDIFFByteByte(byte *dest, byte *diff, uint16 bytesPerRow) {
+void Anim::VUnDiffByteByte(byte *dest, byte *diff, uint16 bytesPerRow) {
byte *curPtr;
uint16 skip, copy;
uint16 counter = 0;
@@ -228,7 +225,7 @@ void Anim::VUnDIFFByteByte(byte *dest, byte *diff, uint16 bytesPerRow) {
/* Undiffs a piece of memory when header size is a byte, and copy/skip size */
/* is a word. */
/*****************************************************************************/
-void Anim::VUnDIFFByteWord(uint16 *dest, uint16 *diff, uint16 bytesPerRow) {
+void Anim::VUnDiffByteWord(uint16 *dest, uint16 *diff, uint16 bytesPerRow) {
uint16 *curPtr;
uint16 skip, copy;
uint16 counter = 0;
@@ -268,7 +265,7 @@ void Anim::VUnDIFFByteWord(uint16 *dest, uint16 *diff, uint16 bytesPerRow) {
/* Undiffs a piece of memory when header size is a byte, and copy/skip size */
/* is a long. */
/*****************************************************************************/
-void Anim::VUnDIFFByteLong(uint32 *dest, uint32 *diff, uint16 bytesPerRow) {
+void Anim::VUnDiffByteLong(uint32 *dest, uint32 *diff, uint16 bytesPerRow) {
uint32 *_curPtr;
uint16 skip, copy;
@@ -310,14 +307,14 @@ 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) {
+bool Anim::VUnDiffMemory(byte *dest, byte *diff, uint16 headerSize, uint16 copySize, uint16 bytesPerRow) {
if (headerSize == 1) {
if (copySize == 1)
- VUnDIFFByteByte(dest, diff, bytesPerRow);
+ VUnDiffByteByte(dest, diff, bytesPerRow);
else if (copySize == 2)
- VUnDIFFByteWord((uint16 *)dest, (uint16 *)diff, bytesPerRow);
+ VUnDiffByteWord((uint16 *)dest, (uint16 *)diff, bytesPerRow);
else if (copySize == 4)
- VUnDIFFByteLong((uint32 *)dest, (uint32 *)diff, bytesPerRow);
+ VUnDiffByteLong((uint32 *)dest, (uint32 *)diff, bytesPerRow);
else
return false;
} else
@@ -407,9 +404,9 @@ void Anim::unDiff(byte *newBuf, byte *oldBuf, byte *diffData, uint16 bytesPerRow
diffData++;
if (isV)
- VUnDIFFMemory(newBuf, diffData, 1, bufType + 1, bytesPerRow);
+ VUnDiffMemory(newBuf, diffData, 1, bufType + 1, bytesPerRow);
else
- unDIFFMemory(newBuf, diffData, 1, bufType + 1);
+ unDiffMemory(newBuf, diffData, 1, bufType + 1);
}
void Anim::readBlock(void *Buffer, uint32 Size, byte **File) {
@@ -421,12 +418,12 @@ void Anim::diffNextFrame() {
if (_header == 65535) /* Already done. */
return;
- if (DispBitMap->_flags & BITMAPF_VIDEO) {
- DispBitMap->_planes[0] = _vm->_graphics->getCurrentDrawingBuffer();
- DispBitMap->_planes[1] = DispBitMap->_planes[0] + 0x10000;
- DispBitMap->_planes[2] = DispBitMap->_planes[1] + 0x10000;
- DispBitMap->_planes[3] = DispBitMap->_planes[2] + 0x10000;
- DispBitMap->_planes[4] = DispBitMap->_planes[3] + 0x10000;
+ if (_vm->_graphics->_dispBitMap->_flags & BITMAPF_VIDEO) {
+ _vm->_graphics->_dispBitMap->_planes[0] = _vm->_graphics->getCurrentDrawingBuffer();
+ _vm->_graphics->_dispBitMap->_planes[1] = _vm->_graphics->_dispBitMap->_planes[0] + 0x10000;
+ _vm->_graphics->_dispBitMap->_planes[2] = _vm->_graphics->_dispBitMap->_planes[1] + 0x10000;
+ _vm->_graphics->_dispBitMap->_planes[3] = _vm->_graphics->_dispBitMap->_planes[2] + 0x10000;
+ _vm->_graphics->_dispBitMap->_planes[4] = _vm->_graphics->_dispBitMap->_planes[3] + 0x10000;
}
_vm->_event->mouseHide();
@@ -464,7 +461,7 @@ void Anim::diffNextFrame() {
_isAnim = (_frameNum >= 3) && (!_playOnce);
_curBit = 0;
- if (DispBitMap->_flags & BITMAPF_VIDEO)
+ if (_vm->_graphics->_dispBitMap->_flags & BITMAPF_VIDEO)
_vm->_graphics->screenUpdate();
return; /* done with the next frame. */
@@ -510,13 +507,13 @@ void Anim::diffNextFrame() {
break;
case 20L:
- unDiff(DrawBitMap->_planes[_curBit], DispBitMap->_planes[_curBit], _diffFile, DrawBitMap->_bytesPerRow, false);
+ unDiff(DrawBitMap->_planes[_curBit], _vm->_graphics->_dispBitMap->_planes[_curBit], _diffFile, DrawBitMap->_bytesPerRow, false);
_curBit++;
_diffFile += _size;
break;
case 21L:
- unDiff(DrawBitMap->_planes[_curBit], DispBitMap->_planes[_curBit], _diffFile, DrawBitMap->_bytesPerRow, true);
+ unDiff(DrawBitMap->_planes[_curBit], _vm->_graphics->_dispBitMap->_planes[_curBit], _diffFile, DrawBitMap->_bytesPerRow, true);
_curBit++;
_diffFile += _size;
break;
@@ -550,15 +547,15 @@ void Anim::diffNextFrame() {
break;
case 65535L:
if ((_frameNum == 1) || _playOnce || _stopPlayingEnd) {
- int didTOF = 0;
+ bool didTOF = false;
if (_waitForEffect) {
while (_vm->_music->isSoundEffectActive()) {
_vm->_music->updateMusic();
_vm->waitTOF();
- if (DispBitMap->_flags & BITMAPF_VIDEO)
- didTOF = 1;
+ if (_vm->_graphics->_dispBitMap->_flags & BITMAPF_VIDEO)
+ didTOF = true;
}
}
@@ -692,13 +689,6 @@ void Anim::stopDiffEnd() {
}
/*****************************************************************************/
-/* Stops the continuous sound from playing. */
-/*****************************************************************************/
-void Anim::stopSound() {
- _stopSound = true;
-}
-
-/*****************************************************************************/
/* Reads in a DIFF file. */
/*****************************************************************************/
bool Anim::readDiff(byte *buffer, bool playOnce) {
diff --git a/engines/lab/anim.h b/engines/lab/anim.h
index f799ae42a7..54efa4fcfa 100644
--- a/engines/lab/anim.h
+++ b/engines/lab/anim.h
@@ -83,15 +83,25 @@ private:
uint16 _sampleSpeed;
uint32 _diffWidth;
uint32 _diffHeight;
- bool _stopSound;
uint16 _dataBytesPerRow;
+ BitMap bit2;
+ BitMap *DrawBitMap;
- void unDIFFByteByte(byte *dest, byte *diff);
- void unDIFFByteWord(uint16 *dest, uint16 *diff);
- void VUnDIFFByteByte(byte *Dest, byte *diff, uint16 bytesperrow);
- void VUnDIFFByteWord(uint16 *Dest, uint16 *diff, uint16 bytesperrow);
- void VUnDIFFByteLong(uint32 *Dest, uint32 *diff, uint16 bytesperrow);
+ bool unDiffMemory(byte *dest, /* Where to Un-DIFF */
+ byte *diff, /* The DIFFed code. */
+ uint16 headerSize, /* Size of header (1, 2 or 4 bytes) (only supports 1 currently */
+ uint16 copySize); /* Size of minimum copy or skip. (1, 2 or 4 bytes) */
+
+ void runLengthDecode(byte *dest, byte *source);
+ void VRunLengthDecode(byte *dest, byte *source, uint16 bytesPerRow);
+ void unDiffByteByte(byte *dest, byte *diff);
+ void unDiffByteWord(uint16 *dest, uint16 *diff);
+ bool VUnDiffMemory(byte *dest, byte *diff, uint16 headerSize, uint16 copySize, uint16 bytesPerRow);
+ void VUnDiffByteByte(byte *Dest, byte *diff, uint16 bytesperrow);
+ void VUnDiffByteWord(uint16 *Dest, uint16 *diff, uint16 bytesperrow);
+ void VUnDiffByteLong(uint32 *Dest, uint32 *diff, uint16 bytesperrow);
void readBlock(void *Buffer, uint32 Size, byte **File);
+ void playDiff(byte *buffer);
public:
Anim(LabEngine *vm);
@@ -105,21 +115,11 @@ public:
BitMap _rawDiffBM;
void unDiff(byte *newBuf, byte *oldBuf, byte *diffData, uint16 bytesperrow, bool isV);
- bool unDIFFMemory(byte *dest, /* Where to Un-DIFF */
- byte *diff, /* The DIFFed code. */
- uint16 headerSize, /* Size of header (1, 2 or 4 bytes) (only supports 1 currently */
- uint16 copySize); /* Size of minimum copy or skip. (1, 2 or 4 bytes) */
-
- bool VUnDIFFMemory(byte *dest, byte *diff, uint16 headerSize, uint16 copySize, uint16 bytesPerRow);
- void runLengthDecode(byte *dest, byte *source);
- void VRunLengthDecode(byte *dest, byte *source, uint16 bytesPerRow);
bool readDiff(byte *buffer, bool playOnce);
- void playDiff(byte *buffer);
void diffNextFrame();
void readSound(bool waitTillFinished, Common::File *file);
void stopDiff();
void stopDiffEnd();
- void stopSound();
};
} // End of namespace Lab
diff --git a/engines/lab/graphics.cpp b/engines/lab/graphics.cpp
index 857c25291d..5147ac3654 100644
--- a/engines/lab/graphics.cpp
+++ b/engines/lab/graphics.cpp
@@ -39,8 +39,6 @@
namespace Lab {
-BitMap bit1, bit2, *DispBitMap = &bit1, *DrawBitMap = &bit1;
-
DisplayMan::DisplayMan(LabEngine *vm) : _vm(vm) {
_longWinInFront = false;
_lastMessageLong = false;
@@ -57,6 +55,8 @@ DisplayMan::DisplayMan(LabEngine *vm) : _vm(vm) {
_screenWidth = 0;
_screenHeight = 0;
+ _dispBitMap = &bit1;
+
for (int i = 0; i < 256 * 3; i++)
_curvgapal[i] = 0;
}
@@ -129,7 +129,7 @@ void DisplayMan::loadPict(const char *filename) {
/*****************************************************************************/
/* Reads in a picture into the dest bitmap. */
/*****************************************************************************/
-bool DisplayMan::readPict(const char *filename, bool playOnce) {
+void DisplayMan::readPict(const char *filename, bool playOnce) {
_vm->_anim->stopDiff();
loadPict(filename);
@@ -139,13 +139,11 @@ bool DisplayMan::readPict(const char *filename, bool playOnce) {
if (!_vm->_music->_doNotFilestopSoundEffect)
_vm->_music->stopSoundEffect();
- DispBitMap->_bytesPerRow = _screenWidth;
- DispBitMap->_rows = _screenHeight;
- DispBitMap->_flags = BITMAPF_VIDEO;
+ _dispBitMap->_bytesPerRow = _screenWidth;
+ _dispBitMap->_rows = _screenHeight;
+ _dispBitMap->_flags = BITMAPF_VIDEO;
_vm->_anim->readDiff(_curBitmap, playOnce);
-
- return true;
}
/*****************************************************************************/
@@ -161,14 +159,14 @@ byte *DisplayMan::readPictToMem(const char *filename, uint16 x, uint16 y) {
if (!_vm->_music->_doNotFilestopSoundEffect)
_vm->_music->stopSoundEffect();
- DispBitMap->_bytesPerRow = x;
- DispBitMap->_rows = y;
- DispBitMap->_flags = BITMAPF_NONE;
- DispBitMap->_planes[0] = _curBitmap;
- DispBitMap->_planes[1] = DispBitMap->_planes[0] + 0x10000;
- DispBitMap->_planes[2] = DispBitMap->_planes[1] + 0x10000;
- DispBitMap->_planes[3] = DispBitMap->_planes[2] + 0x10000;
- DispBitMap->_planes[4] = DispBitMap->_planes[3] + 0x10000;
+ _dispBitMap->_bytesPerRow = x;
+ _dispBitMap->_rows = y;
+ _dispBitMap->_flags = BITMAPF_NONE;
+ _dispBitMap->_planes[0] = _curBitmap;
+ _dispBitMap->_planes[1] = _dispBitMap->_planes[0] + 0x10000;
+ _dispBitMap->_planes[2] = _dispBitMap->_planes[1] + 0x10000;
+ _dispBitMap->_planes[3] = _dispBitMap->_planes[2] + 0x10000;
+ _dispBitMap->_planes[4] = _dispBitMap->_planes[3] + 0x10000;
_vm->_anim->readDiff(_curBitmap, true);
diff --git a/engines/lab/graphics.h b/engines/lab/graphics.h
index 5d97507c19..8e67cd2366 100644
--- a/engines/lab/graphics.h
+++ b/engines/lab/graphics.h
@@ -32,6 +32,7 @@
#define LAB_GRAPHICS_H
#include "graphics/palette.h"
+#include "lab/anim.h"
namespace Lab {
@@ -67,7 +68,7 @@ public:
int16 VGAScaleY(int16 y);
uint16 SVGACord(uint16 cord);
void loadPict(const char *filename);
- bool readPict(const char *filename, bool playOnce);
+ void readPict(const char *filename, bool playOnce);
void freePict();
byte *readPictToMem(const char *filename, uint16 x, uint16 y);
void doScrollBlack();
@@ -152,6 +153,8 @@ public:
byte *_currentDisplayBuffer;
bool _doNotDrawMessage;
uint16 *FadePalette;
+ BitMap bit1;
+ BitMap *_dispBitMap;
};
} // End of namespace Lab
diff --git a/engines/lab/special.cpp b/engines/lab/special.cpp
index 6642865cda..e49119634a 100644
--- a/engines/lab/special.cpp
+++ b/engines/lab/special.cpp
@@ -59,7 +59,6 @@ static uint16 monitorPage;
static const char *TextFileName;
Image *MonButton;
-extern BitMap *DispBitMap, *DrawBitMap;
#define INCL(BITSET,BIT) ((BITSET) |= (BIT))
#define SETBIT(BITSET,BITNUM) INCL(BITSET, (1 << (BITNUM)))
diff --git a/engines/lab/tilepuzzle.cpp b/engines/lab/tilepuzzle.cpp
index 5ab0454086..0d050cc6bc 100644
--- a/engines/lab/tilepuzzle.cpp
+++ b/engines/lab/tilepuzzle.cpp
@@ -163,7 +163,7 @@ void LabEngine::changeTile(uint16 col, uint16 row) {
if (check) {
_conditions->inclElement(BRICKOPEN); /* unlocked combination */
_anim->_doBlack = true;
- check = _graphics->readPict("p:Up/BDOpen", true);
+ _graphics->readPict("p:Up/BDOpen", true);
}
}
}