aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/agos/agos.cpp1
-rw-r--r--engines/agos/agos.h1
-rw-r--r--engines/agos/string.cpp23
-rw-r--r--engines/agos/verb.cpp13
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)