aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/saveload_lol.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2009-10-04 17:38:15 +0000
committerJohannes Schickel2009-10-04 17:38:15 +0000
commit41e4a1ddb6b515f932f445dabbbba28351472315 (patch)
tree922e42152b6c6c574d6e8f318324eb824f1aeb30 /engines/kyra/saveload_lol.cpp
parentfc4d7b7d1dc22170b8223ce723cce9a219d84c59 (diff)
downloadscummvm-rg350-41e4a1ddb6b515f932f445dabbbba28351472315.tar.gz
scummvm-rg350-41e4a1ddb6b515f932f445dabbbba28351472315.tar.bz2
scummvm-rg350-41e4a1ddb6b515f932f445dabbbba28351472315.zip
LoL PC98: Fix thumbnail creation for quick saves and autosave.
svn-id: r44623
Diffstat (limited to 'engines/kyra/saveload_lol.cpp')
-rw-r--r--engines/kyra/saveload_lol.cpp31
1 files changed, 28 insertions, 3 deletions
diff --git a/engines/kyra/saveload_lol.cpp b/engines/kyra/saveload_lol.cpp
index 4e15c4495c..928cb508c7 100644
--- a/engines/kyra/saveload_lol.cpp
+++ b/engines/kyra/saveload_lol.cpp
@@ -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 @@ Common::Error LoLEngine::saveGameState(int slot, const char *saveName, const Gra
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