diff options
| -rw-r--r-- | engines/scumm/charset.cpp | 13 | ||||
| -rw-r--r-- | engines/scumm/charset.h | 1 | ||||
| -rw-r--r-- | engines/scumm/scumm.cpp | 4 | ||||
| -rw-r--r-- | engines/scumm/scumm.h | 8 | 
4 files changed, 22 insertions, 4 deletions
| diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp index bba29bbe84..33010af12a 100644 --- a/engines/scumm/charset.cpp +++ b/engines/scumm/charset.cpp @@ -49,7 +49,7 @@ void ScummEngine::loadCJKFont() {  	_newLineCharacter = 0;  	if (_game.version <= 5 && _game.platform == Common::kPlatformFMTowns && _language == Common::JA_JPN) { // FM-TOWNS v3 / v5 Kanji -#ifdef DISABLE_TOWNS_DUAL_LAYER_MODE +#if defined(DISABLE_TOWNS_DUAL_LAYER_MODE) || !defined(USE_RGB_COLOR)  		GUIErrorMessage("FM-Towns Kanji font drawing requires dual graphics layer support which is disabled in this build");  		error("FM-Towns Kanji font drawing requires dual graphics layer support which is disabled in this build");  #else @@ -61,6 +61,7 @@ void ScummEngine::loadCJKFont() {  		_useCJKMode = true;  #endif  	} else if (_game.id == GID_LOOM && _game.platform == Common::kPlatformPCEngine && _language == Common::JA_JPN) { +#ifdef USE_RGB_COLOR  		// use PC-Engine System Card, since game files don't have kanji font resources  		_cjkFont = Graphics::FontSJIS::createFont(_game.platform);  		if (!_cjkFont) @@ -72,7 +73,7 @@ void ScummEngine::loadCJKFont() {  		_2byteWidth = _cjkFont->getMaxFontWidth();  		_2byteHeight = _cjkFont->getFontHeight();  		_useCJKMode = true;		 - +#endif  	} else if (_game.id == GID_MONKEY && _game.platform == Common::kPlatformSegaCD && _language == Common::JA_JPN) {  		int numChar = 1413;  		_2byteWidth = 16; @@ -963,18 +964,22 @@ void CharsetRendererTownsV3::enableShadow(bool enable) {  #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE  	_shadowColor = 0x88; +#ifdef USE_RGB_COLOR  	if (_vm->_cjkFont)  		_vm->_cjkFont->setDrawingMode(enable ? Graphics::FontSJIS::kFMTownsShadowMode : Graphics::FontSJIS::kDefaultMode);  #endif +#endif  }  void CharsetRendererTownsV3::drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth) {  #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE +#ifdef USE_RGB_COLOR  	if (_sjisCurChar) {  		assert(_vm->_cjkFont);  		_vm->_cjkFont->drawChar(_vm->_textSurface, _sjisCurChar, _left * _vm->_textSurfaceMultiplier, _top * _vm->_textSurfaceMultiplier, _color, _shadowColor);  		return;  	} +#endif  	dst = (byte *)_vm->_textSurface.getBasePtr(_left * _vm->_textSurfaceMultiplier, _top * _vm->_textSurfaceMultiplier);  	int sfPitch = _vm->_textSurface.pitch; @@ -1054,18 +1059,22 @@ void CharsetRendererTownsV3::drawBits1(const Graphics::Surface &s, byte *dst, co  }  #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE  int CharsetRendererTownsV3::getDrawWidthIntern(uint16 chr) { +#ifdef USE_RGB_COLOR  	if (_vm->_useCJKMode && chr > 127) {  		assert(_vm->_cjkFont);  		return _vm->_cjkFont->getCharWidth(chr);  	} +#endif  	return CharsetRendererV3::getDrawWidthIntern(chr);  }  int CharsetRendererTownsV3::getDrawHeightIntern(uint16 chr) { +#ifdef USE_RGB_COLOR  	if (_vm->_useCJKMode && chr > 127) {  		assert(_vm->_cjkFont);  		return _vm->_cjkFont->getFontHeight();  	} +#endif  	return CharsetRendererV3::getDrawHeightIntern(chr);  } diff --git a/engines/scumm/charset.h b/engines/scumm/charset.h index 4a5799688c..b80db73a58 100644 --- a/engines/scumm/charset.h +++ b/engines/scumm/charset.h @@ -25,6 +25,7 @@  #include "common/scummsys.h"  #include "common/rect.h"  #include "graphics/sjis.h" +#include "scumm/scumm.h"  #include "scumm/gfx.h"  #include "scumm/saveload.h" diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 173fb01f65..5233156fc7 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -283,8 +283,10 @@ ScummEngine::ScummEngine(OSystem *syst, const DetectorResult &dr)  	_16BitPalette = NULL;  #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE  	_townsScreen = 0; +#ifdef USE_RGB_COLOR  	_cjkFont = 0;  #endif +#endif  	_shadowPalette = NULL;  	_shadowPaletteSize = 0;  	memset(_currentPalette, 0, sizeof(_currentPalette)); @@ -632,8 +634,10 @@ ScummEngine::~ScummEngine() {  #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE  	delete _townsScreen; +#ifdef USE_RGB_COLOR  	delete _cjkFont;  #endif +#endif  	delete _debugger; diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h index ed9f650b71..e503af750d 100644 --- a/engines/scumm/scumm.h +++ b/engines/scumm/scumm.h @@ -1328,13 +1328,17 @@ public:  	// Exists both in V7 and in V72HE:  	byte VAR_NUM_GLOBAL_OBJS; +#ifdef USE_RGB_COLOR +	// FM-Towns / PC-Engine specific +	Graphics::FontSJIS *_cjkFont; +#endif +  	// FM-Towns specific  #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE  public:  	bool towns_isRectInStringBox(int x1, int y1, int x2, int y2);  	byte _townsPaletteFlags; -	byte _townsCharsetColorMap[16]; -	Graphics::FontSJIS *_cjkFont; +	byte _townsCharsetColorMap[16];	  protected:  	void towns_drawStripToScreen(VirtScreen *vs, int dstX, int dstY, int srcX, int srcY, int w, int h); | 
