Add patch for Tobias, for Kanji support in Japanese PCE version of Loom, with minor changes.

svn-id: r46061
This commit is contained in:
Travis Howell 2009-11-22 08:20:20 +00:00
parent 9886c8fb91
commit 2d31fc3af8
5 changed files with 157 additions and 26 deletions

View file

@ -1089,22 +1089,27 @@ Common::Error ScummEngine::init() {
// Initialize backend
if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG) {
initGraphics(Common::kHercW, Common::kHercH, true);
} else if (_useCJKMode) {
initGraphics(_screenWidth * _textSurfaceMultiplier, _screenHeight * _textSurfaceMultiplier,
// CJK FT and DIG use usual NUT fonts, not FM-TOWNS ROM, so
// there is no text surface for them. This takes that into account
(_screenWidth * _textSurfaceMultiplier > 320));
} else if (_game.features & GF_16BIT_COLOR) {
#ifdef USE_RGB_COLOR
Graphics::PixelFormat format = Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0);
initGraphics(_screenWidth, _screenHeight, _screenWidth > 320, &format);
if (format != _system->getScreenFormat())
return Common::kUnsupportedColorMode;
#else
error("16bit color support is required for this game");
#endif
} else {
initGraphics(_screenWidth, _screenHeight, _screenWidth > 320);
int screenWidth = _screenWidth;
int screenHeight = _screenHeight;
if (_useCJKMode) {
// CJK FT and DIG use usual NUT fonts, not FM-TOWNS ROM, so
// there is no text surface for them. This takes that into account
screenWidth *= _textSurfaceMultiplier;
screenHeight *= _textSurfaceMultiplier;
}
if (_game.features & GF_16BIT_COLOR) {
#ifdef USE_RGB_COLOR
Graphics::PixelFormat format = Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0);
initGraphics(screenWidth, screenHeight, screenWidth > 320, &format);
if (format != _system->getScreenFormat())
return Common::kUnsupportedColorMode;
#else
error("16bit color support is required for this game");
#endif
} else {
initGraphics(screenWidth, screenHeight, (screenWidth > 320));
}
}
setupScumm();
@ -1259,18 +1264,23 @@ void ScummEngine_v7::setupScumm() {
#endif
void ScummEngine::setupCharsetRenderer() {
if (_game.platform == Common::kPlatformNES)
_charset = new CharsetRendererNES(this);
else if (_game.version <= 2)
_charset = new CharsetRendererV2(this, _language);
else if (_game.version == 3)
_charset = new CharsetRendererV3(this);
if (_game.version <= 2) {
if (_game.platform == Common::kPlatformNES)
_charset = new CharsetRendererNES(this);
else
_charset = new CharsetRendererV2(this, _language);
} else if (_game.version == 3) {
if (_game.platform == Common::kPlatformPCEngine)
_charset = new CharsetRendererPCE(this);
else
_charset = new CharsetRendererV3(this);
#ifdef ENABLE_SCUMM_7_8
else if (_game.version == 8)
} else if (_game.version == 8) {
_charset = new CharsetRendererNut(this);
#endif
else
} else {
_charset = new CharsetRendererClassic(this);
}
}
void ScummEngine::setupCostumeRenderer() {