aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/engine
diff options
context:
space:
mode:
authorathrxx2019-11-26 22:07:32 +0100
committerathrxx2019-12-18 20:50:44 +0100
commit5a1162e99929d4a4d6351f91b8527fc0f205ad0f (patch)
tree1c4783b434cf9f4dbd1d26342b9f675ac26ab852 /engines/kyra/engine
parent1f42999a7cd3b35df4f5611cf27c7d98974e8673 (diff)
downloadscummvm-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.cpp3
-rw-r--r--engines/kyra/engine/eob.cpp12
-rw-r--r--engines/kyra/engine/eob.h1
-rw-r--r--engines/kyra/engine/eobcommon.cpp10
-rw-r--r--engines/kyra/engine/kyra_rpg.cpp8
-rw-r--r--engines/kyra/engine/kyra_rpg.h1
-rw-r--r--engines/kyra/engine/magic_eob.cpp2
-rw-r--r--engines/kyra/engine/timer_eob.cpp2
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) {