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

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Oct 4 19:38:16 CEST 2009


Revision: 44623
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44623&view=rev
Author:   lordhoto
Date:     2009-10-04 17:38:15 +0000 (Sun, 04 Oct 2009)

Log Message:
-----------
LoL PC98: Fix thumbnail creation for quick saves and autosave.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra_v1.cpp
    scummvm/trunk/engines/kyra/kyra_v1.h
    scummvm/trunk/engines/kyra/lol.h
    scummvm/trunk/engines/kyra/saveload.cpp
    scummvm/trunk/engines/kyra/saveload_lol.cpp
    scummvm/trunk/engines/kyra/screen.cpp

Modified: scummvm/trunk/engines/kyra/kyra_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v1.cpp	2009-10-04 17:37:46 UTC (rev 44622)
+++ scummvm/trunk/engines/kyra/kyra_v1.cpp	2009-10-04 17:38:15 UTC (rev 44623)
@@ -281,7 +281,7 @@
 				} else if (event.kbd.keycode == 'q') {
 					quitGame();
 				}
-			} else {				
+			} else {
 				keys = _keyMap[event.kbd.keycode];
 
 				// When we got an keypress, which we might need to handle,

Modified: scummvm/trunk/engines/kyra/kyra_v1.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v1.h	2009-10-04 17:37:46 UTC (rev 44622)
+++ scummvm/trunk/engines/kyra/kyra_v1.h	2009-10-04 17:38:15 UTC (rev 44623)
@@ -357,6 +357,9 @@
 
 	Common::SeekableReadStream *openSaveForReading(const char *filename, SaveHeader &header);
 	Common::WriteStream *openSaveForWriting(const char *filename, const char *saveName, const Graphics::Surface *thumbnail) const;
+
+	// TODO: Consider moving this to Screen
+	virtual Graphics::Surface *generateSaveThumbnail() const { return 0; }
 };
 
 } // End of namespace Kyra

Modified: scummvm/trunk/engines/kyra/lol.h
===================================================================
--- scummvm/trunk/engines/kyra/lol.h	2009-10-04 17:37:46 UTC (rev 44622)
+++ scummvm/trunk/engines/kyra/lol.h	2009-10-04 17:38:15 UTC (rev 44623)
@@ -1487,6 +1487,8 @@
 	Common::Error loadGameState(int slot);
 	Common::Error saveGameState(int slot, const char *saveName, const Graphics::Surface *thumbnail);
 
+	Graphics::Surface *generateSaveThumbnail() const;
+
 	void generateTempData();
 	LevelTempData *_lvlTempData[29];
 };

Modified: scummvm/trunk/engines/kyra/saveload.cpp
===================================================================
--- scummvm/trunk/engines/kyra/saveload.cpp	2009-10-04 17:37:46 UTC (rev 44622)
+++ scummvm/trunk/engines/kyra/saveload.cpp	2009-10-04 17:38:15 UTC (rev 44623)
@@ -206,11 +206,20 @@
 		return 0;
 	}
 
+	Graphics::Surface *genThumbnail = 0;
+	if (!thumbnail)
+		thumbnail = genThumbnail = generateSaveThumbnail();
+
 	if (thumbnail)
 		Graphics::saveThumbnail(*out, *thumbnail);
 	else
 		Graphics::saveThumbnail(*out);
 
+	if (genThumbnail) {
+		genThumbnail->free();
+		delete genThumbnail;
+	}
+
 	return out;
 }
 

Modified: scummvm/trunk/engines/kyra/saveload_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/saveload_lol.cpp	2009-10-04 17:37:46 UTC (rev 44622)
+++ scummvm/trunk/engines/kyra/saveload_lol.cpp	2009-10-04 17:38:15 UTC (rev 44623)
@@ -25,13 +25,15 @@
 
 #ifdef ENABLE_LOL
 
+#include "kyra/lol.h"
+#include "kyra/screen_lol.h"
+#include "kyra/resource.h"
+
 #include "common/endian.h"
 #include "common/savefile.h"
 #include "common/system.h"
 
-#include "kyra/lol.h"
-#include "kyra/screen_lol.h"
-#include "kyra/resource.h"
+#include "graphics/scaler.h"
 
 namespace Kyra {
 
@@ -449,6 +451,29 @@
 	return Common::kNoError;
 }
 
+Graphics::Surface *LoLEngine::generateSaveThumbnail() const {
+	if (_flags.platform != Common::kPlatformPC98)
+		return 0;
+
+	uint8 *screenPal = new uint8[16 * 3];
+	assert(screenPal);
+	_screen->getRealPalette(0, screenPal);
+
+	uint8 *screenBuf = new uint8[Screen::SCREEN_W * Screen::SCREEN_H];
+	assert(screenBuf);
+
+	Graphics::Surface *dst = new Graphics::Surface();
+	assert(dst);
+
+	_screen->copyRegionToBuffer(0, 0, 0, 320, 200, screenBuf);
+	Screen_LoL::convertPC98Gfx(screenBuf, Screen::SCREEN_W, Screen::SCREEN_H, Screen::SCREEN_W);
+	::createThumbnail(dst, screenBuf, Screen::SCREEN_W, Screen::SCREEN_H, screenPal);
+
+	delete[] screenBuf;
+	delete[] screenPal;
+	return dst;
+}
+
 } // end of namespace Kyra
 
 #endif // ENABLE_LOL

Modified: scummvm/trunk/engines/kyra/screen.cpp
===================================================================
--- scummvm/trunk/engines/kyra/screen.cpp	2009-10-04 17:37:46 UTC (rev 44622)
+++ scummvm/trunk/engines/kyra/screen.cpp	2009-10-04 17:38:15 UTC (rev 44623)
@@ -688,7 +688,7 @@
 }
 
 void Screen::getRealPalette(int num, uint8 *dst) {
-	const int colors = _isAmiga ? 32 : 256;
+	const int colors = _use16ColorMode ? 16 : (_isAmiga ? 32 : 256);
 	const uint8 *palData = getPalette(num).getData();
 
 	if (!palData) {


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