aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/text
diff options
context:
space:
mode:
authorathrxx2019-03-30 16:20:35 +0100
committerathrxx2019-04-13 18:55:01 +0200
commitd56cea770bfa765acd8ed5df3015c35124b85d40 (patch)
treeeb3757bd13e8ab8d71ce3ab1a88c01a8f020e480 /engines/kyra/text
parent69f2e0caaa3b7257318f2e9943d233da45bfab80 (diff)
downloadscummvm-rg350-d56cea770bfa765acd8ed5df3015c35124b85d40.tar.gz
scummvm-rg350-d56cea770bfa765acd8ed5df3015c35124b85d40.tar.bz2
scummvm-rg350-d56cea770bfa765acd8ed5df3015c35124b85d40.zip
KYRA: (EOB2/Amiga) - fix sequence dialogue field
Diffstat (limited to 'engines/kyra/text')
-rw-r--r--engines/kyra/text/text_rpg.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/engines/kyra/text/text_rpg.cpp b/engines/kyra/text/text_rpg.cpp
index 6f1ed2a9e7..f9d2a42472 100644
--- a/engines/kyra/text/text_rpg.cpp
+++ b/engines/kyra/text/text_rpg.cpp
@@ -37,6 +37,10 @@ TextDisplayer_rpg::TextDisplayer_rpg(KyraRpgEngine *engine, Screen *scr) : _vm(e
_lineCount(0), _printFlag(false), _lineWidth(0), _numCharsTotal(0), _allowPageBreak(true),
_numCharsLeft(0), _numCharsPrinted(0), _sjisTextModeLineBreak(false), _waitButtonMode(1) {
+ static const uint8 amigaColorMap[16] = {
+ 0x00, 0x06, 0x1d, 0x1b, 0x1a, 0x17, 0x18, 0x0e, 0x19, 0x1c, 0x1c, 0x1e, 0x13, 0x0a, 0x11, 0x1f
+ };
+
_dialogueBuffer = new char[kEoBTextBufferSize];
memset(_dialogueBuffer, 0, kEoBTextBufferSize);
@@ -48,14 +52,8 @@ TextDisplayer_rpg::TextDisplayer_rpg(KyraRpgEngine *engine, Screen *scr) : _vm(e
for (int i = 0; i < 256; ++i)
_colorMap[i] = i;
- if (_vm->game() != GI_LOL) {
- _colorMap[15] = _vm->guiSettings()->colors.guiColorWhite;
- _colorMap[6] = _vm->guiSettings()->colors.guiColorLightRed;
- _colorMap[8] = _vm->guiSettings()->colors.guiColorDarkRed;
- _colorMap[9] = _vm->guiSettings()->colors.guiColorLightBlue;
- _colorMap[2] = _vm->guiSettings()->colors.guiColorBlue;
- _colorMap[12] = _vm->guiSettings()->colors.guiColorBlack;
- }
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga)
+ memcpy(_colorMap, amigaColorMap, 16);
for (int i = 0; i < _screen->screenDimTableCount(); i++) {
const ScreenDim *d = _screen->getScreenDim(i);
@@ -94,6 +92,8 @@ void TextDisplayer_rpg::setupField(int dim, bool mode) {
} else {
resetDimTextPositions(dim);
}
+
+ _vm->_dialogueFieldAmiga = false;
}
void TextDisplayer_rpg::resetDimTextPositions(int dim) {
@@ -189,11 +189,17 @@ void TextDisplayer_rpg::displayText(char *str, ...) {
case 1:
printLine(_currentLine);
_textDimData[sdx].color2 = parseCommand();
+ // EOB II Amiga does not use a color table here. EOB I doesn't do any color mapping here.
+ /*if (_vm->gameFlags().platform == Common::kPlatformAmiga)
+ _textDimData[sdx].color2 = _colorMap[_textDimData[sdx].color2];*/
break;
case 5:
printLine(_currentLine);
_textDimData[sdx].color1 = parseCommand();
+ // EOB I doesn't do any color mapping here.
+ if (_vm->gameFlags().platform == Common::kPlatformAmiga && _vm->game() == GI_EOB2)
+ _textDimData[sdx].color1 = _colorMap[_textDimData[sdx].color1];
break;
case 8:
@@ -531,6 +537,8 @@ void TextDisplayer_rpg::printDialogueText(int stringId, const char *pageBreakStr
resetPageBreakString();
}
}
+
+ _vm->_dialogueFieldAmiga = true;
}
void TextDisplayer_rpg::printDialogueText(const char *str, bool wait) {