aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/animator.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2006-03-16 16:35:46 +0000
committerJohannes Schickel2006-03-16 16:35:46 +0000
commitf1c9cd57265c64de835e6e9647afcf0e679651be (patch)
tree25873e83a092c4bc85fa8b5572fe88e712ffe547 /engines/kyra/animator.cpp
parent79b5c11ee24cae949db80040dff269e6851b64f0 (diff)
downloadscummvm-rg350-f1c9cd57265c64de835e6e9647afcf0e679651be.tar.gz
scummvm-rg350-f1c9cd57265c64de835e6e9647afcf0e679651be.tar.bz2
scummvm-rg350-f1c9cd57265c64de835e6e9647afcf0e679651be.zip
- Fixes some gfx glitches (the falling feather and the falling leaf now have correct restored background)
- Fixes brandon width value after loading (removes gfx glitch while talking with the tree) svn-id: r21332
Diffstat (limited to 'engines/kyra/animator.cpp')
-rw-r--r--engines/kyra/animator.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/engines/kyra/animator.cpp b/engines/kyra/animator.cpp
index 551c9b90b8..92b06a14a8 100644
--- a/engines/kyra/animator.cpp
+++ b/engines/kyra/animator.cpp
@@ -178,10 +178,10 @@ void ScreenAnimator::preserveOrRestoreBackground(AnimObject *obj, bool restore)
int x = 0, y = 0, width = obj->width << 3, height = obj->height;
if (restore) {
- x = obj->x2;
+ x = obj->x2 >> 3;
y = obj->y2;
} else {
- x = obj->x1;
+ x = obj->x1 >> 3;
y = obj->y1;
}
@@ -202,9 +202,9 @@ void ScreenAnimator::preserveOrRestoreBackground(AnimObject *obj, bool restore)
}
if (restore) {
- _screen->copyBlockToPage(_screen->_curPage, x, y, width, height, obj->background);
+ _screen->copyBlockToPage(_screen->_curPage, x << 3, y, width, height, obj->background);
} else {
- _screen->copyRegionToBuffer(_screen->_curPage, x, y, width, height, obj->background);
+ _screen->copyRegionToBuffer(_screen->_curPage, x << 3, y, width, height, obj->background);
}
}
@@ -373,11 +373,14 @@ void ScreenAnimator::copyChangedObjectsForward(int refreshFlag) {
if (curObject->active) {
if (curObject->refreshFlag || refreshFlag) {
int xpos = 0, ypos = 0, width = 0, height = 0;
- xpos = curObject->x1 - (curObject->width2+1);
+ xpos = (curObject->x1>>3) - (curObject->width2>>3) - 1;
ypos = curObject->y1 - curObject->height2;
- width = (curObject->width + ((curObject->width2)>>3)+1)<<3;
+ width = curObject->width + (curObject->width2>>3) + 2;
height = curObject->height + curObject->height2*2;
+ xpos <<= 3;
+ width <<= 3;
+
if (xpos < 8) {
xpos = 8;
} else if (xpos + width > 312) {