[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