diff options
author | athrxx | 2019-11-26 22:07:32 +0100 |
---|---|---|
committer | athrxx | 2019-12-18 20:50:44 +0100 |
commit | 5a1162e99929d4a4d6351f91b8527fc0f205ad0f (patch) | |
tree | 1c4783b434cf9f4dbd1d26342b9f675ac26ab852 /engines/kyra/engine | |
parent | 1f42999a7cd3b35df4f5611cf27c7d98974e8673 (diff) | |
download | scummvm-rg350-5a1162e99929d4a4d6351f91b8527fc0f205ad0f.tar.gz scummvm-rg350-5a1162e99929d4a4d6351f91b8527fc0f205ad0f.tar.bz2 scummvm-rg350-5a1162e99929d4a4d6351f91b8527fc0f205ad0f.zip |
KYRA: (EOB/PC98) - fix Japanese text display
Diffstat (limited to 'engines/kyra/engine')
-rw-r--r-- | engines/kyra/engine/chargen.cpp | 3 | ||||
-rw-r--r-- | engines/kyra/engine/eob.cpp | 12 | ||||
-rw-r--r-- | engines/kyra/engine/eob.h | 1 | ||||
-rw-r--r-- | engines/kyra/engine/eobcommon.cpp | 10 | ||||
-rw-r--r-- | engines/kyra/engine/kyra_rpg.cpp | 8 | ||||
-rw-r--r-- | engines/kyra/engine/kyra_rpg.h | 1 | ||||
-rw-r--r-- | engines/kyra/engine/magic_eob.cpp | 2 | ||||
-rw-r--r-- | engines/kyra/engine/timer_eob.cpp | 2 |
8 files changed, 24 insertions, 15 deletions
diff --git a/engines/kyra/engine/chargen.cpp b/engines/kyra/engine/chargen.cpp index 6ddc360630..a1bd85ad9d 100644 --- a/engines/kyra/engine/chargen.cpp +++ b/engines/kyra/engine/chargen.cpp @@ -980,8 +980,9 @@ void CharacterGenerator::printStats(int index, int mode) { } void CharacterGenerator::processNameInput(int index, int textColor) { - Screen::FontId of = _screen->setFont(Screen::FID_6_FNT); + Screen::FontId of = _screen->setFont(_vm->_flags.use16ColorMode ? Screen::FID_SJIS_FNT : Screen::FID_6_FNT); _screen->fillRect(_chargenNameFieldX[index], _chargenNameFieldY[index], _chargenNameFieldX[index] + 59, _chargenNameFieldY[index] + 5, _vm->guiSettings()->colors.guiColorBlack); + _screen->setFont(_vm->_flags.use16ColorMode ? Screen::FID_SJIS_SMALL_FNT : Screen::FID_6_FNT); int xOffs = (60 - _screen->getTextWidth(_characters[index].name)) >> 1; _screen->printText(_characters[index].name, _chargenNameFieldX[index] + xOffs, _chargenNameFieldY[index], textColor, 0); _screen->updateScreen(); diff --git a/engines/kyra/engine/eob.cpp b/engines/kyra/engine/eob.cpp index d9c401b385..bb8627fb04 100644 --- a/engines/kyra/engine/eob.cpp +++ b/engines/kyra/engine/eob.cpp @@ -70,11 +70,13 @@ Common::Error EoBEngine::init() { _screen->modifyScreenDim(7, 0x01, 0xB3, 0x22, 0x12); _screen->modifyScreenDim(9, 0x01, 0x7D, 0x26, 0x3F); - _screen->modifyScreenDim(12, 0x01, 0x04, 0x14, 0xA0); - // adjust main menu coords for EOB I PC-98 - if (_flags.platform == Common::kPlatformPC98) + if (_flags.platform == Common::kPlatformPC98) { _screen->modifyScreenDim(28, 0x0A, 0xA4, 0x15, 0x18); + _screen->modifyScreenDim(12, 0x01, 0x04, 0x14, 0x9A); + } else { + _screen->modifyScreenDim(12, 0x01, 0x04, 0x14, 0xA0); + } _scriptTimersCount = 1; @@ -628,8 +630,10 @@ void EoBEngine::healParty() { const KyraRpgGUISettings *EoBEngine::guiSettings() const { if (_flags.platform == Common::kPlatformAmiga) return _useMainMenuGUISettings ? &_guiSettingsAmigaMainMenu : &_guiSettingsAmiga; - else if (_flags.platform == Common::kPlatformPC98 || _configRenderMode == Common::kRenderCGA || _configRenderMode == Common::kRenderEGA) + else if (_configRenderMode == Common::kRenderCGA || _configRenderMode == Common::kRenderEGA) return &_guiSettingsEGA; + else if (_flags.platform == Common::kPlatformPC98) + return &_guiSettingsPC98; else return &_guiSettingsVGA; } diff --git a/engines/kyra/engine/eob.h b/engines/kyra/engine/eob.h index 309636e7f9..174f9b9c7a 100644 --- a/engines/kyra/engine/eob.h +++ b/engines/kyra/engine/eob.h @@ -148,6 +148,7 @@ private: static const KyraRpgGUISettings _guiSettingsVGA; static const KyraRpgGUISettings _guiSettingsEGA; + static const KyraRpgGUISettings _guiSettingsPC98; static const KyraRpgGUISettings _guiSettingsAmiga; static const KyraRpgGUISettings _guiSettingsAmigaMainMenu; static const uint8 _egaDefaultPalette[]; diff --git a/engines/kyra/engine/eobcommon.cpp b/engines/kyra/engine/eobcommon.cpp index 238f1404bd..fc0f563e1b 100644 --- a/engines/kyra/engine/eobcommon.cpp +++ b/engines/kyra/engine/eobcommon.cpp @@ -675,7 +675,7 @@ void EoBCoreEngine::runLoop() { _flashShapeTimer = 0; _drawSceneTimer = _system->getMillis(); - _screen->setFont(Screen::FID_6_FNT); + _screen->setFont(_flags.use16ColorMode ? Screen::FID_SJIS_FNT : Screen::FID_6_FNT); _screen->setScreenDim(7); _runFlag = true; @@ -719,10 +719,10 @@ bool EoBCoreEngine::checkPartyStatus(bool handleDeath) { gui_drawAllCharPortraitsWithStats(); if (checkPartyStatusExtra()) { - _screen->setFont(Screen::FID_8_FNT); + Screen::FontId of = _screen->setFont(_flags.use16ColorMode ? Screen::FID_SJIS_FNT : Screen::FID_8_FNT); gui_updateControls(); if (_gui->runLoadMenu(0, 0)) { - _screen->setFont(Screen::FID_6_FNT); + _screen->setFont(of); return true; } } @@ -1720,7 +1720,7 @@ int EoBCoreEngine::runDialogue(int dialogueTextId, int numStr, ...) { void EoBCoreEngine::restParty_displayWarning(const char *str) { int od = _screen->curDimIndex(); _screen->setScreenDim(7); - Screen::FontId of = _screen->setFont(Screen::FID_6_FNT); + Screen::FontId of = _screen->setFont(_flags.use16ColorMode ? Screen::FID_SJIS_FNT : Screen::FID_6_FNT); _screen->setCurPage(0); _txt->printMessage(Common::String::format("\r%s\r", str).c_str()); @@ -1737,7 +1737,7 @@ bool EoBCoreEngine::restParty_updateMonsters() { for (int i = 0; i < 5; i++) { _partyResting = true; - Screen::FontId of = _screen->setFont(Screen::FID_6_FNT); + Screen::FontId of = _screen->setFont(_flags.use16ColorMode ? Screen::FID_SJIS_FNT : Screen::FID_6_FNT); int od = _screen->curDimIndex(); _screen->setScreenDim(7); updateMonsters(0); diff --git a/engines/kyra/engine/kyra_rpg.cpp b/engines/kyra/engine/kyra_rpg.cpp index 9a41c0269c..fc3e04d95b 100644 --- a/engines/kyra/engine/kyra_rpg.cpp +++ b/engines/kyra/engine/kyra_rpg.cpp @@ -232,17 +232,19 @@ void KyraRpgEngine::drawDialogueButtons() { for (int i = 0; i < _dialogueNumButtons; i++) { int x = _dialogueButtonPosX[i]; - if (_flags.lang == Common::JA_JPN && _flags.use16ColorMode) { + if (_flags.gameID == GI_LOL && _flags.use16ColorMode) { gui_drawBox(x, ((_dialogueButtonYoffs + _dialogueButtonPosY[i]) & ~7) - 1, 74, 10, 0xEE, 0xCC, -1); screen()->printText(_dialogueButtonString[i], (x + 37 - (screen()->getTextWidth(_dialogueButtonString[i])) / 2) & ~3, ((_dialogueButtonYoffs + _dialogueButtonPosY[i]) + 2) & ~7, _dialogueHighlightedButton == i ? 0xC1 : 0xE1, 0); } else { - int sjisYOffset = (_flags.gameID == GI_EOB2 && _flags.platform == Common::kPlatformFMTowns) ? 1 : ((_flags.lang == Common::JA_JPN && (_dialogueButtonString[i][0] & 0x80)) ? 2 : 0); + int yOffset = guiSettings()->buttons.txtOffsY; + if (_flags.gameID == GI_LOL && _flags.lang == Common::JA_JPN && (_dialogueButtonString[i][0] & 0x80)) + yOffset = 0; screen()->set16bitShadingLevel(4); gui_drawBox(x, (_dialogueButtonYoffs + _dialogueButtonPosY[i]), _dialogueButtonWidth, guiSettings()->buttons.height, guiSettings()->colors.frame1, guiSettings()->colors.frame2, guiSettings()->colors.fill); screen()->set16bitShadingLevel(0); screen()->printText(_dialogueButtonString[i], x + (_dialogueButtonWidth >> 1) - (screen()->getTextWidth(_dialogueButtonString[i])) / 2, - (_dialogueButtonYoffs + _dialogueButtonPosY[i]) + 2 - sjisYOffset, _dialogueHighlightedButton == i ? _dialogueButtonLabelColor1 : _dialogueButtonLabelColor2, 0); + (_dialogueButtonYoffs + _dialogueButtonPosY[i]) + yOffset, _dialogueHighlightedButton == i ? _dialogueButtonLabelColor1 : _dialogueButtonLabelColor2, 0); } } screen()->setFont(of); diff --git a/engines/kyra/engine/kyra_rpg.h b/engines/kyra/engine/kyra_rpg.h index 8c88a9dfdd..eb23c086e6 100644 --- a/engines/kyra/engine/kyra_rpg.h +++ b/engines/kyra/engine/kyra_rpg.h @@ -86,6 +86,7 @@ struct KyraRpgGUISettings { uint8 labelColor2; uint16 width; uint16 height; + int16 txtOffsY; int waitReserve; uint16 waitX[2]; uint8 waitY[2]; diff --git a/engines/kyra/engine/magic_eob.cpp b/engines/kyra/engine/magic_eob.cpp index b6add0888a..d615077842 100644 --- a/engines/kyra/engine/magic_eob.cpp +++ b/engines/kyra/engine/magic_eob.cpp @@ -238,7 +238,7 @@ void EoBCoreEngine::removeCharacterEffect(int spell, int charIndex, int showWarn if (showWarning) { int od = _screen->curDimIndex(); - Screen::FontId of = _screen->setFont(Screen::FID_6_FNT); + Screen::FontId of = _screen->setFont(_flags.use16ColorMode ? Screen::FID_SJIS_FNT : Screen::FID_6_FNT); _screen->setScreenDim(7); printWarning(Common::String::format(_magicStrings3[_flags.gameID == GI_EOB1 ? 3 : 2], c->name, s->name).c_str()); _screen->setScreenDim(od); diff --git a/engines/kyra/engine/timer_eob.cpp b/engines/kyra/engine/timer_eob.cpp index 8bc81b324a..f12f986152 100644 --- a/engines/kyra/engine/timer_eob.cpp +++ b/engines/kyra/engine/timer_eob.cpp @@ -305,7 +305,7 @@ void EoBCoreEngine::timerSpecialCharacterUpdate(int timerNum) { } int od = _screen->curDimIndex(); - Screen::FontId of = _screen->setFont(Screen::FID_6_FNT); + Screen::FontId of = _screen->setFont(_flags.use16ColorMode ? Screen::FID_SJIS_FNT : Screen::FID_6_FNT); _screen->setScreenDim(7); switch (evt) { |