aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/graphics/screen_eob.cpp
diff options
context:
space:
mode:
authorathrxx2019-11-24 00:35:58 +0100
committerathrxx2019-12-18 20:50:43 +0100
commit512fe083670e0fa1d37b88876d8b612017714c27 (patch)
treef74239beeaa95bf517888bb05d49da030fc7588f /engines/kyra/graphics/screen_eob.cpp
parentfeca6f5a26c912e443d59700b7eda31cc8b2db26 (diff)
downloadscummvm-rg350-512fe083670e0fa1d37b88876d8b612017714c27.tar.gz
scummvm-rg350-512fe083670e0fa1d37b88876d8b612017714c27.tar.bz2
scummvm-rg350-512fe083670e0fa1d37b88876d8b612017714c27.zip
KYRA: (EOB/PC98) - allow both graphics mode / text mode text display for sjis font
The assumption till now was that PC-9801 games in 16 color mode will always use text mode for text display. However, EOB1 uses text mode for intro and ending sequence and graphics mode for ingame. Add new font variant for this and also do some cleanup, since the text displayer code really needs it. (The problem is that at least 3 different Japanese publishers did the Japanese ports for the various games and every one of them did his own hacks for his specific target.)
Diffstat (limited to 'engines/kyra/graphics/screen_eob.cpp')
-rw-r--r--engines/kyra/graphics/screen_eob.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/engines/kyra/graphics/screen_eob.cpp b/engines/kyra/graphics/screen_eob.cpp
index ad967fe5ed..e25ad3860c 100644
--- a/engines/kyra/graphics/screen_eob.cpp
+++ b/engines/kyra/graphics/screen_eob.cpp
@@ -92,13 +92,7 @@ bool Screen_EoB::init() {
if (_vm->gameFlags().platform == Common::kPlatformFMTowns) {
_shpBuffer = new uint8[SCREEN_H * SCREEN_W];
_convertHiColorBuffer = new uint8[SCREEN_H * SCREEN_W];
- enableHiColorMode(true);
-
- Graphics::FontSJIS *font = Graphics::FontSJIS::createFont(Common::kPlatformFMTowns);
- if (!font)
- error("Could not load any SJIS font, neither the original nor ScummVM's 'SJIS.FNT'");
- _fonts[FID_SJIS_LARGE_FNT] = new SJISFontLarge(font);
-
+ enableHiColorMode(true);
loadFont(FID_SJIS_SMALL_FNT, "FONT.DMP");
}
@@ -2519,13 +2513,15 @@ void AmigaDOSFont::selectMode(int mode) {
_last = _content[mode].data->lastChar;
}
-SJISFontLarge::SJISFontLarge(Graphics::FontSJIS *font) : SJISFont(font, 0, false, false, false, 0) {
+SJISFontLarge::SJISFontLarge(Common::SharedPtr<Graphics::FontSJIS> &font) : SJISFont(font, 0, false, false, false, 0) {
_sjisWidth = _font->getMaxFontWidth();
_fontHeight = _font->getFontHeight();
_asciiWidth = _font->getCharWidth('a');
}
void SJISFontLarge::drawChar(uint16 c, byte *dst, int pitch, int) const {
+ _font->setDrawingMode(Graphics::FontSJIS::kDefaultMode);
+ _font->toggleFatPrint(false);
_font->drawChar(dst, c, 320, 1, _colorMap[1], _colorMap[0], 320, 200);
}