diff options
-rw-r--r-- | engines/agos/agos.cpp | 1 | ||||
-rw-r--r-- | engines/agos/agos.h | 1 | ||||
-rw-r--r-- | engines/agos/string.cpp | 23 | ||||
-rw-r--r-- | engines/agos/verb.cpp | 13 |
4 files changed, 23 insertions, 15 deletions
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp index 9fb27cb746..78634c81e2 100644 --- a/engines/agos/agos.cpp +++ b/engines/agos/agos.cpp @@ -386,6 +386,7 @@ AGOSEngine::AGOSEngine(OSystem *syst) _boxLineCount = 0; _boxCR = 0; memset(_boxBuffer, 0, sizeof(_boxBuffer)); + _boxBufferPtr = _boxBuffer; _linePtrs[0] = 0; _linePtrs[1] = 0; diff --git a/engines/agos/agos.h b/engines/agos/agos.h index 2161903b7a..cf1bc8e7b4 100644 --- a/engines/agos/agos.h +++ b/engines/agos/agos.h @@ -284,6 +284,7 @@ protected: byte _boxStarHeight; char _boxBuffer[310]; + char *_boxBufferPtr; int _boxLineCount; int _lineCounts[6]; char *_linePtrs[6]; diff --git a/engines/agos/string.cpp b/engines/agos/string.cpp index 6b85f88733..9c1f3e6f3e 100644 --- a/engines/agos/string.cpp +++ b/engines/agos/string.cpp @@ -681,26 +681,25 @@ uint16 AGOSEngine_Waxworks::checkFit(char *Ptr, int width, int lines) { } void AGOSEngine_Waxworks::boxTextMessage(const char *x) { - char *BoxBufferPtr = _boxBuffer; - sprintf(BoxBufferPtr, "%s\n", x); + sprintf(_boxBufferPtr, "%s\n", x); _lineCounts[_boxLineCount] += strlen(x); - BoxBufferPtr += strlen(x) + 1; + _boxBufferPtr += strlen(x) + 1; _boxLineCount++; - _linePtrs[_boxLineCount] = BoxBufferPtr; + _linePtrs[_boxLineCount] = _boxBufferPtr; _boxCR = 1; } void AGOSEngine_Waxworks::boxTextMsg(const char *x) { - char *BoxBufferPtr = _boxBuffer; - sprintf(BoxBufferPtr, "%s", x); + sprintf(_boxBufferPtr, "%s", x); _lineCounts[_boxLineCount] += strlen(x); - BoxBufferPtr += strlen(x); + _boxBufferPtr += strlen(x); _boxCR = 0; } void AGOSEngine_Waxworks::printBox() { - char *BoxBufferPtr = 0; uint16 BoxSize; + + *_boxBufferPtr = 0; _linePtrs[0] = _boxBuffer; if (_boxCR == 0) _boxLineCount++; @@ -754,11 +753,11 @@ void AGOSEngine_Waxworks::printBox() { _textWindow->textLength = 0; justifyStart(); waitForSync(99); - BoxBufferPtr = _boxBuffer; - while (*BoxBufferPtr) - justifyOutPut(*BoxBufferPtr++); + _boxBufferPtr = _boxBuffer; + while (*_boxBufferPtr) + justifyOutPut(*_boxBufferPtr++); _boxLineCount = 0; - BoxBufferPtr = _boxBuffer; + _boxBufferPtr = _boxBuffer; _lineCounts[0] = 0; _lineCounts[1] = 0; _lineCounts[2] = 0; diff --git a/engines/agos/verb.cpp b/engines/agos/verb.cpp index 0698ee3e66..fcf1091576 100644 --- a/engines/agos/verb.cpp +++ b/engines/agos/verb.cpp @@ -851,16 +851,23 @@ void AGOSEngine::invertBox(HitArea * ha, byte a, byte b, byte c, byte d) { do { for (i = 0; i != w; ++i) { color = src[i]; - if (getGameType() == GType_ELVIRA1) { - if (color & 1) { - color ^= 2; + if (getGameType() == GType_WW) { + if (!(color & 0xF) || (color & 0xF) == 10) { + color ^= 10; src[i] = color; + } else { + printf("Color %d %d\n", color, color & 0xF); } } else if (getGameType() == GType_ELVIRA2) { if (!(color & 1)) { color ^= 2; src[i] = color; } + } else if (getGameType() == GType_ELVIRA1) { + if (color & 1) { + color ^= 2; + src[i] = color; + } } else { if (a >= color && b < color) { if (c >= color) |