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

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Sep 14 18:29:15 CEST 2008


Revision: 34527
          http://scummvm.svn.sourceforge.net/scummvm/?rev=34527&view=rev
Author:   lordhoto
Date:     2008-09-14 16:29:14 +0000 (Sun, 14 Sep 2008)

Log Message:
-----------
Fixed thumbnail creation / loading in kyra.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/gui_hof.cpp
    scummvm/trunk/engines/kyra/gui_lok.cpp
    scummvm/trunk/engines/kyra/gui_mr.cpp
    scummvm/trunk/engines/kyra/saveload.cpp
    scummvm/trunk/engines/kyra/screen.cpp
    scummvm/trunk/engines/kyra/screen.h

Modified: scummvm/trunk/engines/kyra/gui_hof.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui_hof.cpp	2008-09-14 16:21:31 UTC (rev 34526)
+++ scummvm/trunk/engines/kyra/gui_hof.cpp	2008-09-14 16:29:14 UTC (rev 34527)
@@ -796,7 +796,9 @@
 #pragma mark -
 
 void GUI_HoF::createScreenThumbnail(Graphics::Surface &dst) {
-	::createThumbnail(&dst, _vm->_screenBuffer, Screen::SCREEN_W, Screen::SCREEN_H, _screen->getPalette(1));
+	uint8 screenPal[768];
+	_screen->getRealPalette(1, screenPal);
+	::createThumbnail(&dst, _vm->_screenBuffer, Screen::SCREEN_W, Screen::SCREEN_H, screenPal);
 }
 
 void GUI_HoF::setupPalette() {

Modified: scummvm/trunk/engines/kyra/gui_lok.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui_lok.cpp	2008-09-14 16:21:31 UTC (rev 34526)
+++ scummvm/trunk/engines/kyra/gui_lok.cpp	2008-09-14 16:29:14 UTC (rev 34527)
@@ -204,7 +204,10 @@
 	uint8 *screen = new uint8[Screen::SCREEN_W*Screen::SCREEN_H];
 	if (screen) {
 		_screen->queryPageFromDisk("SEENPAGE.TMP", 0, screen);
-		::createThumbnail(&dst, screen, Screen::SCREEN_W, Screen::SCREEN_H, _screen->getPalette(2));
+
+		uint8 screenPal[768];
+		_screen->getRealPalette(2, screenPal);
+		::createThumbnail(&dst, screen, Screen::SCREEN_W, Screen::SCREEN_H, screenPal);
 	}
 	delete[] screen;
 }

Modified: scummvm/trunk/engines/kyra/gui_mr.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui_mr.cpp	2008-09-14 16:21:31 UTC (rev 34526)
+++ scummvm/trunk/engines/kyra/gui_mr.cpp	2008-09-14 16:29:14 UTC (rev 34527)
@@ -1141,7 +1141,9 @@
 }
 
 void GUI_MR::createScreenThumbnail(Graphics::Surface &dst) {
-	::createThumbnail(&dst, _vm->_screenBuffer, Screen::SCREEN_W, Screen::SCREEN_H, _screen->getPalette(0));
+	uint8 screenPal[768];
+	_screen->getRealPalette(0, screenPal);
+	::createThumbnail(&dst, _vm->_screenBuffer, Screen::SCREEN_W, Screen::SCREEN_H, screenPal);
 }
 
 void GUI_MR::flagButtonEnable(Button *button) {

Modified: scummvm/trunk/engines/kyra/saveload.cpp
===================================================================
--- scummvm/trunk/engines/kyra/saveload.cpp	2008-09-14 16:21:31 UTC (rev 34526)
+++ scummvm/trunk/engines/kyra/saveload.cpp	2008-09-14 16:29:14 UTC (rev 34527)
@@ -43,6 +43,7 @@
 	header.originalSave = false;
 	header.oldHeader = false;
 	header.flags = 0;
+	header.thumbnail = 0;
 
 	if (type == MKID_BE('KYRA') || type == MKID_BE('ARYK')) { // old Kyra1 header ID
 		header.gameID = GI_KYRA1;

Modified: scummvm/trunk/engines/kyra/screen.cpp
===================================================================
--- scummvm/trunk/engines/kyra/screen.cpp	2008-09-14 16:21:31 UTC (rev 34526)
+++ scummvm/trunk/engines/kyra/screen.cpp	2008-09-14 16:29:14 UTC (rev 34527)
@@ -476,6 +476,25 @@
 	setScreenPalette(_currentPalette);
 }
 
+void Screen::getRealPalette(int num, uint8 *dst) {
+	debugC(9, kDebugLevelScreen, "Screen::setRealPalette(%d, %p)", num, (const void *)dst);
+	const int colors = (_vm->gameFlags().platform == Common::kPlatformAmiga ? 32 : 256);
+	const uint8 *palData = getPalette(num);
+
+	if (!palData) {
+		memset(dst, 0, colors * 3);
+		return;
+	}
+
+	for (int i = 0; i < colors; ++i) {
+		dst[0] = (palData[0] << 2) | (palData[0] & 3);
+		dst[1] = (palData[1] << 2) | (palData[1] & 3);
+		dst[2] = (palData[2] << 2) | (palData[2] & 3);
+		dst += 3;
+		palData += 3;
+	}
+}
+
 void Screen::setScreenPalette(const uint8 *palData) {
 	debugC(9, kDebugLevelScreen, "Screen::setScreenPalette(%p)", (const void *)palData);
 

Modified: scummvm/trunk/engines/kyra/screen.h
===================================================================
--- scummvm/trunk/engines/kyra/screen.h	2008-09-14 16:21:31 UTC (rev 34526)
+++ scummvm/trunk/engines/kyra/screen.h	2008-09-14 16:29:14 UTC (rev 34527)
@@ -152,6 +152,8 @@
 	void setPaletteIndex(uint8 index, uint8 red, uint8 green, uint8 blue);
 	void setScreenPalette(const uint8 *palData);
 	const uint8 *getScreenPalette() const { return _screenPalette; }
+
+	void getRealPalette(int num, uint8 *dst);
 	uint8 *getPalette(int num);
 
 	// gui specific (processing on _curPage)


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