[Scummvm-cvs-logs] SF.net SVN: scummvm:[44179] scummvm/trunk/engines/kyra

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Fri Sep 18 00:22:26 CEST 2009


Revision: 44179
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44179&view=rev
Author:   athrxx
Date:     2009-09-17 22:22:25 +0000 (Thu, 17 Sep 2009)

Log Message:
-----------
LOL: cleanup (replaced some uint8 arrays with new palette objects)

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/screen_lol.cpp
    scummvm/trunk/engines/kyra/screen_lol.h
    scummvm/trunk/engines/kyra/script_lol.cpp

Modified: scummvm/trunk/engines/kyra/screen_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/screen_lol.cpp	2009-09-17 20:56:25 UTC (rev 44178)
+++ scummvm/trunk/engines/kyra/screen_lol.cpp	2009-09-17 22:22:25 UTC (rev 44179)
@@ -898,38 +898,40 @@
 	return res;
 }
 
-uint8 *Screen_LoL::generateFadeTable(uint8 *dst, uint8 *src1, uint8 *src2, int numTabs) {
+Palette **Screen_LoL::generateFadeTable(Palette **dst, Palette *src1, Palette *src2, int numTabs) {
 	if (!src1)
-		src1 = _screenPalette->getData();
+		src1 = _screenPalette;
 
-	uint8 *p1 = dst;
-	uint8 *p2 = src1;
-	uint8 *p3 = src2;
+	uint8 *p1 = (*dst++)->getData();
+	uint8 *p2 = src1->getData();
+	uint8 *p3 = src2->getData();
+	uint8 *p4 = p1;
+	uint8 *p5 = p2;
 
 	for (int i = 0; i < 768; i++) {
 		int8 val = (int8)*p3++ - (int8)*p2++;
-		*dst++ = (uint8)val;
+		*p4++ = (uint8)val;
 	}
 
 	int16 t = 0;
 	int16 d = 256 / numTabs;
 
 	for (int i = 1; i < numTabs - 1; i++) {
-		p2 = src1;
+		p2 = p5;
 		p3 = p1;
 		t += d;
+		p4 = (*dst++)->getData();
 
 		for (int ii = 0; ii < 768; ii++) {
 			int16 val = (((int8)*p3++ * t) >> 8) + (int8)*p2++;
-			*dst++ = (uint8)val;
+			*p4++ = (uint8)val;
 		}
 	}
 
-	memcpy(p1, src1, 768);
-	memcpy(dst, src2, 768);
+	memcpy(p1, p5, 768);
+	(*dst)->copy(*src2);
 
-	dst += 768;
-	return dst;
+	return ++dst;
 }
 
 uint8 Screen_LoL::getShapePaletteSize(const uint8 *shp) {

Modified: scummvm/trunk/engines/kyra/screen_lol.h
===================================================================
--- scummvm/trunk/engines/kyra/screen_lol.h	2009-09-17 20:56:25 UTC (rev 44178)
+++ scummvm/trunk/engines/kyra/screen_lol.h	2009-09-17 22:22:25 UTC (rev 44179)
@@ -74,7 +74,7 @@
 	void copyColor(int dstColorIndex, int srcColorIndex);
 	bool fadeColor(int dstColorIndex, int srcColorIndex, uint32 elapsedTime, uint32 targetTime);
 	bool fadePaletteStep(uint8 *pal1, uint8 *pal2, uint32 elapsedTime, uint32 targetTime);
-	uint8 *generateFadeTable(uint8 *dst, uint8 *src1, uint8 *src2, int numTabs);
+	Palette **generateFadeTable(Palette **dst, Palette *src1, Palette *src2, int numTabs);
 
 	void generateGrayOverlay(const Palette &Pal, uint8 *grayOverlay, int factor, int addR, int addG, int addB, int lastColor, bool skipSpecialColors);
 	uint8 *generateLevelOverlay(const Palette &Pal, uint8 *ovl, int opColor, int weight);

Modified: scummvm/trunk/engines/kyra/script_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_lol.cpp	2009-09-17 20:56:25 UTC (rev 44178)
+++ scummvm/trunk/engines/kyra/script_lol.cpp	2009-09-17 22:22:25 UTC (rev 44179)
@@ -2174,44 +2174,35 @@
 
 	_screen->hideMouse();
 
-	// TODO: This function could need some major cleanup to work with our
-	// new palette code without needless conversions.
-	uint8 *fadeTab = new uint8[21504];
-	assert(fadeTab);
-	memset(fadeTab, 0, sizeof(fadeTab));
+	Palette *fadeTab[28];
+	for (int i = 0; i < 28; i++)
+		fadeTab[i] = new Palette(256);
 
-	uint8 *tpal1 = fadeTab;
-	uint8 *tpal2 = tpal1 + 768;
-	uint8 *tpal3 = tpal2 + 768;
-	uint8 *tpal4 = 0;
-	_res->loadFileToBuf("LITEPAL1.COL", tpal1, 768);
-	tpal2 = _screen->generateFadeTable(tpal3, 0, tpal1, 21);
-	_res->loadFileToBuf("LITEPAL2.COL", tpal2, 768);
-	tpal4 = tpal2;
-	tpal2 += 768;
-	_res->loadFileToBuf("LITEPAL3.COL", tpal1, 768);
-	_screen->generateFadeTable(tpal2, tpal4, tpal1, 4);
+	Palette **tpal1 = &fadeTab[0];
+	Palette **tpal2 = &fadeTab[1];
+	Palette **tpal3 = &fadeTab[2];
+	Palette **tpal4 = 0;
+	_screen->loadPalette("LITEPAL1.COL", **tpal1);
+	tpal2 = _screen->generateFadeTable(tpal3, 0, *tpal1, 21);
+	_screen->loadPalette("LITEPAL2.COL", **tpal2);
+	tpal4 = tpal2++;
+	_screen->loadPalette("LITEPAL3.COL", **tpal1);
+	_screen->generateFadeTable(tpal2, *tpal4, *tpal1, 4);
 
-	Palette pal(256);
-
 	for (int i = 0; i < 21; i++) {
 		uint32 etime = _system->getMillis() + 20 * _tickLength;
 		mov->displayFrame(i, 0, 0, 0, 0, 0, 0);
 		_screen->updateScreen();
+		_screen->setScreenPalette(**tpal3++);
 
-		pal.copy(tpal3, 0, 256);
-		_screen->setScreenPalette(pal);
-		tpal3 += 768;
-
 		if (i == 2 || i == 5 || i == 8 || i == 11 || i == 13 || i == 15 || i == 17 || i == 19)
 			snd_playSoundEffect(95, -1);
+
 		delayUntil(etime);
 	}
 
-	pal.copy(tpal3, 0, 256);
 	snd_playSoundEffect(91, -1);
-	_screen->fadePalette(pal, 300);
-	tpal3 += 768;
+	_screen->fadePalette(**tpal3++, 300);
 
 	for (int i = 22; i < 38; i++) {
 		uint32 etime = _system->getMillis() + 12 * _tickLength;
@@ -2219,18 +2210,17 @@
 		_screen->updateScreen();
 		if (i == 22 || i == 24 || i == 28 || i == 32) {
 			snd_playSoundEffect(131, -1);
-
-			pal.copy(tpal3, 0, 256);
-			_screen->setScreenPalette(pal);
-			tpal3 += 768;
+			_screen->setScreenPalette(**tpal3++);
 		}
 		delayUntil(etime);
 	}
 
 	mov->close();
 	delete mov;
-	delete[] fadeTab;
 
+	for (int i = 0; i < 28; i++)
+		delete fadeTab[i];
+
 	_screen->showMouse();
 
 	return 1;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list