aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/string.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/agos/string.cpp')
-rw-r--r--engines/agos/string.cpp644
1 files changed, 0 insertions, 644 deletions
diff --git a/engines/agos/string.cpp b/engines/agos/string.cpp
index 6fa0b5d97f..1d8bb0b976 100644
--- a/engines/agos/string.cpp
+++ b/engines/agos/string.cpp
@@ -955,648 +955,4 @@ void AGOSEngine_Waxworks::printBox() {
changeWindow(0);
}
-#ifdef ENABLE_PN
-// Personal Nightmare specific
-uint32 AGOSEngine_PN::ftext(uint32 base, int n) {
- uint32 b = base;
- int ct = n;
- while (ct) {
- while(_textBase[b++])
- ;
- ct--;
- }
- return b;
-}
-
-char *AGOSEngine_PN::unctok(char *c, int n) {
- int x;
- uint8 *tokbase;
- tokbase = _textBase + getlong(30);
- x = n;
- while (x-=(*tokbase++ > 127))
- ;
- while (*tokbase < 128)
- *c++=*tokbase++;
- *c++ = *tokbase & 127;
- *c = 0;
- return c;
-}
-
-void AGOSEngine_PN::uncomstr(char *c, uint32 x) {
- if (x > _textBaseSize)
- error("UNCOMSTR: TBASE over-run");
- while (_textBase[x]) {
- if (_textBase[x] < 244) {
- c = unctok(c, _textBase[x]);
- } else {
- c = unctok(c, (_textBase[x] - 244) * 254 + _textBase[x + 1] - 1);
- x++;
- }
- x++;
- }
- *c++ = 13;
- *c = 0;
-}
-
-static const char *objectNames[30] = {
- "\0",
- "Take \0",
- "Inventory\r",
- "Open \0",
- "Close \0",
- "Lock \0",
- "Unlock \0",
- "Examine \0",
- "Look in \0",
- "Exits \r",
- "Look\r",
- "Wait\r",
- "Pause\r",
- "\0",
- "Save\r",
- "Restore\r",
- "\0",
- "N\r",
- "NE\r",
- "E\r",
- "SE\r",
- "S\r",
- "SW\r",
- "W\r",
- "NW\r",
- "INVENTORY\r",
- "ROOM DESCRIPTION\r",
- "x\r",
- "MORE\r",
- "CLOSE\r"
-};
-
-void AGOSEngine_PN::getObjectName(char *v, uint16 x) {
- if (x & 0x8000) {
- x &= ~0x8000;
- if (x > getptr(51))
- error("getObjectName: Object %d out of range", x);
- uncomstr(v, ftext(getlong(27), x * _dataBase[47]));
- } else {
- assert(x < 30);
- strcpy(v, objectNames[x]);
- }
-}
-
-void AGOSEngine_PN::pcl(const char *s) {
- strcat(_sb, s);
- if (strchr(s, '\n') == 0) {
- for (char *str = _sb; *str; str++)
- windowPutChar(_windowArray[_curWindow], *str);
- strcpy(_sb, "");
- }
-}
-
-void AGOSEngine_PN::pcf(uint8 ch) {
- int ct = 0;
- if (ch == '[')
- ch = '\n';
- if (ch == 0)
- return; /* Trap any C EOS chrs */
- if (ch == 255) {
- _bp = 0;
- _xofs = 0;
- return; /* pcf(255) initialises the routine */
- } /* pcf(254) flushes its working _buffer */
- if (ch != 254) {
- if ((ch != 32) || (_bp + _xofs != 50))
- _buffer[_bp++] = ch;
- }
- if ((ch != 254) && (!isspace(ch)) && (_bp < 60))
- return;
- /* We know have a case of needing to print the text */
- if (_bp + _xofs > 50) {
- pcl("\n");
- if (_buffer[0] == ' ')
- ct = 1; /* Skip initial space */
- /* Note ' ' will give a single start of line space */
- _xofs = 0;
- }
- _buffer[_bp] = 0;
- pcl(_buffer + ct);
- _xofs += _bp;
- _bp = 0;
- if (ch == '\n')
- _xofs = 0; /* At Newline! */
-}
-
-void AGOSEngine_PN::patok(int n) {
- int x;
- uint8 *tokbase;
- tokbase = _textBase + getlong(30);
- x = n;
- while (x -= (*tokbase++ > 127))
- ;
- while (*tokbase < 128)
- pcf(*tokbase++);
- pcf((uint8)(*tokbase & 127));
-}
-
-void AGOSEngine_PN::pmesd(int n) {
- ptext(ftext(getlong(24), n));
-}
-
-void AGOSEngine_PN::plocd(int n, int m) {
- if (n > getptr(53))
- error("Location out of range");
- ptext(ftext(getlong(21), n * _dataBase[48] + m));
-}
-
-void AGOSEngine_PN::pobjd(int n, int m) {
- if (n > getptr(51))
- error("Object out of range");
- ptext(ftext(getlong(27), n * _dataBase[47] + m));
-}
-
-void AGOSEngine_PN::ptext(uint32 tptr) {
- if (tptr > _textBaseSize)
- error("ptext: attempt to print beyond end of TBASE");
-
- while (_textBase[tptr]) {
- if (_textBase[tptr] < 244) {
- patok(_textBase[tptr++]);
- } else {
- patok((_textBase[tptr] - 244) * 254 + _textBase[tptr + 1] - 1);
- tptr += 2;
- }
- }
-}
-
-const uint8 characters[11][80] = {
-// PETERMASON
- {
- 118, 225,
- 91, 118,
- 94, 124,
- 236, 161,
- 241, 166,
- 168, 4,
- 138, 46,
- 139, 46,
- 249, 50,
- 38, 56,
- 80, 59,
- 149, 69,
- 37, 77,
- 93, 93,
- 86, 95,
- 0,
- 0,
- 58, 130,
- 62, 178,
- 83, 95,
- 0,
- 121, 58,
- 122, 59,
- 126, 60,
- 124, 61,
- 240, 62,
- 123, 63,
- 0
- },
-// JBLANDFORD
- {
- 0,
- 0,
- 0,
- 0
- },
-// SBLANDFORD
- {
- 120, 223,
- 94, 126,
- 112, 134,
- 45, 152,
- 241, 166,
- 168, 3,
- 150, 26,
- 220, 29,
- 138, 42,
- 139, 47,
- 249, 50,
- 38, 56,
- 230, 64,
- 37, 77,
- 93, 94,
- 86, 96,
- 0,
- 0,
- 58, 129,
- 59, 112,
- 83, 96,
- 81, 106,
- 62, 169,
- 0,
- 121, 54,
- 122, 55,
- 119, 56,
- 118, 57,
- 0
- },
-// MRJONES
- {
- 121, 218,
- 91, 118,
- 253, 121,
- 154, 138,
- 235, 173,
- 236, 161,
- 241, 165,
- 168, 0,
- 150, 21,
- 36, 33,
- 138, 42,
- 249, 50,
- 80, 60,
- 4, 60,
- 37, 78,
- 68, 33,
- 93, 92,
- 101, 109,
- 0,
- 36, 35,
- 68, 90,
- 0,
- 58, 128,
- 59, 111,
- 62, 182,
- 0,
- 122, 13,
- 126, 14,
- 124, 15,
- 240, 16,
- 120, 17,
- 119, 18,
- 118, 19,
- 52, 20,
- 125, 21,
- 127, 22,
- 123, 23,
- 117, 24,
- 0
- },
-// MRSJONES
- {
- 122, 219,
- 91, 119,
- 253, 123,
- 112, 136,
- 154, 137,
- 95, 142,
- 45, 152,
- 109, 155,
- 235, 160,
- 168, 1,
- 151, 13,
- 145, 15,
- 150, 22,
- 220, 28,
- 36, 33,
- 138, 43,
- 13, 51,
- 80, 59,
- 230, 64,
- 149, 69,
- 86, 100,
- 0,
- 36, 36,
- 0,
- 58, 127,
- 62, 179,
- 83, 100,
- 81, 102,
- 0,
- 121, 25,
- 126, 26,
- 124, 27,
- 120, 28,
- 119, 29,
- 118, 30,
- 52, 31,
- 125, 32,
- 127, 33,
- 123, 34,
- 117, 35,
- 0
- },
-// MRROBERTS
- {
- 123, 229,
- 91, 117,
- 253, 120,
- 94, 125,
- 112, 134,
- 109, 156,
- 235, 172,
- 236, 162,
- 241, 165,
- 168, 3,
- 36, 33,
- 249, 50,
- 38, 56,
- 80, 58,
- 37, 75,
- 34, 81,
- 68, 33,
- 101, 109,
- 0,
- 36, 40,
- 68, 88,
- 0,
- 59, 111,
- 62, 181,
- 0,
- 0
- },
-// POSTMISTRESS
- {
- 124, 221,
- 91, 119,
- 253, 122,
- 112, 136,
- 95, 142,
- 130, 149,
- 109, 155,
- 235, 176,
- 220, 29,
- 36, 33,
- 138, 43,
- 13, 51,
- 80, 57,
- 149, 68,
- 37, 73,
- 34, 33,
- 68, 33,
- 86, 100,
- 0,
- 36, 39,
- 34, 80,
- 68, 86,
- 0,
- 58, 130,
- 62, 181,
- 83, 100,
- 81, 103,
- 0,
- 121, 41,
- 122, 42,
- 126, 43,
- 240, 44,
- 120, 45,
- 119, 46,
- 118, 47,
- 52, 48,
- 123, 49,
- 83, 50,
- 117, 51,
- 0
- },
-// MWILLIAMS
- {
- 125, 227,
- 94, 124,
- 95, 141,
- 241, 166,
- 168, 4,
- 150, 26,
- 38, 54,
- 4, 60,
- 230, 65,
- 149, 68,
- 37, 76,
- 101, 109,
- 0,
- 230, 63,
- 0,
- 59, 112,
- 62, 183,
- 0,
- 240, 71,
- 120, 72,
- 118, 73,
- 52, 74,
- 117, 75,
- 0
- },
-// TONY
- {
- 126, 220,
- 95, 143,
- 130, 149,
- 45, 153,
- 109, 154,
- 235, 158,
- 241, 166,
- 168, 2,
- 145, 15,
- 150, 24,
- 220, 20,
- 36, 20,
- 4, 60,
- 37, 79,
- 86, 97,
- 0,
- 150, 23,
- 220, 27,
- 36, 34,
- 0,
- 83, 97,
- 0,
- 121, 36,
- 122, 37,
- 124, 38,
- 240, 39,
- 52, 40,
- 0
- },
-// PIG
- {
- 127, 228,
- 112, 133,
- 45, 153,
- 235, 157,
- 236, 163,
- 241, 165,
- 36, 33,
- 80, 58,
- 34, 81,
- 68, 33,
- 86, 98,
- 0,
- 36, 37,
- 68, 90,
- 0,
- 62, 184,
- 83, 98,
- 0,
- 121, 76,
- 122, 77,
- 126, 78,
- 124, 79,
- 240, 80,
- 120, 81,
- 118, 82,
- 52, 83,
- 125, 84,
- 123, 85,
- 83, 86,
- 117, 87,
- 0
- },
-// JUDY
- {
- 0,
- 0,
- 0,
- 240, 52,
- 117, 53,
- 0
- }
-};
-
-void AGOSEngine_PN::getResponse(uint16 charNum, uint16 objNum, uint16 &msgNum1, uint16 &msgNum2) {
- const uint8 *ptr;
- uint16 num;
-
- msgNum1 = 0;
- msgNum2 = 0;
-
- if (charNum == 83)
- charNum += 45;
-
- if (charNum < 118 || charNum > 128) {
- return;
- }
-
- ptr = characters[charNum - 118];
-
- while ((num = *ptr++) != 0) {
- if (num == objNum) {
- msgNum1 = *ptr++;
- msgNum1 += 400;
-
- while ((num = *ptr++) != 0)
- ptr++;
- break;
- }
- ptr++;
- }
-
- while ((num = *ptr++) != 0) {
- if (num == objNum) {
- msgNum2 = *ptr++;
- msgNum2 += 400;
-
- if (msgNum1 == 569)
- msgNum1 += 400;
- if (msgNum2 == 0)
- msgNum2 = msgNum1;
- return;
- }
- ptr++;
- }
-
- if (objNum >= 200)
- msgNum1 = 0;
-
- objNum -= 200;
- while ((num = *ptr++) != 0) {
- if (num == objNum) {
- msgNum1 = *ptr++;
- msgNum1 += 400;
-
- if (msgNum1 == 569)
- msgNum1 += 400;
- if (msgNum2 == 0)
- msgNum2 = msgNum1;
- return;
- }
- ptr++;
- }
-
- objNum += 200;
- while ((num = *ptr++) != 0) {
- if (num == objNum) {
- msgNum1 = *ptr++;
- msgNum1 += 200;
-
- if (msgNum1 == 569)
- msgNum1 += 400;
- if (msgNum2 == 0)
- msgNum2 = msgNum1;
- return;
- }
- ptr++;
- }
-
- if (msgNum1 == 569)
- msgNum1 += 400;
- if (msgNum2 == 0)
- msgNum2 = msgNum1;
-}
-
-char *AGOSEngine_PN::getMessage(char *msg, uint16 num) {
- char *origPtr, *strPtr1 = msg;
- uint8 count;
-
- getObjectName(strPtr1, num);
- if (!(num & 0x8000)) {
- return msg;
- }
-
- if (strPtr1[0] == 0x41 || strPtr1[0] == 0x61) {
- if (strPtr1[1] != 0x20)
- strPtr1 += 2;
- } else if (strPtr1[0] == 0x54 || strPtr1[0] == 0x74) {
- if (strPtr1[1] == 0x68 &&
- strPtr1[2] == 0x65 &&
- strPtr1[3] == 0x20)
- strPtr1 += 4;
- }
-
- origPtr = strPtr1;
- while (*strPtr1 != 13)
- strPtr1++;
-
- strPtr1[0] = 32;
- strPtr1[1] = 13;
- strPtr1[2] = 0;
-
- if (_videoLockOut & 0x10) {
- strPtr1 = origPtr;
- count = 6;
- while (*strPtr1) {
- if (*strPtr1 == 32) {
- count = 6;
- } else {
- count--;
- if (count == 0) {
- char *tmpPtr = strPtr1;
- char *strPtr2 = strPtr1;
-
- while (*strPtr2 != 0 && *strPtr2 != 32)
- strPtr2++;
-
- while (*strPtr2) {
- *strPtr1++ = *strPtr2++;
- }
- *strPtr1++ = *strPtr2++;
-
- strPtr1 = tmpPtr;
- count = 6;
- }
- }
- strPtr1++;
- }
- }
-
- return origPtr;
-}
-#endif
-
} // End of namespace AGOS