aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/toltecs/animation.cpp26
-rw-r--r--engines/toltecs/animation.h26
-rw-r--r--engines/toltecs/input.cpp36
-rw-r--r--engines/toltecs/input.h6
-rw-r--r--engines/toltecs/palette.cpp58
-rw-r--r--engines/toltecs/palette.h38
-rw-r--r--engines/toltecs/resource.cpp42
-rw-r--r--engines/toltecs/resource.h52
-rw-r--r--engines/toltecs/screen.cpp536
-rw-r--r--engines/toltecs/screen.h106
-rw-r--r--engines/toltecs/script.cpp14
-rw-r--r--engines/toltecs/script.h26
-rw-r--r--engines/toltecs/segmap.cpp142
-rw-r--r--engines/toltecs/segmap.h40
-rw-r--r--engines/toltecs/toltecs.cpp86
-rw-r--r--engines/toltecs/toltecs.h2
16 files changed, 618 insertions, 618 deletions
diff --git a/engines/toltecs/animation.cpp b/engines/toltecs/animation.cpp
index 2dbffbd763..2ecc12bafd 100644
--- a/engines/toltecs/animation.cpp
+++ b/engines/toltecs/animation.cpp
@@ -39,7 +39,7 @@
namespace Toltecs {
AnimationPlayer::AnimationPlayer(ToltecsEngine *vm) : _vm(vm) {
- _animBuffer = new byte[262144];
+ _animBuffer = new byte[262144];
}
AnimationPlayer::~AnimationPlayer() {
@@ -64,7 +64,7 @@ void AnimationPlayer::start(uint resIndex) {
debug(1, "AnimationPlayer::start() width = %d; height = %d; frameCount = %d", _width, _height, _frameCount);
- unpackFrame();
+ unpackFrame();
_keepFrameCounter = 0;
_frameNumber = 0;
@@ -92,8 +92,8 @@ void AnimationPlayer::nextFrame() {
debug(1, "AnimationPlayer::nextFrame() frameNumber = %d", _frameNumber);
if (_keepFrameCounter > 0) {
- _keepFrameCounter--;
- return;
+ _keepFrameCounter--;
+ return;
}
_vm->_arc->openResource(_resIndex);
@@ -101,18 +101,18 @@ void AnimationPlayer::nextFrame() {
_curFrameSize = _nextFrameSize;
if (_curFrameSize == 0)
- _curFrameSize = 1;
+ _curFrameSize = 1;
_vm->_arc->read(_animBuffer, _curFrameSize);
_nextFrameSize = _vm->_arc->readUint32LE();
_nextFrameOffset += _curFrameSize + 4;
if (_curFrameSize > 1) {
- unpackFrame();
- // TODO mov animDrawFrameFlag, 0FFFFh
+ unpackFrame();
+ // TODO mov animDrawFrameFlag, 0FFFFh
} else {
- _keepFrameCounter = _animBuffer[0] - 1;
- // TODO mov animDrawFrameFlag, 0
+ _keepFrameCounter = _animBuffer[0] - 1;
+ // TODO mov animDrawFrameFlag, 0
}
_vm->_arc->closeResource();
@@ -124,16 +124,16 @@ int16 AnimationPlayer::getStatus() {
debug(1, "AnimationPlayer::getStatus()");
int16 status = -1;
if (_frameNumber == _frameCount)
- status = 0;
+ status = 0;
else if (_frameNumber == _frameCount - 1)
- status = 1;
+ status = 1;
debug(1, "AnimationPlayer::getStatus() status = %d", status);
return status;
}
void AnimationPlayer::unpackFrame() {
- _vm->_screen->unpackRle(_animBuffer, _vm->_screen->_frontScreen, _width, _height);
- _vm->_screen->unpackRle(_animBuffer, _vm->_screen->_backScreen, _width, _height);
+ _vm->_screen->unpackRle(_animBuffer, _vm->_screen->_frontScreen, _width, _height);
+ _vm->_screen->unpackRle(_animBuffer, _vm->_screen->_backScreen, _width, _height);
}
} // End of namespace Toltecs
diff --git a/engines/toltecs/animation.h b/engines/toltecs/animation.h
index dc484215f9..a8bef1fdbf 100644
--- a/engines/toltecs/animation.h
+++ b/engines/toltecs/animation.h
@@ -49,23 +49,23 @@ namespace Toltecs {
class AnimationPlayer {
public:
- AnimationPlayer(ToltecsEngine *vm);
- ~AnimationPlayer();
-
- void start(uint resIndex);
- void nextFrame();
- int16 getStatus();
- uint16 getFrameNumber() const { return _frameNumber; }
-
+ AnimationPlayer(ToltecsEngine *vm);
+ ~AnimationPlayer();
+
+ void start(uint resIndex);
+ void nextFrame();
+ int16 getStatus();
+ uint16 getFrameNumber() const { return _frameNumber; }
+
//protected:
public:
- ToltecsEngine *_vm;
+ ToltecsEngine *_vm;
// 262144
- byte *_animBuffer;
-
- uint _resIndex;
- byte _palette[768];
+ byte *_animBuffer;
+
+ uint _resIndex;
+ byte _palette[768];
uint16 _width, _height;
uint16 _frameNumber, _frameCount;
diff --git a/engines/toltecs/input.cpp b/engines/toltecs/input.cpp
index 50e9129412..ca09a9bb2b 100644
--- a/engines/toltecs/input.cpp
+++ b/engines/toltecs/input.cpp
@@ -47,11 +47,11 @@ Input::Input(ToltecsEngine *vm) : _vm(vm) {
_mouseCounter = 0;
_mouseButtonPressedFlag = false;
_mouseButton = 0;
- _mouseDisabled = 0;
+ _mouseDisabled = 0;
- _leftButtonDown = false;
+ _leftButtonDown = false;
_rightButtonDown = false;
-
+
}
Input::~Input() {
@@ -73,22 +73,22 @@ void Input::update() {
case Common::EVENT_LBUTTONDOWN:
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
- _leftButtonDown = true;
+ _leftButtonDown = true;
break;
case Common::EVENT_LBUTTONUP:
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
- _leftButtonDown = false;
+ _leftButtonDown = false;
break;
case Common::EVENT_RBUTTONDOWN:
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
- _rightButtonDown = true;
+ _rightButtonDown = true;
break;
case Common::EVENT_RBUTTONUP:
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
- _rightButtonDown = false;
+ _rightButtonDown = false;
break;
default:
break;
@@ -99,27 +99,27 @@ void Input::update() {
_mousePosDelta = _mousePosDelta + _mouseY - _mouseX;
if (_mouseCounter > 0)
- _mouseCounter--;
-
+ _mouseCounter--;
+
byte mouseButtons = 0;
if (_leftButtonDown)
- mouseButtons |= 1;
+ mouseButtons |= 1;
if (_rightButtonDown)
- mouseButtons |= 2;
-
+ mouseButtons |= 2;
+
if (mouseButtons != 0) {
if (!_mouseButtonPressedFlag) {
- _mouseButton = mouseButtons;
- if (_mouseCounter != 0)
- _mouseButton |= 0x80;
+ _mouseButton = mouseButtons;
+ if (_mouseCounter != 0)
+ _mouseButton |= 0x80;
_mouseCounter = 30; // maybe TODO
_mouseButtonPressedFlag = true;
} else {
- _mouseButton = 0;
+ _mouseButton = 0;
}
} else {
- _mouseButtonPressedFlag = false;
- _mouseButton = 0;
+ _mouseButtonPressedFlag = false;
+ _mouseButton = 0;
}
}
diff --git a/engines/toltecs/input.h b/engines/toltecs/input.h
index c82dd783b9..06196b8599 100644
--- a/engines/toltecs/input.h
+++ b/engines/toltecs/input.h
@@ -46,8 +46,8 @@ namespace Toltecs {
class Input {
public:
- Input(ToltecsEngine *vm);
- ~Input();
+ Input(ToltecsEngine *vm);
+ ~Input();
void update();
@@ -58,7 +58,7 @@ public:
//protected:
public:
- ToltecsEngine *_vm;
+ ToltecsEngine *_vm;
int16 _mouseX, _mouseY;
int16 _mousePosDelta;
diff --git a/engines/toltecs/palette.cpp b/engines/toltecs/palette.cpp
index 6ff20ff3d7..7c882f1c8a 100644
--- a/engines/toltecs/palette.cpp
+++ b/engines/toltecs/palette.cpp
@@ -50,13 +50,13 @@ Palette::~Palette() {
void Palette::setFullPalette(byte *palette) {
byte colors[1024];
for (int i = 0; i < 256; i++) {
- colors[i * 4 + 0] = palette[i * 3 + 0] << 2;
- colors[i * 4 + 1] = palette[i * 3 + 1] << 2;
- colors[i * 4 + 2] = palette[i * 3 + 2] << 2;
- colors[i * 4 + 3] = 255;
+ colors[i * 4 + 0] = palette[i * 3 + 0] << 2;
+ colors[i * 4 + 1] = palette[i * 3 + 1] << 2;
+ colors[i * 4 + 2] = palette[i * 3 + 2] << 2;
+ colors[i * 4 + 3] = 255;
}
- _vm->_system->setPalette((const byte *)colors, 0, 256);
- _vm->_system->updateScreen();
+ _vm->_system->setPalette((const byte *)colors, 0, 256);
+ _vm->_system->updateScreen();
}
void Palette::setDeltaPalette(byte *palette, byte mask, char deltaValue, int16 count, int16 startIndex) {
@@ -74,32 +74,32 @@ void Palette::setDeltaPalette(byte *palette, byte mask, char deltaValue, int16 c
_vm->_system->grabPalette(colors, 0, 256);
if (deltaValue < 0) {
- deltaValue = -deltaValue;
- while (count--) {
- rgb = *palPtr++;
- if (mask & 1) colors[index * 4 + 0] = CLIP<int>(rgb + deltaValue, 0, 63) << 2;
- rgb = *palPtr++;
- if (mask & 2) colors[index * 4 + 1] = CLIP<int>(rgb + deltaValue, 0, 63) << 2;
- rgb = *palPtr++;
- if (mask & 4) colors[index * 4 + 2] = CLIP<int>(rgb + deltaValue, 0, 63) << 2;
- index++;
+ deltaValue = -deltaValue;
+ while (count--) {
+ rgb = *palPtr++;
+ if (mask & 1) colors[index * 4 + 0] = CLIP<int>(rgb + deltaValue, 0, 63) << 2;
+ rgb = *palPtr++;
+ if (mask & 2) colors[index * 4 + 1] = CLIP<int>(rgb + deltaValue, 0, 63) << 2;
+ rgb = *palPtr++;
+ if (mask & 4) colors[index * 4 + 2] = CLIP<int>(rgb + deltaValue, 0, 63) << 2;
+ index++;
}
} else {
- while (count--) {
- rgb = *palPtr++;
- if (mask & 1) colors[index * 4 + 0] = CLIP<int>(rgb - deltaValue, deltaValue, 255) << 2;
- rgb = *palPtr++;
- if (mask & 2) colors[index * 4 + 1] = CLIP<int>(rgb - deltaValue, deltaValue, 255) << 2;
- rgb = *palPtr++;
- if (mask & 4) colors[index * 4 + 2] = CLIP<int>(rgb - deltaValue, deltaValue, 255) << 2;
- index++;
+ while (count--) {
+ rgb = *palPtr++;
+ if (mask & 1) colors[index * 4 + 0] = CLIP<int>(rgb - deltaValue, deltaValue, 255) << 2;
+ rgb = *palPtr++;
+ if (mask & 2) colors[index * 4 + 1] = CLIP<int>(rgb - deltaValue, deltaValue, 255) << 2;
+ rgb = *palPtr++;
+ if (mask & 4) colors[index * 4 + 2] = CLIP<int>(rgb - deltaValue, deltaValue, 255) << 2;
+ index++;
}
}
debug(0, "startIndex = %d; colorCount = %d", startIndex, colorCount);
- _vm->_system->setPalette((const byte *)colors, 0, 256);
-
+ _vm->_system->setPalette((const byte *)colors, 0, 256);
+
}
void Palette::loadAddPalette(uint resIndex, byte startIndex) {
@@ -136,10 +136,10 @@ uint16 Palette::findFragment(int16 id) {
uint16 result = 0;
for (PaletteFragmentArray::iterator iter = _fragments.begin(); iter != _fragments.end(); iter++) {
- PaletteFragment fragment = *iter;
- if (fragment.id == id) {
- result = (fragment.count << 8) | fragment.index;
- break;
+ PaletteFragment fragment = *iter;
+ if (fragment.id == id) {
+ result = (fragment.count << 8) | fragment.index;
+ break;
}
}
diff --git a/engines/toltecs/palette.h b/engines/toltecs/palette.h
index b550b80e70..339ff8db7d 100644
--- a/engines/toltecs/palette.h
+++ b/engines/toltecs/palette.h
@@ -49,37 +49,37 @@ namespace Toltecs {
class Palette {
public:
- Palette(ToltecsEngine *vm);
- ~Palette();
+ Palette(ToltecsEngine *vm);
+ ~Palette();
void setFullPalette(byte *palette);
void setDeltaPalette(byte *palette, byte mask, char deltaValue, int16 count, int16 startIndex);
-
- void loadAddPalette(uint resIndex, byte startIndex);
- void loadAddPaletteFrom(byte *source, byte startIndex, byte count);
-
- void addFragment(uint resIndex, int16 id);
- uint16 findFragment(int16 id);
- void clearFragments();
-
- byte *getMainPalette() { return _mainPalette; }
-
+
+ void loadAddPalette(uint resIndex, byte startIndex);
+ void loadAddPaletteFrom(byte *source, byte startIndex, byte count);
+
+ void addFragment(uint resIndex, int16 id);
+ uint16 findFragment(int16 id);
+ void clearFragments();
+
+ byte *getMainPalette() { return _mainPalette; }
+
protected:
struct PaletteFragment {
- int16 id;
- byte index, count;
+ int16 id;
+ byte index, count;
};
typedef Common::Array<PaletteFragment> PaletteFragmentArray;
- ToltecsEngine *_vm;
-
- byte _mainPalette[768];
-
+ ToltecsEngine *_vm;
+
+ byte _mainPalette[768];
+
PaletteFragmentArray _fragments;
byte _fragmentIndex;
-
+
};
} // End of namespace Toltecs
diff --git a/engines/toltecs/resource.cpp b/engines/toltecs/resource.cpp
index 0280467fe3..9449fdf73b 100644
--- a/engines/toltecs/resource.cpp
+++ b/engines/toltecs/resource.cpp
@@ -49,7 +49,7 @@ ArchiveReader::~ArchiveReader() {
void ArchiveReader::openArchive(const char *filename) {
open(filename);
for (uint i = 0; i < 10000; i++)
- _offsets[i] = readUint32LE();
+ _offsets[i] = readUint32LE();
}
uint32 ArchiveReader::openResource(uint resIndex) {
@@ -98,8 +98,8 @@ ResourceCache::ResourceCache(ToltecsEngine *vm) : _vm(vm) {
memset(_cache, 0, sizeof(_cache));
_cacheCount = 0;
- _curItemOffset = 0;
- _curItemSize = 0;
+ _curItemOffset = 0;
+ _curItemSize = 0;
}
@@ -110,11 +110,11 @@ ResourceCache::~ResourceCache() {
byte *ResourceCache::load(uint resIndex) {
byte *data = NULL;
if (existsItem(resIndex)) {
- debug(1, "ResourceCache::load(%d) From cache", resIndex);
- data = _base + _curItemOffset;
+ debug(1, "ResourceCache::load(%d) From cache", resIndex);
+ data = _base + _curItemOffset;
} else {
- debug(1, "ResourceCache::load(%d) From disk", resIndex);
- uint32 size = _vm->_arc->openResource(resIndex);
+ debug(1, "ResourceCache::load(%d) From disk", resIndex);
+ uint32 size = _vm->_arc->openResource(resIndex);
data = addItem(resIndex, size);
_vm->_arc->read(data, size);
_vm->_arc->closeResource();
@@ -124,10 +124,10 @@ byte *ResourceCache::load(uint resIndex) {
bool ResourceCache::existsItem(uint resIndex) {
for (uint i = 0; i < _cacheCount; i++) {
- if (_cache[i].resIndex == resIndex) {
- _curItemOffset = _cache[i].offset;
- _curItemSize = _cache[i].size;
- return true;
+ if (_cache[i].resIndex == resIndex) {
+ _curItemOffset = _cache[i].offset;
+ _curItemSize = _cache[i].size;
+ return true;
}
}
return false;
@@ -137,15 +137,15 @@ byte *ResourceCache::addItem(uint resIndex, uint32 size) {
checkCapacity(size);
- _curItemOffset = _bytesUsed;
- _curItemSize = size;
+ _curItemOffset = _bytesUsed;
+ _curItemSize = size;
- _cache[_cacheCount].resIndex = resIndex;
- _cache[_cacheCount].offset = _curItemOffset;
- _cache[_cacheCount].size = _curItemSize;
- _cacheCount++;
-
- _bytesUsed += size;
+ _cache[_cacheCount].resIndex = resIndex;
+ _cache[_cacheCount].offset = _curItemOffset;
+ _cache[_cacheCount].size = _curItemSize;
+ _cacheCount++;
+
+ _bytesUsed += size;
return _base + _curItemOffset;
@@ -153,8 +153,8 @@ byte *ResourceCache::addItem(uint resIndex, uint32 size) {
void ResourceCache::checkCapacity(uint32 size) {
if (_cacheCount > kMaxCacheItems || _bytesUsed + size > kMaxCacheSize) {
- _cacheCount = 0;
- _bytesUsed = 0;
+ _cacheCount = 0;
+ _bytesUsed = 0;
}
}
diff --git a/engines/toltecs/resource.h b/engines/toltecs/resource.h
index c15918be25..b4d21c38bd 100644
--- a/engines/toltecs/resource.h
+++ b/engines/toltecs/resource.h
@@ -48,7 +48,7 @@ namespace Toltecs {
TODO:
ArchiveReader:
- - Add support for external resources; and check if they're used
+ - Add support for external resources; and check if they're used
*/
@@ -58,20 +58,20 @@ const uint kMaxCacheSize = 8 * 1024 * 1024; // 8 MB
class ArchiveReader : public Common::File {
public:
- ArchiveReader();
- ~ArchiveReader();
-
- void openArchive(const char *filename);
-
- // Returns the size of the opened resource
- uint32 openResource(uint resIndex);
- // Closes the resource
- void closeResource();
- // Returns the size of the resource
- uint32 getResourceSize(uint resIndex);
-
- void dump(uint resIndex, const char *prefix = NULL);
-
+ ArchiveReader();
+ ~ArchiveReader();
+
+ void openArchive(const char *filename);
+
+ // Returns the size of the opened resource
+ uint32 openResource(uint resIndex);
+ // Closes the resource
+ void closeResource();
+ // Returns the size of the resource
+ uint32 getResourceSize(uint resIndex);
+
+ void dump(uint resIndex, const char *prefix = NULL);
+
protected:
uint32 _offsets[10000];
@@ -79,23 +79,23 @@ protected:
class ResourceCache {
public:
- ResourceCache(ToltecsEngine *vm);
- ~ResourceCache();
-
- byte *load(uint resIndex);
- uint32 getCurItemSize() const { return _curItemSize; }
+ ResourceCache(ToltecsEngine *vm);
+ ~ResourceCache();
+
+ byte *load(uint resIndex);
+ uint32 getCurItemSize() const { return _curItemSize; }
protected:
struct CacheItem {
- uint resIndex;
- //int value; // what is this?
- int32 offset; // offset into _base
- uint32 size; // size of the item
+ uint resIndex;
+ //int value; // what is this?
+ int32 offset; // offset into _base
+ uint32 size; // size of the item
};
- ToltecsEngine *_vm;
-
+ ToltecsEngine *_vm;
+
byte *_base;
uint32 _bytesUsed;
uint32 _curItemOffset, _curItemSize;
diff --git a/engines/toltecs/screen.cpp b/engines/toltecs/screen.cpp
index 69d2966ef6..779513a420 100644
--- a/engines/toltecs/screen.cpp
+++ b/engines/toltecs/screen.cpp
@@ -45,12 +45,12 @@ namespace Toltecs {
Screen::Screen(ToltecsEngine *vm) : _vm(vm) {
- _frontScreen = new byte[268800];
+ _frontScreen = new byte[268800];
_backScreen = new byte[870400];
memset(_fontResIndexArray, 0, sizeof(_fontResIndexArray));
- _fontColor1 = 0;
- _fontColor2 = 0;
+ _fontColor1 = 0;
+ _fontColor2 = 0;
// Screen shaking
_shakeActive = false;
@@ -85,37 +85,37 @@ Screen::~Screen() {
void Screen::unpackRle(byte *source, byte *dest, uint16 width, uint16 height) {
int32 size = width * height;
- while (size > 0) {
- byte a = *source++;
- byte b = *source++;
- if (a == 0) {
- dest += b;
- size -= b;
- } else {
- b = ((b << 4) & 0xF0) | ((b >> 4) & 0x0F);
- memset(dest, b, a);
- dest += a;
- size -= a;
- }
- }
+ while (size > 0) {
+ byte a = *source++;
+ byte b = *source++;
+ if (a == 0) {
+ dest += b;
+ size -= b;
+ } else {
+ b = ((b << 4) & 0xF0) | ((b >> 4) & 0x0F);
+ memset(dest, b, a);
+ dest += a;
+ size -= a;
+ }
+ }
}
void Screen::loadMouseCursor(uint resIndex) {
byte mouseCursor[16 * 16], *mouseCursorP = mouseCursor;
byte *cursorData = _vm->_res->load(resIndex);
for (int i = 0; i < 32; i++) {
- byte pixel;
- byte mask1 = *cursorData++;
- byte mask2 = *cursorData++;
- for (int j = 0; j < 8; j++) {
- pixel = 0xE5;
- if ((mask2 & 0x80) == 0)
- pixel = 0xE0;
- mask2 <<= 1;
- if ((mask1 & 0x80) == 0)
- pixel = 0;
- mask1 <<= 1;
- *mouseCursorP++ = pixel;
+ byte pixel;
+ byte mask1 = *cursorData++;
+ byte mask2 = *cursorData++;
+ for (int j = 0; j < 8; j++) {
+ pixel = 0xE5;
+ if ((mask2 & 0x80) == 0)
+ pixel = 0xE0;
+ mask2 <<= 1;
+ if ((mask1 & 0x80) == 0)
+ pixel = 0;
+ mask1 <<= 1;
+ *mouseCursorP++ = pixel;
}
}
//CursorMan.replaceCursor((const byte*)mouseCursor, 16, 16, 0, 0, 0);
@@ -151,9 +151,9 @@ void Screen::drawGuiImage(int16 x, int16 y, uint resIndex) {
*dest++ = pixel;
workWidth--;
if (workWidth == 0) {
- workHeight--;
- dest += 640 - width;
- workWidth = width;
+ workHeight--;
+ dest += 640 - width;
+ workWidth = width;
}
}
}
@@ -174,11 +174,11 @@ void Screen::stopShakeScreen() {
void Screen::updateShakeScreen() {
if (_shakeActive) {
- _shakeCounter--;
- if (_shakeCounter == 0) {
- _shakeCounter = _shakeCounterInit;
- _shakePos ^= 8;
- _vm->_system->setShakePos(_shakePos);
+ _shakeCounter--;
+ if (_shakeCounter == 0) {
+ _shakeCounter = _shakeCounterInit;
+ _shakePos ^= 8;
+ _vm->_system->setShakePos(_shakePos);
}
}
}
@@ -198,13 +198,13 @@ void Screen::addStaticSprite(byte *spriteItem) {
debug(0, "Screen::addStaticSprite() x = %d; y = %d; baseColor = %d; resIndex = %d; flags = %04X", drawRequest.x, drawRequest.y, drawRequest.baseColor, drawRequest.resIndex, drawRequest.flags);
- addDrawRequest(drawRequest);
+ addDrawRequest(drawRequest);
}
void Screen::addAnimatedSprite(int16 x, int16 y, int16 fragmentId, byte *data, int16 *spriteArray, bool loop, int mode) {
- debug(0, "Screen::addAnimatedSprite(%d, %d, %d)", x, y, fragmentId);
+ debug(0, "Screen::addAnimatedSprite(%d, %d, %d)", x, y, fragmentId);
DrawRequest drawRequest;
memset(&drawRequest, 0, sizeof(drawRequest));
@@ -245,13 +245,13 @@ void Screen::addAnimatedSprite(int16 x, int16 y, int16 fragmentId, byte *data, i
loopNum++;
if (loopNum == loopCount) {
if (loop) {
- loopNum = 0;
+ loopNum = 0;
} else {
- loopNum--;
+ loopNum--;
}
}
} else {
- loopNum |= 0x8000;
+ loopNum |= 0x8000;
}
WRITE_LE_UINT16(spriteItem + 0, loopNum);
@@ -263,8 +263,8 @@ void Screen::addAnimatedSprite(int16 x, int16 y, int16 fragmentId, byte *data, i
void Screen::clearSprites() {
- _spriteDrawList.clear();
- // TODO
+ _spriteDrawList.clear();
+ // TODO
}
@@ -275,12 +275,12 @@ void Screen::addDrawRequest(const DrawRequest &drawRequest) {
byte *spriteData;
int16 frameNum;
- SpriteDrawItem sprite;
- memset(&sprite, 0, sizeof(SpriteDrawItem));
+ SpriteDrawItem sprite;
+ memset(&sprite, 0, sizeof(SpriteDrawItem));
if (drawRequest.flags == 0xFFFF)
- return;
-
+ return;
+
sprite.flags = 0;
sprite.baseColor = drawRequest.baseColor;
sprite.x = drawRequest.x;
@@ -291,11 +291,11 @@ void Screen::addDrawRequest(const DrawRequest &drawRequest) {
spriteData = _vm->_res->load(drawRequest.resIndex);
if (drawRequest.flags & 0x2000) {
- sprite.flags |= 0x10;
+ sprite.flags |= 0x10;
}
if (drawRequest.flags & 0x4000) {
- sprite.flags |= 0x40;
+ sprite.flags |= 0x40;
}
frameNum = drawRequest.flags & 0x0FFF;
@@ -305,7 +305,7 @@ void Screen::addDrawRequest(const DrawRequest &drawRequest) {
SpriteFrameEntry spriteFrameEntry(spriteData + frameNum * 12);
if (spriteFrameEntry.w == 0 || spriteFrameEntry.h == 0)
- return;
+ return;
sprite.offset = spriteFrameEntry.offset;
@@ -316,9 +316,9 @@ void Screen::addDrawRequest(const DrawRequest &drawRequest) {
sprite.origHeight = spriteFrameEntry.h;
if (drawRequest.flags & 0x1000) {
- spriteDraw_X = spriteFrameEntry.w - spriteFrameEntry.x;
+ spriteDraw_X = spriteFrameEntry.w - spriteFrameEntry.x;
} else {
- spriteDraw_X = spriteFrameEntry.x;
+ spriteDraw_X = spriteFrameEntry.x;
}
spriteDraw_Y = spriteFrameEntry.y;
@@ -327,7 +327,7 @@ void Screen::addDrawRequest(const DrawRequest &drawRequest) {
if (drawRequest.scaling != 0) {
- byte scaleValue = ABS(drawRequest.scaling);
+ byte scaleValue = ABS(drawRequest.scaling);
scaleValueX = scaleValue * sprite.origWidth;
sprite.xdelta = (10000 * sprite.origWidth) / scaleValueX;
@@ -338,63 +338,63 @@ void Screen::addDrawRequest(const DrawRequest &drawRequest) {
scaleValueY /= 100;
if (drawRequest.scaling > 0) {
- sprite.flags |= 2;
- sprite.width = sprite.origWidth + scaleValueX;
- sprite.height = sprite.origHeight + scaleValueY;
- spriteDraw_X += (spriteDraw_X * scaleValue) / 100;
- spriteDraw_Y += (spriteDraw_Y * scaleValue) / 100;
+ sprite.flags |= 2;
+ sprite.width = sprite.origWidth + scaleValueX;
+ sprite.height = sprite.origHeight + scaleValueY;
+ spriteDraw_X += (spriteDraw_X * scaleValue) / 100;
+ spriteDraw_Y += (spriteDraw_Y * scaleValue) / 100;
} else {
- sprite.flags |= 1;
+ sprite.flags |= 1;
sprite.width = sprite.origWidth - scaleValueX;
- sprite.height = sprite.origHeight - 1 - scaleValueY;
+ sprite.height = sprite.origHeight - 1 - scaleValueY;
if (sprite.width <= 0 || sprite.height <= 0)
- return;
- spriteDraw_X -= (spriteDraw_X * scaleValue) / 100;
- spriteDraw_Y -= (spriteDraw_Y * scaleValue) / 100;
+ return;
+ spriteDraw_X -= (spriteDraw_X * scaleValue) / 100;
+ spriteDraw_Y -= (spriteDraw_Y * scaleValue) / 100;
}
}
sprite.x -= spriteDraw_X;
- sprite.y -= spriteDraw_Y;
+ sprite.y -= spriteDraw_Y;
- sprite.yerror = sprite.ydelta;
+ sprite.yerror = sprite.ydelta;
// Now we check if the sprite needs to be clipped
// Clip Y
- if (sprite.y - _vm->_cameraY < 0) {
-
- int16 clipHeight = ABS(sprite.y - _vm->_cameraY);
- int16 chopHeight, skipHeight, lineWidth;
- byte *spriteFrameData;
+ if (sprite.y - _vm->_cameraY < 0) {
+
+ int16 clipHeight = ABS(sprite.y - _vm->_cameraY);
+ int16 chopHeight, skipHeight, lineWidth;
+ byte *spriteFrameData;
sprite.height -= clipHeight;
if (sprite.height <= 0)
- return;
+ return;
- sprite.y = _vm->_cameraY;
-
- // If the sprite is scaled
- if (sprite.flags & 3) {
- chopHeight = sprite.ydelta;
+ sprite.y = _vm->_cameraY;
+
+ // If the sprite is scaled
+ if (sprite.flags & 3) {
+ chopHeight = sprite.ydelta;
skipHeight = clipHeight;
- if ((sprite.flags & 2) == 0) {
- do {
- chopHeight -= 100;
- if (chopHeight <= 0) {
- skipHeight++;
- chopHeight += sprite.ydelta;
+ if ((sprite.flags & 2) == 0) {
+ do {
+ chopHeight -= 100;
+ if (chopHeight <= 0) {
+ skipHeight++;
+ chopHeight += sprite.ydelta;
} else {
- clipHeight--;
+ clipHeight--;
}
} while (clipHeight > 0);
} else {
- do {
- chopHeight -= 100;
- if (chopHeight < 0) {
- skipHeight--;
- chopHeight += sprite.ydelta + 100;
+ do {
+ chopHeight -= 100;
+ if (chopHeight < 0) {
+ skipHeight--;
+ chopHeight += sprite.ydelta + 100;
}
clipHeight--;
} while (clipHeight > 0);
@@ -407,72 +407,72 @@ void Screen::addDrawRequest(const DrawRequest &drawRequest) {
// Now the sprite's offset is adjusted to point to the starting line
if ((sprite.flags & 0x10) == 0) {
while (clipHeight--) {
- lineWidth = 0;
- while (lineWidth </*CHECKME was != */ sprite.origWidth) {
- sprite.offset++;
- lineWidth += (*spriteFrameData++) & 0x0F;
+ lineWidth = 0;
+ while (lineWidth </*CHECKME was != */ sprite.origWidth) {
+ sprite.offset++;
+ lineWidth += (*spriteFrameData++) & 0x0F;
}
}
} else {
- lineWidth = 0;
+ lineWidth = 0;
while (clipHeight--) {
- while (lineWidth < sprite.origWidth) {
- sprite.offset += 2;
- spriteFrameData++;
+ while (lineWidth < sprite.origWidth) {
+ sprite.offset += 2;
+ spriteFrameData++;
lineWidth += *spriteFrameData++;
}
}
}
-
+
}
if (sprite.y + sprite.height - _vm->_cameraY - _vm->_cameraHeight > 0)
- sprite.height -= sprite.y + sprite.height - _vm->_cameraY - _vm->_cameraHeight;
+ sprite.height -= sprite.y + sprite.height - _vm->_cameraY - _vm->_cameraHeight;
if (sprite.height <= 0)
- return;
-
+ return;
+
sprite.value1 = 0;
if (drawRequest.flags & 0x1000) {
- // Left border
- sprite.flags |= 4;
- if (sprite.x - _vm->_cameraX < 0) {
- sprite.width -= ABS(sprite.x - _vm->_cameraX);
- if (sprite.width <= 0)
- return;
+ // Left border
+ sprite.flags |= 4;
+ if (sprite.x - _vm->_cameraX < 0) {
+ sprite.width -= ABS(sprite.x - _vm->_cameraX);
+ if (sprite.width <= 0)
+ return;
sprite.x = _vm->_cameraX;
}
- // Right border
+ // Right border
if (sprite.x + sprite.width - _vm->_cameraX - 640 > 0) {
- sprite.flags |= 8;
- sprite.width -= sprite.x + sprite.width - _vm->_cameraX - 640;
- if (sprite.width <= 0)
- return;
+ sprite.flags |= 8;
+ sprite.width -= sprite.x + sprite.width - _vm->_cameraX - 640;
+ if (sprite.width <= 0)
+ return;
sprite.value1 = sprite.x + sprite.width - _vm->_cameraX - 640;
}
} else {
- // Left border
- if (sprite.x - _vm->_cameraX < 0) {
- sprite.flags |= 8;
- sprite.width -= ABS(sprite.x - _vm->_cameraX);
- if (sprite.width <= 0)
- return;
- sprite.value1 = ABS(sprite.x - _vm->_cameraX);
- sprite.x = _vm->_cameraX;
+ // Left border
+ if (sprite.x - _vm->_cameraX < 0) {
+ sprite.flags |= 8;
+ sprite.width -= ABS(sprite.x - _vm->_cameraX);
+ if (sprite.width <= 0)
+ return;
+ sprite.value1 = ABS(sprite.x - _vm->_cameraX);
+ sprite.x = _vm->_cameraX;
}
- // Right border
+ // Right border
if (sprite.x + sprite.width - _vm->_cameraX - 640 > 0) {
- sprite.flags |= 8;
+ sprite.flags |= 8;
sprite.width -= sprite.x + sprite.width - _vm->_cameraX - 640;
- if (sprite.width <= 0)
- return;
+ if (sprite.width <= 0)
+ return;
}
}
// Add sprite sorted by priority
Common::List<SpriteDrawItem>::iterator iter = _spriteDrawList.begin();
while (iter != _spriteDrawList.end() && (*iter).ybottom <= sprite.ybottom) {
- iter++;
+ iter++;
}
_spriteDrawList.insert(iter, sprite);
@@ -480,43 +480,43 @@ void Screen::addDrawRequest(const DrawRequest &drawRequest) {
void Screen::drawSprite(SpriteDrawItem *sprite) {
- debug(0, "Screen::drawSprite() x = %d; y = %d; flags = %04X; resIndex = %d; offset = %08X; drawX = %d; drawY = %d",
+ debug(0, "Screen::drawSprite() x = %d; y = %d; flags = %04X; resIndex = %d; offset = %08X; drawX = %d; drawY = %d",
sprite->x, sprite->y, sprite->flags, sprite->resIndex, sprite->offset,
sprite->x - _vm->_cameraX, sprite->y - _vm->_cameraY);
- debug(0, "Screen::drawSprite() width = %d; height = %d; origWidth = %d; origHeight = %d",
+ debug(0, "Screen::drawSprite() width = %d; height = %d; origWidth = %d; origHeight = %d",
sprite->width, sprite->height, sprite->origWidth, sprite->origHeight);
- byte *source = _vm->_res->load(sprite->resIndex) + sprite->offset;
- byte *dest = _frontScreen + (sprite->x - _vm->_cameraX) + (sprite->y - _vm->_cameraY) * 640;
+ byte *source = _vm->_res->load(sprite->resIndex) + sprite->offset;
+ byte *dest = _frontScreen + (sprite->x - _vm->_cameraX) + (sprite->y - _vm->_cameraY) * 640;
// FIXME: Temporary hack until proper clipping is implemented
/*
int16 dx = sprite->x - _vm->_cameraX, dy = sprite->y - _vm->_cameraY;
if (dx < 0 || dy < 0 || dx + sprite->width >= 640 || dy + sprite->height >= 400)
- return;
- */
+ return;
+ */
+
+ SpriteReader spriteReader(source, sprite);
- SpriteReader spriteReader(source, sprite);
-
if (sprite->flags & 0x40) {
- // TODO: Shadow sprites
+ // TODO: Shadow sprites
} else if (sprite->flags & 0x10) {
- // 256 color sprite
- drawSpriteCore(dest, spriteReader, sprite);
+ // 256 color sprite
+ drawSpriteCore(dest, spriteReader, sprite);
} else {
- // 16 color sprite
- if (sprite->flags & 1) {
- SpriteFilterScaleDown spriteScaler(sprite, &spriteReader);
- drawSpriteCore(dest, spriteScaler, sprite);
+ // 16 color sprite
+ if (sprite->flags & 1) {
+ SpriteFilterScaleDown spriteScaler(sprite, &spriteReader);
+ drawSpriteCore(dest, spriteScaler, sprite);
} else if (sprite->flags & 2) {
- SpriteFilterScaleUp spriteScaler(sprite, &spriteReader);
- drawSpriteCore(dest, spriteScaler, sprite);
+ SpriteFilterScaleUp spriteScaler(sprite, &spriteReader);
+ drawSpriteCore(dest, spriteScaler, sprite);
} else {
- drawSpriteCore(dest, spriteReader, sprite);
+ drawSpriteCore(dest, spriteReader, sprite);
}
}
- debug(0, "Screen::drawSprite() ok");
+ debug(0, "Screen::drawSprite() ok");
}
@@ -526,14 +526,14 @@ void Screen::drawSpriteCore(byte *dest, SpriteFilter &reader, SpriteDrawItem *sp
/*
if ((sprite->flags & 8))
- return;
- */
+ return;
+ */
if (sprite->flags & 4) {
- destInc = -1;
+ destInc = -1;
dest += sprite->width;
} else {
- destInc = 1;
+ destInc = 1;
}
SpriteReaderStatus status;
@@ -546,29 +546,29 @@ void Screen::drawSpriteCore(byte *dest, SpriteFilter &reader, SpriteDrawItem *sp
status = reader.readPacket(packet);
if (skipX > 0) {
- while (skipX > 0) {
- skipX -= packet.count;
- if (skipX < 0) {
+ while (skipX > 0) {
+ skipX -= packet.count;
+ if (skipX < 0) {
packet.count = ABS(skipX);
break;
}
- status = reader.readPacket(packet);
+ status = reader.readPacket(packet);
}
}
if (((sprite->flags & 0x10) && (packet.pixel != 0xFF)) || !(sprite->flags & 0x10) && (packet.pixel != 0)) {
if (sprite->flags & 0x40) {
} else if (sprite->flags & 0x10) {
- packet.pixel = ((packet.pixel << 4) & 0xF0) | ((packet.pixel >> 4) & 0x0F);
+ packet.pixel = ((packet.pixel << 4) & 0xF0) | ((packet.pixel >> 4) & 0x0F);
} else {
- packet.pixel += sprite->baseColor - 1;
- }
- while (packet.count--) {
- *dest = packet.pixel;
+ packet.pixel += sprite->baseColor - 1;
+ }
+ while (packet.count--) {
+ *dest = packet.pixel;
dest += destInc;
}
} else {
- dest += packet.count * destInc;
+ dest += packet.count * destInc;
}
if (status == kSrsEndOfLine) {
@@ -583,7 +583,7 @@ void Screen::drawSpriteCore(byte *dest, SpriteFilter &reader, SpriteDrawItem *sp
void Screen::drawSprites() {
for (Common::List<SpriteDrawItem>::iterator iter = _spriteDrawList.begin(); iter != _spriteDrawList.end(); iter++) {
- SpriteDrawItem *sprite = &(*iter);
+ SpriteDrawItem *sprite = &(*iter);
drawSprite(sprite);
_vm->_segmap->restoreMasksBySprite(sprite);
}
@@ -596,16 +596,16 @@ void Screen::updateVerbLine(int16 slotIndex, int16 slotOffset) {
Font font(_vm->_res->load(_fontResIndexArray[0]));
- _verbLineItems[_verbLineNum].slotIndex = slotIndex;
- _verbLineItems[_verbLineNum].slotOffset = slotOffset;
+ _verbLineItems[_verbLineNum].slotIndex = slotIndex;
+ _verbLineItems[_verbLineNum].slotOffset = slotOffset;
// First clear the line
int16 y = _verbLineY;
for (int16 i = 0; i < _verbLineCount; i++) {
byte *dest = _frontScreen + _verbLineX - _verbLineWidth / 2 + (y - 1 + _vm->_cameraHeight) * 640;
for (int16 j = 0; j < 20; j++) {
- memset(dest, 0xE0, _verbLineWidth);
- dest += 640;
+ memset(dest, 0xE0, _verbLineWidth);
+ dest += 640;
}
y += 18;
}
@@ -622,19 +622,19 @@ void Screen::updateVerbLine(int16 slotIndex, int16 slotOffset) {
memset(_tempString, 0, sizeof(_tempString));
for (int16 i = 0; i <= _verbLineNum; i++) {
- sourceString = _vm->_script->getSlotData(_verbLineItems[i].slotIndex) + _verbLineItems[i].slotOffset;
+ sourceString = _vm->_script->getSlotData(_verbLineItems[i].slotIndex) + _verbLineItems[i].slotOffset;
preprocessText(_fontResIndexArray[0], _verbLineWidth, width, sourceString, destString, len);
_tempStringLen1 += len;
}
if (_verbLineCount != 1) {
- int16 charWidth;
- if (*sourceString < 0xF0) {
+ int16 charWidth;
+ if (*sourceString < 0xF0) {
while (*sourceString > 0x20 && *sourceString < 0xF0 && len > 0/*CHECKME, len check added*/) {
- byte ch = *sourceString--;
- _tempStringLen1--;
- len--;
- charWidth = font.getCharWidth(ch) + font.getSpacing() - 1;
+ byte ch = *sourceString--;
+ _tempStringLen1--;
+ len--;
+ charWidth = font.getCharWidth(ch) + font.getSpacing() - 1;
width -= charWidth;
}
width += charWidth;
@@ -642,14 +642,14 @@ void Screen::updateVerbLine(int16 slotIndex, int16 slotOffset) {
_tempStringLen1 -= len;
_tempStringLen2 = len + 1;
- drawString(_verbLineX - 1 - (width / 2), y, 0xF9, 0xFF, _fontResIndexArray[0]);
+ drawString(_verbLineX - 1 - (width / 2), y, 0xF9, 0xFF, _fontResIndexArray[0]);
destString = _tempString;
width = 0;
preprocessText(_fontResIndexArray[0], _verbLineWidth, width, sourceString, destString, len);
_tempStringLen1 += len;
- y += 9;
+ y += 9;
}
y += 9;
}
@@ -667,10 +667,10 @@ void Screen::updateTalkText(int16 slotIndex, int16 slotOffset) {
byte durationModifier = 1;
byte *textData = _vm->_script->getSlotData(slotIndex) + slotOffset;
- TalkTextItem *item = &_talkTextItems[_talkTextItemNum];
+ TalkTextItem *item = &_talkTextItems[_talkTextItemNum];
- item->fontNum = 0;
- item->color = _talkTextFontColor;
+ item->fontNum = 0;
+ item->color = _talkTextFontColor;
//debug(0, "## _talkTextMaxWidth = %d", _talkTextMaxWidth);
@@ -680,53 +680,53 @@ void Screen::updateTalkText(int16 slotIndex, int16 slotOffset) {
maxWidth = 624 - ABS(x - 320) * 2;
while (1) {
- if (*textData == 0x0A) {
+ if (*textData == 0x0A) {
x = CLIP<int16>(textData[3], 120, _talkTextMaxWidth);
y = CLIP<int16>(READ_LE_UINT16(&textData[1]), 4, _vm->_cameraHeight - 16);
maxWidth = 624 - ABS(x - 320) * 2;
textData += 4;
} else if (*textData == 0x14) {
- item->color = textData[1];
- textData += 2;
+ item->color = textData[1];
+ textData += 2;
} else if (*textData == 0x19) {
- durationModifier = textData[1];
- textData += 2;
+ durationModifier = textData[1];
+ textData += 2;
} else if (*textData < 0x0A) {
- item->fontNum = textData[1];
- textData += 2;
+ item->fontNum = textData[1];
+ textData += 2;
} else
- break;
+ break;
}
- item->slotIndex = slotIndex;
- item->slotOffset = textData - _vm->_script->getSlotData(slotIndex);
-
- width = 0;
- length = 0;
-
- item->rectCount = 0;
-
- Font font(_vm->_res->load(_fontResIndexArray[item->fontNum]));
+ item->slotIndex = slotIndex;
+ item->slotOffset = textData - _vm->_script->getSlotData(slotIndex);
+
+ width = 0;
+ length = 0;
+
+ item->rectCount = 0;
+
+ Font font(_vm->_res->load(_fontResIndexArray[item->fontNum]));
int16 wordLength, wordWidth;
- while (*textData < 0xF0) {
+ while (*textData < 0xF0) {
if (*textData == 0x1E) {
- textData++;
- addTalkTextRect(font, x, y, length, width, item);
- // CHECKME?
+ textData++;
+ addTalkTextRect(font, x, y, length, width, item);
+ // CHECKME?
width = 0;
length = 0;
} else {
- wordLength = 0;
- wordWidth = 0;
- while (*textData >= 0x20 && *textData < 0xF0) {
- byte ch = *textData++;
- wordLength++;
- if (ch == 0x20) {
- wordWidth += font.getWidth();
- break;
+ wordLength = 0;
+ wordWidth = 0;
+ while (*textData >= 0x20 && *textData < 0xF0) {
+ byte ch = *textData++;
+ wordLength++;
+ if (ch == 0x20) {
+ wordWidth += font.getWidth();
+ break;
} else {
- wordWidth += font.getCharWidth(ch) + font.getSpacing() - 1;
+ wordWidth += font.getCharWidth(ch) + font.getSpacing() - 1;
}
}
@@ -751,7 +751,7 @@ void Screen::updateTalkText(int16 slotIndex, int16 slotOffset) {
int16 textDurationMultiplier = item->duration + 8;
// TODO: Check sound/text flags
if (*textData == 0xFE) {
- //textDurationMultiplier += 100;
+ //textDurationMultiplier += 100;
}
item->duration = 4 * textDurationMultiplier * durationModifier;
@@ -760,14 +760,14 @@ void Screen::updateTalkText(int16 slotIndex, int16 slotOffset) {
void Screen::addTalkTextRect(Font &font, int16 x, int16 &y, int16 length, int16 width, TalkTextItem *item) {
if (width > 0) {
- TextRect *textRect = &item->rects[item->rectCount];
- width = width + 1 - font.getSpacing();
- textRect->width = width;
- item->duration += length;
- textRect->length = length;
- textRect->y = y;
- textRect->x = CLIP<int16>(x - width / 2, 0, 640);
- item->rectCount++;
+ TextRect *textRect = &item->rects[item->rectCount];
+ width = width + 1 - font.getSpacing();
+ textRect->width = width;
+ item->duration += length;
+ textRect->length = length;
+ textRect->y = y;
+ textRect->x = CLIP<int16>(x - width / 2, 0, 640);
+ item->rectCount++;
}
y += font.getHeight() - 1;
@@ -782,25 +782,25 @@ void Screen::drawTalkTextItems() {
TalkTextItem *item = &_talkTextItems[i];
byte *text = _vm->_script->getSlotData(item->slotIndex) + item->slotOffset;
- if (item->fontNum == -1 || item->duration == 0)
- continue;
+ if (item->fontNum == -1 || item->duration == 0)
+ continue;
item->duration -= _vm->_counter01;
if (item->duration < 0)
- item->duration = 0;
-
- Font font(_vm->_res->load(_fontResIndexArray[item->fontNum]));
+ item->duration = 0;
+
+ Font font(_vm->_res->load(_fontResIndexArray[item->fontNum]));
for (byte j = 0; j < item->rectCount; j++) {
int16 x = item->rects[j].x;
for (byte pos = 0; pos < item->rects[j].length; pos++) {
- byte ch = *text++;
- if (ch < 0x20)
- continue;
- if (ch == 0x20) {
- x += font.getWidth();
+ byte ch = *text++;
+ if (ch < 0x20)
+ continue;
+ if (ch == 0x20) {
+ x += font.getWidth();
} else {
- drawChar2(font, _frontScreen, x, item->rects[j].y, ch, item->color);
- x += font.getCharWidth(ch) + font.getSpacing() - 1;
+ drawChar2(font, _frontScreen, x, item->rects[j].y, ch, item->color);
+ x += font.getCharWidth(ch) + font.getSpacing() - 1;
}
}
}
@@ -822,30 +822,30 @@ void Screen::printText(byte *textData) {
// Really strange stuff.
for (int i = 30; i >= 0; i--) {
- if (textData[i] >= 0xF0)
- break;
+ if (textData[i] >= 0xF0)
+ break;
if (i == 0)
- return;
+ return;
}
do {
- if (*textData == 0x0A) {
- // Set text position
- y = textData[1];
- x = READ_LE_UINT32(textData + 2);
- textData += 4;
+ if (*textData == 0x0A) {
+ // Set text position
+ y = textData[1];
+ x = READ_LE_UINT32(textData + 2);
+ textData += 4;
} else if (*textData == 0x0B) {
- // Inc text position
- y += textData[1]; // CHECKME: Maybe these are signed?
- x += textData[2];
- textData += 3;
+ // Inc text position
+ y += textData[1]; // CHECKME: Maybe these are signed?
+ x += textData[2];
+ textData += 3;
} else {
byte *destString = _tempString;
int width = 0;
_tempStringLen1 = 0;
- preprocessText(_fontResIndexArray[1], 640, width, textData, destString, _tempStringLen2);
- drawString(x - width / 2, y, _fontColor1, _fontColor2, _fontResIndexArray[1]);
+ preprocessText(_fontResIndexArray[1], 640, width, textData, destString, _tempStringLen2);
+ drawString(x - width / 2, y, _fontColor1, _fontColor2, _fontResIndexArray[1]);
}
} while (*textData != 0xFF);
@@ -858,17 +858,17 @@ void Screen::preprocessText(uint fontResIndex, int maxWidth, int &width, byte *&
len = 0;
while (*sourceString >= 0x20 && *sourceString < 0xF0) {
- byte ch = *sourceString;
+ byte ch = *sourceString;
byte charWidth;
- if (ch <= 0x20)
- charWidth = font.getWidth();
+ if (ch <= 0x20)
+ charWidth = font.getWidth();
else
charWidth = font.getCharWidth(ch) + font.getSpacing() - 1;
if (width + charWidth >= maxWidth)
- break;
+ break;
len++;
width += charWidth;
- *destString++ = *sourceString++;
+ *destString++ = *sourceString++;
}
}
@@ -884,16 +884,16 @@ void Screen::drawString(int16 x, int16 y, byte fontColor1, byte fontColor2, uint
int16 yadd = 1;
for (byte pos = 0; pos < len; pos++) {
- if (pos == _tempStringLen1) {
- color = fontColor2;
+ if (pos == _tempStringLen1) {
+ color = fontColor2;
}
- byte ch = *text++;
- if (ch <= 0x20) {
- x += font.getWidth();
+ byte ch = *text++;
+ if (ch <= 0x20) {
+ x += font.getWidth();
} else {
- drawChar(font, _frontScreen, x + 1, y + _vm->_cameraHeight - yadd, ch, color);
- x += font.getCharWidth(ch) + font.getSpacing() - 1;
- yadd = -yadd;
+ drawChar(font, _frontScreen, x + 1, y + _vm->_cameraHeight - yadd, ch, color);
+ x += font.getCharWidth(ch) + font.getSpacing() - 1;
+ yadd = -yadd;
}
}
@@ -912,19 +912,19 @@ void Screen::drawChar(const Font &font, byte *dest, int16 x, int16 y, byte ch, b
charHeight = font.getHeight() - 2;
charData = font.getCharData(ch);
- while (charHeight--) {
- byte lineWidth = charWidth;
- while (lineWidth > 0) {
- byte count = charData[0] & 0x0F;
- byte flags = charData[0] & 0xF0;
+ while (charHeight--) {
+ byte lineWidth = charWidth;
+ while (lineWidth > 0) {
+ byte count = charData[0] & 0x0F;
+ byte flags = charData[0] & 0xF0;
charData++;
lineWidth -= count;
if (!(flags & 0x80) && (flags & 0x10)) {
- memset(dest, color, count);
+ memset(dest, color, count);
}
dest += count;
}
- dest += 640 - charWidth;
+ dest += 640 - charWidth;
}
}
@@ -940,25 +940,25 @@ void Screen::drawChar2(const Font &font, byte *dest, int16 x, int16 y, byte ch,
charHeight = font.getHeight() - 2;
charData = font.getCharData(ch);
- while (charHeight--) {
- byte lineWidth = charWidth;
- while (lineWidth > 0) {
- byte count = charData[0] & 0x0F;
- byte flags = charData[0] & 0xF0;
+ while (charHeight--) {
+ byte lineWidth = charWidth;
+ while (lineWidth > 0) {
+ byte count = charData[0] & 0x0F;
+ byte flags = charData[0] & 0xF0;
charData++;
lineWidth -= count;
if ((flags & 0x80) == 0) {
if ((flags & 0x10) == 0) {
- memset(dest, 0, count);
- } else {
- memset(dest, color, count);
+ memset(dest, 0, count);
+ } else {
+ memset(dest, color, count);
}
}
dest += count;
}
- dest += 640 - charWidth;
+ dest += 640 - charWidth;
}
}
diff --git a/engines/toltecs/screen.h b/engines/toltecs/screen.h
index 352eeaec29..156e4e18b6 100644
--- a/engines/toltecs/screen.h
+++ b/engines/toltecs/screen.h
@@ -122,16 +122,16 @@ enum SpriteReaderStatus {
class SpriteFilter {
public:
- SpriteFilter(SpriteDrawItem *sprite) : _sprite(sprite) {
+ SpriteFilter(SpriteDrawItem *sprite) : _sprite(sprite) {
}
virtual SpriteReaderStatus readPacket(PixelPacket &packet) = 0;
protected:
- SpriteDrawItem *_sprite;
+ SpriteDrawItem *_sprite;
};
class SpriteReader : public SpriteFilter {
public:
- SpriteReader(byte *source, SpriteDrawItem *sprite) : SpriteFilter(sprite), _source(source) {
+ SpriteReader(byte *source, SpriteDrawItem *sprite) : SpriteFilter(sprite), _source(source) {
_curWidth = _sprite->origWidth;
_curHeight = _sprite->origHeight;
}
@@ -146,23 +146,23 @@ public:
}
_curWidth -= packet.count;
if (_curWidth <= 0) {
- _curHeight--;
- if (_curHeight == 0) {
- return kSrsEndOfSprite;
+ _curHeight--;
+ if (_curHeight == 0) {
+ return kSrsEndOfSprite;
} else {
- _curWidth = _sprite->origWidth;
- return kSrsEndOfLine;
+ _curWidth = _sprite->origWidth;
+ return kSrsEndOfLine;
}
} else {
- return kSrsPixelsLeft;
+ return kSrsPixelsLeft;
}
}
byte *getSource() {
- return _source;
+ return _source;
}
void setSource(byte *source) {
- _source = source;
- _curHeight++;
+ _source = source;
+ _curHeight++;
}
protected:
byte *_source;
@@ -171,49 +171,49 @@ protected:
class SpriteFilterScaleDown : public SpriteFilter {
public:
- SpriteFilterScaleDown(SpriteDrawItem *sprite, SpriteReader *reader) : SpriteFilter(sprite), _reader(reader) {
+ SpriteFilterScaleDown(SpriteDrawItem *sprite, SpriteReader *reader) : SpriteFilter(sprite), _reader(reader) {
_height = _sprite->height;
_yerror = _sprite->yerror;
_origHeight = _sprite->origHeight;
_scalerStatus = 0;
}
SpriteReaderStatus readPacket(PixelPacket &packet) {
- SpriteReaderStatus status;
+ SpriteReaderStatus status;
if (_scalerStatus == 0) {
_xerror = _sprite->xdelta;
_yerror -= 100;
while (_yerror <= 0) {
- do {
- status = _reader->readPacket(packet);
+ do {
+ status = _reader->readPacket(packet);
} while (status == kSrsPixelsLeft);
_yerror += _sprite->ydelta - 100;
}
if (status == kSrsEndOfSprite)
- return kSrsEndOfSprite;
- _scalerStatus = 1;
+ return kSrsEndOfSprite;
+ _scalerStatus = 1;
}
if (_scalerStatus == 1) {
- status = _reader->readPacket(packet);
- byte updcount = packet.count;
- while (updcount--) {
+ status = _reader->readPacket(packet);
+ byte updcount = packet.count;
+ while (updcount--) {
_xerror -= 100;
if (_xerror <= 0) {
- if (packet.count > 0)
- packet.count--;
- _xerror += _sprite->xdelta;
+ if (packet.count > 0)
+ packet.count--;
+ _xerror += _sprite->xdelta;
}
}
if (status == kSrsEndOfLine) {
if (--_height == 0)
return kSrsEndOfSprite;
- _scalerStatus = 0;
- return kSrsEndOfLine;
+ _scalerStatus = 0;
+ return kSrsEndOfLine;
}
}
return kSrsPixelsLeft;
}
protected:
- SpriteReader *_reader;
+ SpriteReader *_reader;
int16 _xerror, _yerror;
int16 _height;
int16 _origHeight;
@@ -222,46 +222,46 @@ protected:
class SpriteFilterScaleUp : public SpriteFilter {
public:
- SpriteFilterScaleUp(SpriteDrawItem *sprite, SpriteReader *reader) : SpriteFilter(sprite), _reader(reader) {
+ SpriteFilterScaleUp(SpriteDrawItem *sprite, SpriteReader *reader) : SpriteFilter(sprite), _reader(reader) {
_height = _sprite->height;
_yerror = _sprite->yerror;
_origHeight = _sprite->origHeight;
_scalerStatus = 0;
}
SpriteReaderStatus readPacket(PixelPacket &packet) {
- SpriteReaderStatus status;
- if (_scalerStatus == 0) {
+ SpriteReaderStatus status;
+ if (_scalerStatus == 0) {
_xerror = _sprite->xdelta;
_sourcep = _reader->getSource();
- _scalerStatus = 1;
+ _scalerStatus = 1;
}
if (_scalerStatus == 1) {
- status = _reader->readPacket(packet);
- byte updcount = packet.count;
+ status = _reader->readPacket(packet);
+ byte updcount = packet.count;
while (updcount--) {
- _xerror -= 100;
- if (_xerror <= 0) {
- packet.count++;
- _xerror += _sprite->xdelta;
+ _xerror -= 100;
+ if (_xerror <= 0) {
+ packet.count++;
+ _xerror += _sprite->xdelta;
}
}
if (status == kSrsEndOfLine) {
if (--_height == 0)
return kSrsEndOfSprite;
- _yerror -= 100;
+ _yerror -= 100;
if (_yerror <= 0) {
- _reader->setSource(_sourcep);
+ _reader->setSource(_sourcep);
_yerror += _sprite->ydelta + 100;
}
- _scalerStatus = 0;
- return kSrsEndOfLine;
+ _scalerStatus = 0;
+ return kSrsEndOfLine;
}
}
return kSrsPixelsLeft;
}
protected:
- SpriteReader *_reader;
- byte *_sourcep;
+ SpriteReader *_reader;
+ byte *_sourcep;
int16 _xerror, _yerror;
int16 _height;
int16 _origHeight;
@@ -271,7 +271,7 @@ protected:
//*END*TEST*CODE**********************************************************************************************
struct TextRect {
- int16 x, y;
+ int16 x, y;
int16 width, length;
};
@@ -306,8 +306,8 @@ public:
void clearSprites();
// Sprite drawing
- void drawSprite(SpriteDrawItem *sprite);
- void drawSpriteCore(byte *dest, SpriteFilter &reader, SpriteDrawItem *sprite);
+ void drawSprite(SpriteDrawItem *sprite);
+ void drawSpriteCore(byte *dest, SpriteFilter &reader, SpriteDrawItem *sprite);
void drawSprites();
// Verb line
@@ -331,12 +331,12 @@ public:
public:
struct VerbLineItem {
- int16 slotIndex;
+ int16 slotIndex;
int16 slotOffset;
};
struct Rect {
- int16 x, y, width, height;
+ int16 x, y, width, height;
};
ToltecsEngine *_vm;
@@ -345,11 +345,11 @@ public:
Common::List<SpriteDrawItem> _spriteDrawList;
- uint _fontResIndexArray[10];
- byte _fontColor1, _fontColor2;
-
- byte _tempString[100];
- byte _tempStringLen1, _tempStringLen2;
+ uint _fontResIndexArray[10];
+ byte _fontColor1, _fontColor2;
+
+ byte _tempString[100];
+ byte _tempStringLen1, _tempStringLen2;
// Screen shaking
bool _shakeActive;
diff --git a/engines/toltecs/script.cpp b/engines/toltecs/script.cpp
index 5d7e55b49d..73c78e897f 100644
--- a/engines/toltecs/script.cpp
+++ b/engines/toltecs/script.cpp
@@ -60,7 +60,7 @@ ScriptInterpreter::~ScriptInterpreter() {
void ScriptInterpreter::loadScript(uint resIndex, uint slotIndex) {
if (_slots[slotIndex].data) {
- delete[] _slots[slotIndex].data;
+ delete[] _slots[slotIndex].data;
}
_slots[slotIndex].resIndex = resIndex;
@@ -355,8 +355,8 @@ void ScriptInterpreter::execOpcode(byte opcode) {
_switchStack1 = true;
break;
case 49:
- ofs = readByte();
- debug(0, "49, len = %d", ofs);
+ ofs = readByte();
+ debug(0, "49, len = %d", ofs);
_code += ofs;
break;
case 50:
@@ -1047,8 +1047,8 @@ int16 ScriptInterpreter::getGameVar(uint variable) {
value = _vm->_sceneResIndex;
break;
case 19:
- value = _vm->_cameraTop;
- break;
+ value = _vm->_cameraTop;
+ break;
case 20:
value = _vm->_sceneHeight;
break;
@@ -1121,8 +1121,8 @@ void ScriptInterpreter::setGameVar(uint variable, int16 value) {
_vm->_sceneResIndex = value;
break;
case 19:
- _vm->_cameraTop = value;
- break;
+ _vm->_cameraTop = value;
+ break;
case 20:
_vm->_sceneHeight = value;
break;
diff --git a/engines/toltecs/script.h b/engines/toltecs/script.h
index 6f2d5b7365..7b91105f92 100644
--- a/engines/toltecs/script.h
+++ b/engines/toltecs/script.h
@@ -48,19 +48,19 @@ const int kMaxScriptSlots = 50;
class ScriptInterpreter {
public:
- ScriptInterpreter(ToltecsEngine *vm);
- ~ScriptInterpreter();
-
+ ScriptInterpreter(ToltecsEngine *vm);
+ ~ScriptInterpreter();
+
void loadScript(uint resIndex, uint slotIndex);
void runScript(uint slotIndex);
-
+
byte *getSlotData(int slotIndex) const { return _slots[slotIndex].data; }
protected:
enum VarType {
- vtByte,
- vtWord
+ vtByte,
+ vtWord
};
struct ScriptRegs {
@@ -76,15 +76,15 @@ protected:
};
struct ScriptSlot {
- byte *data;
- int32 size;
- uint resIndex;
+ byte *data;
+ int32 size;
+ uint resIndex;
};
- ToltecsEngine *_vm;
-
- byte *_stack;
-
+ ToltecsEngine *_vm;
+
+ byte *_stack;
+
byte *_code, *_subCode;
byte *_localData;
bool _switchStack1, _switchStack2, _switchStack3;
diff --git a/engines/toltecs/segmap.cpp b/engines/toltecs/segmap.cpp
index 6c4796f76a..351bf827f6 100644
--- a/engines/toltecs/segmap.cpp
+++ b/engines/toltecs/segmap.cpp
@@ -43,7 +43,7 @@
namespace Toltecs {
SegmentMap::SegmentMap(ToltecsEngine *vm) : _vm(vm) {
- _maskRectData = new byte[32768];
+ _maskRectData = new byte[32768];
}
SegmentMap::~SegmentMap() {
@@ -54,9 +54,9 @@ void SegmentMap::load(byte *source) {
// TODO: Use MemoryReadStream
- _maskRects.clear();
- _pathRects.clear();
- _infoRects.clear();
+ _maskRects.clear();
+ _pathRects.clear();
+ _infoRects.clear();
// Load mask rects
uint16 maskSize = READ_LE_UINT16(source);
@@ -85,7 +85,7 @@ void SegmentMap::load(byte *source) {
}
memcpy(_maskRectData, source, maskSize - maskRectDataSize);
- source += maskSize - maskRectDataSize;
+ source += maskSize - maskRectDataSize;
// Load path rects
@@ -213,65 +213,65 @@ int SegmentMap::findNextPathRect(int srcRectIndex) {
for (uint rectIndex = 0; rectIndex < _pathRects.size(); ++rectIndex) {
- if ( y1 == _pathRects[rectIndex].height + _pathRects[rectIndex].y && x1 < _pathRects[rectIndex].x + _pathRects[rectIndex].width && x2 > _pathRects[rectIndex].x ) {
+ if (y1 == _pathRects[rectIndex].height + _pathRects[rectIndex].y && x1 < _pathRects[rectIndex].x + _pathRects[rectIndex].width && x2 > _pathRects[rectIndex].x) {
ny = y1;
LABEL_28:
- if ( x1 >= _pathRects[rectIndex].x ) {
+ if (x1 >= _pathRects[rectIndex].x) {
nx1 = x1;
} else {
nx1 = _pathRects[rectIndex].x;
}
- if ( x2 <= _pathRects[rectIndex].x + _pathRects[rectIndex].width ) {
+ if (x2 <= _pathRects[rectIndex].x + _pathRects[rectIndex].width) {
nx2 = x2 - 1;
} else {
nx2 = _pathRects[rectIndex].x + _pathRects[rectIndex].width - 1;
}
- if ( ABS(_x - nx1) >= ABS(_x - nx2) ) {
+ if (ABS(_x - nx1) >= ABS(_x - nx2)) {
nx3 = nx2 - 1;
} else {
nx3 = nx1;
}
- if ( _x > nx1 && _x < nx2 ) {
+ if (_x > nx1 && _x < nx2) {
nx3 = _x;
}
goto LABEL_55;
}
- if ( y2 == _pathRects[rectIndex].y && x1 < _pathRects[rectIndex].x + _pathRects[rectIndex].width && x2 > _pathRects[rectIndex].x ) {
+ if (y2 == _pathRects[rectIndex].y && x1 < _pathRects[rectIndex].x + _pathRects[rectIndex].width && x2 > _pathRects[rectIndex].x) {
ny = y2 - 1;
goto LABEL_28;
}
- if ( x1 == _pathRects[rectIndex].x + _pathRects[rectIndex].width && y1 < _pathRects[rectIndex].y + _pathRects[rectIndex].height && y2 > _pathRects[rectIndex].y ) {
+ if (x1 == _pathRects[rectIndex].x + _pathRects[rectIndex].width && y1 < _pathRects[rectIndex].y + _pathRects[rectIndex].height && y2 > _pathRects[rectIndex].y) {
nx3 = x1;
} else {
- if ( x2 != _pathRects[rectIndex].x || y1 >= _pathRects[rectIndex].y + _pathRects[rectIndex].height || y2 <= _pathRects[rectIndex].y )
+ if (x2 != _pathRects[rectIndex].x || y1 >= _pathRects[rectIndex].y + _pathRects[rectIndex].height || y2 <= _pathRects[rectIndex].y)
continue;
nx3 = x2 - 1;
}
- if ( y1 >= _pathRects[rectIndex].y ) {
+ if (y1 >= _pathRects[rectIndex].y) {
ny3 = y1;
} else {
ny3 = _pathRects[rectIndex].y;
}
- if ( y2 <= _pathRects[rectIndex].y + _pathRects[rectIndex].height ) {
+ if (y2 <= _pathRects[rectIndex].y + _pathRects[rectIndex].height) {
ny2 = y2 - 1;
} else {
ny2 = _pathRects[rectIndex].y + _pathRects[rectIndex].height - 1;
}
- if ( ABS(_y - ny3) >= ABS(_y - ny2) ) {
+ if (ABS(_y - ny3) >= ABS(_y - ny2)) {
ny = ny2 - 1;
} else {
ny = ny3;
}
- if ( _y > ny3 && _y < ny2 ) {
+ if (_y > ny3 && _y < ny2) {
ny = _y;
}
LABEL_55:
distance = ABS(_x - nx3) + ABS(_y - ny);
v28 = 0;
- while ( v28 < _rectIndexArray2Count ) {
- if ( rectIndex == _rectIndexArray2[v28] ) {
+ while (v28 < _rectIndexArray2Count) {
+ if (rectIndex == _rectIndexArray2[v28]) {
distance = minDistance;
break;
}
@@ -279,15 +279,15 @@ LABEL_55:
}
v28 = 0;
- while ( v28 < _rectIndexArray1Count ) {
- if ( rectIndex == _rectIndexArray1[v28] ) {
+ while (v28 < _rectIndexArray1Count) {
+ if (rectIndex == _rectIndexArray1[v28]) {
distance = minDistance;
break;
}
++v28;
}
- if ( distance < minDistance ) {
+ if (distance < minDistance) {
result = rectIndex;
minDistance = distance;
_pointsArray[_pointsCount].y = ny;
@@ -321,7 +321,7 @@ void SegmentMap::findPath(int16 *pointsArray, int destX, int destY, int x, int y
debug(0, "SegmentMap::findPath(fromX: %d; fromY: %d; toX: %d; toY: %d)", x, y, destX, destY);
sourceRectIndex = findPathRectAtPoint(x, y);
- if ( sourceRectIndex == -1 ) {
+ if (sourceRectIndex == -1) {
adjustPathPoint(x, y);
x = _x;
y = _y;
@@ -337,22 +337,22 @@ void SegmentMap::findPath(int16 *pointsArray, int destX, int destY, int x, int y
adjustPathPoint(_x, _y);
destRectIndex = findPathRectAtPoint(_x, _y);
sourceRectIndex = findPathRectAtPoint(x, y);
- if ( sourceRectIndex != -1 ) {
- if ( destRectIndex != sourceRectIndex ) {
- while ( 1 ) {
+ if (sourceRectIndex != -1) {
+ if (destRectIndex != sourceRectIndex) {
+ while (1) {
do {
_rectIndexArray2[_rectIndexArray2Count++] = sourceRectIndex;
sourceRectIndex = findNextPathRect(sourceRectIndex);
_pointsCount++;
- } while ( sourceRectIndex != -1 && sourceRectIndex != destRectIndex );
- if ( sourceRectIndex != -1 && sourceRectIndex == destRectIndex )
+ } while (sourceRectIndex != -1 && sourceRectIndex != destRectIndex);
+ if (sourceRectIndex != -1 && sourceRectIndex == destRectIndex)
break;
_rectIndexArray1[_rectIndexArray1Count++] = _rectIndexArray2[--_rectIndexArray2Count];
_pointsCount -= 2;
sourceRectIndex = _rectIndexArray2[--_rectIndexArray2Count];
}
sourceRectIndex = 0;
- while ( sourceRectIndex < _pointsCount ) {
+ while (sourceRectIndex < _pointsCount) {
pointsArray[pointsCount++] = _pointsArray[sourceRectIndex].y;
pointsArray[pointsCount++] = _pointsArray[sourceRectIndex].x;
index++;
@@ -375,9 +375,9 @@ void SegmentMap::findPath(int16 *pointsArray, int destX, int destY, int x, int y
ld.pitch = _vm->_sceneWidth;
ld.surf = _vm->_screen->_backScreen;
for (int16 i = 0; i < pointsArray[1] * 2; i+=2) {
- debug(0, "x = %d; y = %d", pointsArray[3+i], pointsArray[2+i]);
- Graphics::drawLine(sx, sy, pointsArray[3+i], pointsArray[2+i], 0xFF, plotProc, &ld);
- sx = pointsArray[3+i];
+ debug(0, "x = %d; y = %d", pointsArray[3+i], pointsArray[2+i]);
+ Graphics::drawLine(sx, sy, pointsArray[3+i], pointsArray[2+i], 0xFF, plotProc, &ld);
+ sx = pointsArray[3+i];
sy = pointsArray[2+i];
}
*/
@@ -393,7 +393,7 @@ int8 SegmentMap::getScalingAtPoint(int16 x, int16 y) {
char topScaling = (char)_infoRects[i].b;
char bottomScaling = (char)_infoRects[i].c;
if (y - _infoRects[i].y > 0) {
- scaling = (ABS(y - _infoRects[i].y) * (bottomScaling - topScaling) / _infoRects[i].height) + topScaling;
+ scaling = (ABS(y - _infoRects[i].y) * (bottomScaling - topScaling) / _infoRects[i].height) + topScaling;
}
}
}
@@ -422,23 +422,23 @@ void SegmentMap::restoreMasksBySprite(SpriteDrawItem *sprite) {
for (uint i = 0; i < _maskRects.size(); i++) {
#if 0
- if ( *(__int16 *)((char *)&spriteDrawList[0].y2 + v5) <= (unsigned __int16)v3->ybottom )
- {
- if ( (unsigned __int16)(*(__int16 *)((char *)&spriteDrawList[0].height + v5)
- + *(__int16 *)((char *)&spriteDrawList[0].y + v5)) > v3->y )
- {
- if ( (unsigned __int16)(v3->height + v3->y) > *(__int16 *)((char *)&spriteDrawList[0].y + v5) )
- {
- if ( (unsigned __int16)(*(__int16 *)((char *)&spriteDrawList[0].width + v5)
- + *(__int16 *)((char *)&spriteDrawList[0].x + v5)) > v3->x )
- {
- if ( (unsigned __int16)(v3->width + v3->x) > *(__int16 *)((char *)&spriteDrawList[0].x + v5) )
- {
+ if ( *(__int16 *)((char *)&spriteDrawList[0].y2 + v5) <= (unsigned __int16)v3->ybottom )
+ {
+ if ( (unsigned __int16)(*(__int16 *)((char *)&spriteDrawList[0].height + v5)
+ + *(__int16 *)((char *)&spriteDrawList[0].y + v5)) > v3->y )
+ {
+ if ( (unsigned __int16)(v3->height + v3->y) > *(__int16 *)((char *)&spriteDrawList[0].y + v5) )
+ {
+ if ( (unsigned __int16)(*(__int16 *)((char *)&spriteDrawList[0].width + v5)
+ + *(__int16 *)((char *)&spriteDrawList[0].x + v5)) > v3->x )
+ {
+ if ( (unsigned __int16)(v3->width + v3->x) > *(__int16 *)((char *)&spriteDrawList[0].x + v5) )
+ {
#endif
- if (sprite->ybottom <= _maskRects[i].ybottom) {
- restoreMask(i);
+ if (sprite->ybottom <= _maskRects[i].ybottom) {
+ restoreMask(i);
}
}
@@ -456,63 +456,63 @@ void SegmentMap::restoreMask(int16 index) {
int16 height = maskRect->height;
byte *mask = _maskRectData + maskRect->maskOffset;
- debug(0, "SegmentMap::restoreMask() screenX = %d; screenY = %d; maskX = %d; maskY = %d",
+ debug(0, "SegmentMap::restoreMask() screenX = %d; screenY = %d; maskX = %d; maskY = %d",
x, y, maskRect->x, maskRect->y);
// Not on screen, skip
if (x + width < 0 || y + height < 0 || x >= 640 || y >= _vm->_cameraHeight)
- return;
+ return;
if (x < 0) {
- skipX = -x;
- x = 0;
+ skipX = -x;
+ x = 0;
}
if (y < 0) {
- int16 skipY = -y;
+ int16 skipY = -y;
for (int16 h = 0; h < skipY; h++) {
- int16 w = width;
- while (w > 0) {
+ int16 w = width;
+ while (w > 0) {
w -= (*mask++) & 0x7F;
}
}
- y = 0;
- height -= skipY;
- maskY += skipY;
+ y = 0;
+ height -= skipY;
+ maskY += skipY;
}
if (x + width >= 640) {
- width -= x + width - 640;
+ width -= x + width - 640;
}
if (y + height >= _vm->_cameraHeight) {
- height -= y + height - _vm->_cameraHeight;
+ height -= y + height - _vm->_cameraHeight;
}
byte *backScreen = _vm->_screen->_backScreen + maskX + (maskY * _vm->_sceneWidth);
byte *frontScreen = _vm->_screen->_frontScreen + x + (y * 640);
for (int16 h = 0; h < height; h++) {
- byte *src = backScreen;
- byte *dst = frontScreen;
- byte maskLine[640], *maskLineP = maskLine;
-
- int16 w = width;
- while (w > 0) {
- byte m = *mask++;
- byte count = m & 0x7F;
- if (m & 0x80)
+ byte *src = backScreen;
+ byte *dst = frontScreen;
+ byte maskLine[640], *maskLineP = maskLine;
+
+ int16 w = width;
+ while (w > 0) {
+ byte m = *mask++;
+ byte count = m & 0x7F;
+ if (m & 0x80)
memset(maskLineP, 1, count);
else
- memset(maskLineP, 0, count);
+ memset(maskLineP, 0, count);
maskLineP += count;
w -= count;
}
src += skipX;
for (int16 c = skipX; c < width; c++) {
- if (maskLine[c] == 1)
- *dst = *src;
+ if (maskLine[c] == 1)
+ *dst = *src;
dst++;
src++;
}
diff --git a/engines/toltecs/segmap.h b/engines/toltecs/segmap.h
index 0ebb3f407e..7ec7cfb9a9 100644
--- a/engines/toltecs/segmap.h
+++ b/engines/toltecs/segmap.h
@@ -58,17 +58,17 @@ struct ScriptWalk {
class SegmentMap {
public:
- SegmentMap(ToltecsEngine *vm);
- ~SegmentMap();
+ SegmentMap(ToltecsEngine *vm);
+ ~SegmentMap();
void load(byte *source);
-
- int findPathRectAtPoint(int x, int y);
- void adjustPathPoint(int x, int y);
-
- void findPath(int16 *pointsArray, int destX, int destY, int x, int y);
-
- int8 getScalingAtPoint(int16 x, int16 y);
+
+ int findPathRectAtPoint(int x, int y);
+ void adjustPathPoint(int x, int y);
+
+ void findPath(int16 *pointsArray, int destX, int destY, int x, int y);
+
+ int8 getScalingAtPoint(int16 x, int16 y);
void getRgbModifiertAtPoint(int16 x, int16 y, int16 id, byte &r, byte &g, byte &b);
void restoreMasksBySprite(SpriteDrawItem *sprite);
@@ -99,20 +99,20 @@ public: // for debugging purposes
};
struct PathPoint {
- int16 y, x;
+ int16 y, x;
};
typedef Common::Array<SegmapMaskRect> SegmapMaskRectArray;
typedef Common::Array<SegmapPathRect> SegmapPathRectArray;
typedef Common::Array<SegmapInfoRect> SegmapInfoRectArray;
- ToltecsEngine *_vm;
-
- SegmapMaskRectArray _maskRects;
- byte *_maskRectData;
+ ToltecsEngine *_vm;
- SegmapPathRectArray _pathRects;
- SegmapInfoRectArray _infoRects;
+ SegmapMaskRectArray _maskRects;
+ byte *_maskRectData;
+
+ SegmapPathRectArray _pathRects;
+ SegmapInfoRectArray _infoRects;
int _rectIndexArray1[1000];
uint _rectIndexArray1Count;
@@ -123,10 +123,10 @@ public: // for debugging purposes
PathPoint _pointsArray[1000];
int16 _pointsCount;
- int _x, _y;
-
- int findNextPathRect(int srcRectIndex);
-
+ int _x, _y;
+
+ int findNextPathRect(int srcRectIndex);
+
};
} // End of namespace Toltecs
diff --git a/engines/toltecs/toltecs.cpp b/engines/toltecs/toltecs.cpp
index 78f3e23afe..73de88f6f3 100644
--- a/engines/toltecs/toltecs.cpp
+++ b/engines/toltecs/toltecs.cpp
@@ -86,8 +86,8 @@ int ToltecsEngine::init() {
int ToltecsEngine::go() {
- _system->setFeatureState(OSystem::kFeatureAutoComputeDirtyRects, true);
-
+ _system->setFeatureState(OSystem::kFeatureAutoComputeDirtyRects, true);
+
_quitGame = false;
_counter01 = 0;
_counter02 = 0;
@@ -108,7 +108,7 @@ int ToltecsEngine::go() {
_doSpeech = true;
_doText = true;
- _walkSpeedY = 5;
+ _walkSpeedY = 5;
_walkSpeedX = 1;
_arc = new ArchiveReader();
@@ -124,8 +124,8 @@ int ToltecsEngine::go() {
_segmap = new SegmentMap(this);
_input = new Input(this);
- _system->showMouse(true);
-
+ _system->showMouse(true);
+
#if 1
_script->loadScript(0, 0);
@@ -151,7 +151,7 @@ void ToltecsEngine::loadScene(uint resIndex) {
byte *scene = _res->load(resIndex);
uint32 imageSize = READ_LE_UINT32(scene);
- _sceneResIndex = resIndex;
+ _sceneResIndex = resIndex;
_sceneHeight = READ_LE_UINT16(scene + 4);
_sceneWidth = READ_LE_UINT16(scene + 6);
@@ -192,10 +192,10 @@ void ToltecsEngine::updateScreen() {
srcp += _sceneWidth;
}
- _screen->drawSprites();
- _screen->clearSprites();
+ _screen->drawSprites();
+ _screen->clearSprites();
- _screen->drawTalkTextItems();
+ _screen->drawTalkTextItems();
_system->copyRectToScreen((const byte *)_screen->_frontScreen, 640, 0, 0, 640, 400);
_system->updateScreen();
@@ -208,10 +208,10 @@ void ToltecsEngine::setCamera(int16 x, int16 y) {
// TODO font_sub_4B5BB()
if (x > _sceneWidth)
- x = _sceneWidth;
+ x = _sceneWidth;
if (y > _sceneHeight - _cameraHeight)
- y = _sceneHeight - _cameraHeight;
+ y = _sceneHeight - _cameraHeight;
// TODO DirtyRect clearing stuff
@@ -321,28 +321,28 @@ void ToltecsEngine::talk(int16 slotIndex, int16 slotOffset) {
while (*scanData < 0xF0) {
- if (*scanData == 0x19) {
- scanData++;
+ if (*scanData == 0x19) {
+ scanData++;
} else if (*scanData == 0x14) {
- scanData++;
+ scanData++;
} else if (*scanData == 0x0A) {
- scanData += 4;
+ scanData += 4;
} else if (*scanData < 0x0A) {
- scanData++;
+ scanData++;
}
- scanData++;
+ scanData++;
}
if (*scanData == 0xFE) {
- if (_doSpeech) {
- int16 resIndex = READ_LE_UINT16(scanData + 1);
- debug(0, "ToltecsEngine::talk() playSound(resIndex: %d)", resIndex);
+ if (_doSpeech) {
+ int16 resIndex = READ_LE_UINT16(scanData + 1);
+ debug(0, "ToltecsEngine::talk() playSound(resIndex: %d)", resIndex);
}
if (_doText) {
- _screen->updateTalkText(slotIndex, slotOffset);
+ _screen->updateTalkText(slotIndex, slotOffset);
} else {
- // TODO: font_sub_4B3E2
+ // TODO: font_sub_4B3E2
}
} else {
_screen->updateTalkText(slotIndex, slotOffset);
@@ -358,9 +358,9 @@ void ToltecsEngine::playText(int16 slotIndex, int16 slotOffset) {
Common::String str;
while (*textData < 0xF0) {
- if (*textData >= 32)
- str += (char)*textData;
- textData++;
+ if (*textData >= 32)
+ str += (char)*textData;
+ textData++;
}
debug(0, "ToltecsEngine::playText() [%s]", str.c_str());
@@ -387,21 +387,21 @@ void ToltecsEngine::walk(byte *walkData) {
walkInfo.scaling = -_segmap->getScalingAtPoint(walkInfo.x, walkInfo.y);
if (walkInfo.y1 < walkInfo.y2)
- ystep = -1;
+ ystep = -1;
else
ystep = 1;
ydelta = ABS(walkInfo.y1 - walkInfo.y2) * _walkSpeedY;
if (walkInfo.x1 < walkInfo.x2)
- xstep = -1;
+ xstep = -1;
else
xstep = 1;
xdelta = ABS(walkInfo.x1 - walkInfo.x2) * _walkSpeedX;
- debug(0, "ToltecsEngine::walk() xdelta = %d; ydelta = %d", xdelta, ydelta);
+ debug(0, "ToltecsEngine::walk() xdelta = %d; ydelta = %d", xdelta, ydelta);
if (xdelta > ydelta)
- SWAP(xdelta, ydelta);
+ SWAP(xdelta, ydelta);
v8 = 100 * xdelta;
if (v8 != 0) {
@@ -414,8 +414,8 @@ void ToltecsEngine::walk(byte *walkData) {
}
if (ydelta > ABS(walkInfo.x1 - walkInfo.x2) * _walkSpeedX) {
- v10 = 100 - walkInfo.scaling;
- v11 = v8;
+ v10 = 100 - walkInfo.scaling;
+ v11 = v8;
} else {
v10 = v8;
v11 = 100 - walkInfo.scaling;
@@ -459,18 +459,18 @@ int16 ToltecsEngine::findRectAtPoint(byte *rectData, int16 x, int16 y, int16 ind
rectData += index * itemSize;
while (1) {
- int16 rectY = READ_LE_UINT16(rectData);
- if (rectY == -10)
- break;
- int16 rectX = READ_LE_UINT16(rectData + 2);
- int16 rectH = READ_LE_UINT16(rectData + 4);
- int16 rectW = READ_LE_UINT16(rectData + 6);
-
- debug(0, "x = %d; y = %d; x1 = %d; y2 = %d; w = %d; h = %d",
- x, y, rectX, rectY, rectW, rectH);
-
- if (x >= rectX && x <= rectX + rectW && y >= rectY && y <= rectY + rectH) {
- return index;
+ int16 rectY = READ_LE_UINT16(rectData);
+ if (rectY == -10)
+ break;
+ int16 rectX = READ_LE_UINT16(rectData + 2);
+ int16 rectH = READ_LE_UINT16(rectData + 4);
+ int16 rectW = READ_LE_UINT16(rectData + 6);
+
+ debug(0, "x = %d; y = %d; x1 = %d; y2 = %d; w = %d; h = %d",
+ x, y, rectX, rectY, rectW, rectH);
+
+ if (x >= rectX && x <= rectX + rectW && y >= rectY && y <= rectY + rectH) {
+ return index;
}
index++;
rectData += itemSize;
diff --git a/engines/toltecs/toltecs.h b/engines/toltecs/toltecs.h
index 47c7a9441a..1d5a394f62 100644
--- a/engines/toltecs/toltecs.h
+++ b/engines/toltecs/toltecs.h
@@ -79,7 +79,7 @@ public:
void updateScreen();
- void setCamera(int16 x, int16 y);
+ void setCamera(int16 x, int16 y);
void setCameraTop(int16 top);
void scrollCameraUp(int16 delta);
void scrollCameraDown(int16 delta);