aboutsummaryrefslogtreecommitdiff
path: root/kyra/screen.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2006-01-14 21:14:27 +0000
committerJohannes Schickel2006-01-14 21:14:27 +0000
commitff7a1c734f4ea32b330dfacf212b719f3b590955 (patch)
tree0d075a7c929ab085f317aee5d999d765c37ec989 /kyra/screen.cpp
parenta61e62db95d30c9886cf2e66e84f9e753c04f2d5 (diff)
downloadscummvm-rg350-ff7a1c734f4ea32b330dfacf212b719f3b590955.tar.gz
scummvm-rg350-ff7a1c734f4ea32b330dfacf212b719f3b590955.tar.bz2
scummvm-rg350-ff7a1c734f4ea32b330dfacf212b719f3b590955.zip
Implemented "cmd_loadPageFromDisk" and "cmd_savePageToDisk".
svn-id: r20032
Diffstat (limited to 'kyra/screen.cpp')
-rw-r--r--kyra/screen.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/kyra/screen.cpp b/kyra/screen.cpp
index 3677132056..f3a217f043 100644
--- a/kyra/screen.cpp
+++ b/kyra/screen.cpp
@@ -70,6 +70,7 @@ Screen::Screen(KyraEngine *vm, OSystem *system)
assert(_bitBlitRects);
memset(_bitBlitRects, 0, sizeof(Rect)*BITBLIT_RECTS);
_bitBlitNum = 0;
+ memset(_saveLoadPage, 0, sizeof(_saveLoadPage));
}
Screen::~Screen() {
@@ -89,6 +90,10 @@ Screen::~Screen() {
free(_palettes[i]);
}
delete [] _bitBlitRects;
+ for (int i = 0; i < ARRAYSIZE(_saveLoadPage); ++i) {
+ delete [] _saveLoadPage[i];
+ _saveLoadPage[i] = 0;
+ }
}
void Screen::updateScreen() {
@@ -1881,4 +1886,20 @@ void Screen::bitBlitRects() {
++cur;
}
}
+
+void Screen::savePageToDisk(const char *file, int page) {
+ debug(9, "Screen::savePageToDisk('%s', %d)", file, page);
+ if (!_saveLoadPage[page/2]) {
+ _saveLoadPage[page/2] = new uint8[SCREEN_W * SCREEN_H];
+ assert(_saveLoadPage[page/2]);
+ }
+ memcpy(_saveLoadPage[page/2], getPagePtr(page), SCREEN_W * SCREEN_H);
+}
+
+void Screen::loadPageFromDisk(const char *file, int page) {
+ debug(9, "Screen::loadPageFromDisk('%s', %d)", file, page);
+ copyBlockToPage(page, 0, 0, SCREEN_W, SCREEN_H, _saveLoadPage[page/2]);
+ delete [] _saveLoadPage[page/2];
+ _saveLoadPage[page/2] = 0;
+}
} // End of namespace Kyra