[Scummvm-cvs-logs] SF.net SVN: scummvm: [26915] scummvm/trunk/engines/kyra
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Tue May 22 15:44:42 CEST 2007
Revision: 26915
http://scummvm.svn.sourceforge.net/scummvm/?rev=26915&view=rev
Author: lordhoto
Date: 2007-05-22 06:44:41 -0700 (Tue, 22 May 2007)
Log Message:
-----------
Some graphic fixes for FM-Towns version. (Thanks to Florian Kagerer for this).
Modified Paths:
--------------
scummvm/trunk/engines/kyra/screen.cpp
scummvm/trunk/engines/kyra/screen.h
Modified: scummvm/trunk/engines/kyra/screen.cpp
===================================================================
--- scummvm/trunk/engines/kyra/screen.cpp 2007-05-22 13:33:41 UTC (rev 26914)
+++ scummvm/trunk/engines/kyra/screen.cpp 2007-05-22 13:44:41 UTC (rev 26915)
@@ -63,10 +63,16 @@
}
delete [] _bitBlitRects;
+
for (int i = 0; i < ARRAYSIZE(_saveLoadPage); ++i) {
delete [] _saveLoadPage[i];
_saveLoadPage[i] = 0;
}
+
+ for (int i = 0; i < ARRAYSIZE(_saveLoadPageOvl); ++i) {
+ delete [] _saveLoadPageOvl[i];
+ _saveLoadPageOvl[i] = 0;
+ }
delete [] _unkPtr1;
delete [] _unkPtr2;
@@ -168,6 +174,7 @@
memset(_bitBlitRects, 0, sizeof(Rect)*BITBLIT_RECTS);
_bitBlitNum = 0;
memset(_saveLoadPage, 0, sizeof(_saveLoadPage));
+ memset(_saveLoadPageOvl, 0, sizeof(_saveLoadPageOvl));
_unkPtr1 = new uint8[getRectSize(1, 144)];
assert(_unkPtr1);
@@ -2377,20 +2384,50 @@
assert(_saveLoadPage[page/2]);
}
memcpy(_saveLoadPage[page/2], getPagePtr(page), SCREEN_W * SCREEN_H);
+
+ if (_useOverlays) {
+ if (!_saveLoadPageOvl[page/2]) {
+ _saveLoadPageOvl[page/2] = new uint8[SCREEN_OVL_SJIS_SIZE];
+ assert(_saveLoadPageOvl[page/2]);
+ }
+
+ uint8 *srcPage = getOverlayPtr(page);
+ if (!srcPage) {
+ warning("trying to save unsupported overlay page %d", page);
+ return;
+ }
+
+ memcpy(_saveLoadPageOvl[page/2], srcPage, SCREEN_OVL_SJIS_SIZE);
+ }
}
void Screen::loadPageFromDisk(const char *file, int page) {
debugC(9, kDebugLevelScreen, "Screen::loadPageFromDisk('%s', %d)", file, page);
copyBlockToPage(page, 0, 0, SCREEN_W, SCREEN_H, _saveLoadPage[page/2]);
- clearOverlayRect(page, 0, 0, SCREEN_W, SCREEN_H);
delete [] _saveLoadPage[page/2];
- _saveLoadPage[page/2] = 0;
+
+ if (_saveLoadPageOvl[page/2]) {
+ uint8 *dstPage = getOverlayPtr(page);
+ if (!dstPage) {
+ warning("trying to restore unsupported overlay page %d", page);
+ return;
+ }
+
+ memcpy(dstPage, _saveLoadPageOvl[page/2], SCREEN_OVL_SJIS_SIZE);
+ delete [] _saveLoadPageOvl[page/2];
+ _saveLoadPageOvl[page/2] = 0;
+ } _saveLoadPage[page/2] = 0;
}
void Screen::deletePageFromDisk(int page) {
debugC(9, kDebugLevelScreen, "Screen::deletePageFromDisk(%d)", page);
delete [] _saveLoadPage[page/2];
_saveLoadPage[page/2] = 0;
+
+ if (_saveLoadPageOvl[page/2]) {
+ delete [] _saveLoadPageOvl[page/2];
+ _saveLoadPageOvl[page/2] = 0;
+ }
}
void Screen::blockInRegion(int x, int y, int width, int height) {
Modified: scummvm/trunk/engines/kyra/screen.h
===================================================================
--- scummvm/trunk/engines/kyra/screen.h 2007-05-22 13:33:41 UTC (rev 26914)
+++ scummvm/trunk/engines/kyra/screen.h 2007-05-22 13:44:41 UTC (rev 26915)
@@ -282,6 +282,7 @@
uint8 *_sjisSourceChar;
uint8 *_saveLoadPage[8];
+ uint8 *_saveLoadPageOvl[8];
uint8 *_screenPalette;
uint8 *_palettes[6];
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