diff options
| author | Florian Kagerer | 2009-10-08 19:42:39 +0000 | 
|---|---|---|
| committer | Florian Kagerer | 2009-10-08 19:42:39 +0000 | 
| commit | a121c822ebbb502d39bf761f7c794fe446f3da87 (patch) | |
| tree | f186c02daa29b72109f286c4d78dd053e2c151f7 | |
| parent | 42120ed626c0d18bc1e1738678dbd1fa96481f04 (diff) | |
| download | scummvm-rg350-a121c822ebbb502d39bf761f7c794fe446f3da87.tar.gz scummvm-rg350-a121c822ebbb502d39bf761f7c794fe446f3da87.tar.bz2 scummvm-rg350-a121c822ebbb502d39bf761f7c794fe446f3da87.zip | |
LOLLOL/PC-98: fixed ghorka swamp freeze mode
svn-id: r44794
| -rw-r--r-- | engines/kyra/lol.cpp | 19 | ||||
| -rw-r--r-- | engines/kyra/scene_lol.cpp | 11 | 
2 files changed, 12 insertions, 18 deletions
| diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp index 130acc2f40..2c1507e213 100644 --- a/engines/kyra/lol.cpp +++ b/engines/kyra/lol.cpp @@ -2280,7 +2280,7 @@ int LoLEngine::processMagicIce(int charNum, int spellLevel) {  	if (_currentLevel == 11 && !(_flagsTable[52] & 0x04)) {  		uint8 *sc = _screen->getPalette(0).getData();  		uint8 *dc = _screen->getPalette(2).getData(); -		for (int i = 1; i < 768; i++) +		for (int i = 1; i < (_screen->getPalette(0).getNumColors() * 3); i++)  			SWAP(sc[i], dc[i]);  		_flagsTable[52] |= 0x04; @@ -2292,25 +2292,14 @@ int LoLEngine::processMagicIce(int charNum, int spellLevel) {  	s.copy(_screen->getPalette(1));  	if (_flags.use16ColorMode) {  		_screen->loadPalette("LOLICE.NOL", swampCol); -		uint8 *s1 = s.getData(); -		for (int i = 0; i < 16; i++) { -			s1[((i << 4) | i) * 3] = s1[i * 3]; -			s1[((i << 4) | i) * 3 + 1] = s1[i * 3 + 1]; -			s1[((i << 4) | i) * 3 + 2] = s1[i * 3 + 2]; -		}		 -		uint8 *d1 = tpal.getData(); -		uint8 *d2 = swampCol.getData(); -		for (int i = 48; i < 256; i++) -			d1[i] = d2[i] = s1[i] & 0x3f; -  		for (int i = 1; i < 16; i++) {  			uint16 v = (s[i * 3] + s[i * 3 + 1] + s[i * 3 + 2]) / 3;  			tpal[i * 3] = 0;			  			tpal[i * 3 + 1] = v;  			tpal[i * 3 + 2] = v << 1; -			if (tpal[i * 3 + 2] > 0x3f) -				tpal[i * 3 + 2] = 0x3f; +			if (tpal[i * 3 + 2] > 29) +				tpal[i * 3 + 2] = 29;  		}  	} else {	 @@ -3781,7 +3770,7 @@ void LoLEngine::restoreSwampPalette() {  	uint8 *d = _screen->getPalette(0).getData();  	uint8 *d2 = _screen->getPalette(1).getData(); -	for (int i = 1; i < 768; i++) +	for (int i = 1; i < (_screen->getPalette(0).getNumColors() * 3); i++)  		SWAP(s[i], d[i]);  	generateBrightnessPalette(_screen->getPalette(0), _screen->getPalette(1), _brightness, _lampEffect); diff --git a/engines/kyra/scene_lol.cpp b/engines/kyra/scene_lol.cpp index aed696a091..eee2d066ab 100644 --- a/engines/kyra/scene_lol.cpp +++ b/engines/kyra/scene_lol.cpp @@ -420,13 +420,18 @@ void LoLEngine::loadLevelGraphics(const char *file, int specialColor, int weight  	}	  	if (_currentLevel == 11) { -		_screen->loadPalette("SWAMPICE.COL", _screen->getPalette(2)); -		_screen->getPalette(2).copy(_screen->getPalette(0), 128); +		if (_flags.use16ColorMode) { +			_screen->loadPalette("LOLICE.NOL", _screen->getPalette(2)); + +		} else { +			_screen->loadPalette("SWAMPICE.COL", _screen->getPalette(2)); +			_screen->getPalette(2).copy(_screen->getPalette(0), 128); +		}  		if (_flagsTable[52] & 0x04) {  			uint8 *pal0 = _screen->getPalette(0).getData();  			uint8 *pal2 = _screen->getPalette(2).getData(); -			for (int i = 1; i < 768; i++) +			for (int i = 1; i < _screen->getPalette(0).getNumColors() * 3; i++)  				SWAP(pal0[i], pal2[i]);  		}  	} | 
