diff options
| author | Johannes Schickel | 2008-01-12 07:59:39 +0000 | 
|---|---|---|
| committer | Johannes Schickel | 2008-01-12 07:59:39 +0000 | 
| commit | afd8743465ced91b0dae6544b169bdcab848745b (patch) | |
| tree | 0a388702f72daf9eb24e3dba52fb1df87aa48a91 | |
| parent | a5a4a6fde53a233cec068fb4c44cc2e62353cb7b (diff) | |
| download | scummvm-rg350-afd8743465ced91b0dae6544b169bdcab848745b.tar.gz scummvm-rg350-afd8743465ced91b0dae6544b169bdcab848745b.tar.bz2 scummvm-rg350-afd8743465ced91b0dae6544b169bdcab848745b.zip  | |
Commit patch #1869747 "KYRA: HoF sjis patch".
svn-id: r30437
| -rw-r--r-- | engines/kyra/screen.cpp | 28 | ||||
| -rw-r--r-- | engines/kyra/screen.h | 2 | ||||
| -rw-r--r-- | engines/kyra/sequences_v2.cpp | 2 | 
3 files changed, 21 insertions, 11 deletions
diff --git a/engines/kyra/screen.cpp b/engines/kyra/screen.cpp index e5eaa62b72..ff22520006 100644 --- a/engines/kyra/screen.cpp +++ b/engines/kyra/screen.cpp @@ -2769,8 +2769,14 @@ byte *Screen::getOverlayPtr(int page) {  		return _sjisOverlayPtrs[1];  	else if (page == 2 || page == 3)  		return _sjisOverlayPtrs[2]; -	else -		return 0; + +	if (_vm->gameFlags().gameID == GI_KYRA2) { +		if (page == 12 || page == 13) +			return _sjisOverlayPtrs[3]; +	} +	 +	warning("Trying to access unimplemented SJIS overlay page %d", page); +	return 0;  }  void Screen::clearOverlayPage(int page) { @@ -2812,14 +2818,18 @@ void Screen::copyOverlayRegion(int x, int y, int x2, int y2, int w, int h, int s  	y <<= 1; y2 <<= 1;  	w <<= 1; h <<= 1; -	dst += y2 * 640 + x2; -	src += y * 640 + x; +	if (w == 640 && h == 400) { +		memcpy(dst, src, SCREEN_OVL_SJIS_SIZE); +	} else { +		dst += y2 * 640 + x2; +		src += y * 640 + x; -	while (h--) { -		for (x = 0; x < w; ++x) -			memcpy(dst, src, w); -		dst += 640; -		src += 640; +		while (h--) { +			for (x = 0; x < w; ++x) +				memcpy(dst, src, w); +			dst += 640; +			src += 640; +		}  	}  } diff --git a/engines/kyra/screen.h b/engines/kyra/screen.h index 27d74427bc..3808087a4b 100644 --- a/engines/kyra/screen.h +++ b/engines/kyra/screen.h @@ -69,7 +69,7 @@ public:  		SCREEN_PAGE_SIZE = 320 * 200 + 1024,  		SCREEN_OVL_SJIS_SIZE = 640 * 400,  		SCREEN_PAGE_NUM = 16, -		SCREEN_OVLS_NUM = 3 +		SCREEN_OVLS_NUM = 4  	};  	enum CopyRegionFlags { diff --git a/engines/kyra/sequences_v2.cpp b/engines/kyra/sequences_v2.cpp index 2ea4cce59b..5b4a7ababd 100644 --- a/engines/kyra/sequences_v2.cpp +++ b/engines/kyra/sequences_v2.cpp @@ -1550,7 +1550,7 @@ void KyraEngine_v2::seq_processWSAs() {  void KyraEngine_v2::seq_processText() {  	Screen::FontId curFont = _screen->setFont(Screen::FID_GOLDFONT_FNT);  	int curPage = _screen->setCurPage(2); -	char outputStr[60]; +	char outputStr[70];  	for (int i = 0; i < 10; i++) {  		if (_activeText[i].startTime + _activeText[i].duration > _system->getMillis() && _activeText[i].duration != -1) {  | 
