diff options
author | athrxx | 2019-03-30 16:20:35 +0100 |
---|---|---|
committer | athrxx | 2019-04-13 18:55:01 +0200 |
commit | d56cea770bfa765acd8ed5df3015c35124b85d40 (patch) | |
tree | eb3757bd13e8ab8d71ce3ab1a88c01a8f020e480 /engines/kyra/text | |
parent | 69f2e0caaa3b7257318f2e9943d233da45bfab80 (diff) | |
download | scummvm-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.cpp | 24 |
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) { |