diff options
author | Johannes Schickel | 2006-01-14 21:14:27 +0000 |
---|---|---|
committer | Johannes Schickel | 2006-01-14 21:14:27 +0000 |
commit | ff7a1c734f4ea32b330dfacf212b719f3b590955 (patch) | |
tree | 0d075a7c929ab085f317aee5d999d765c37ec989 /kyra/screen.cpp | |
parent | a61e62db95d30c9886cf2e66e84f9e753c04f2d5 (diff) | |
download | scummvm-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.cpp | 21 |
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 |