[Scummvm-cvs-logs] SF.net SVN: scummvm: [21661] scummvm/trunk/engines/simon
kirben at users.sourceforge.net
kirben at users.sourceforge.net
Fri Apr 7 02:05:01 CEST 2006
Revision: 21661
Author: kirben
Date: 2006-04-07 02:04:36 -0700 (Fri, 07 Apr 2006)
ViewCVS: http://svn.sourceforge.net/scummvm/?rev=21661&view=rev
Log Message:
-----------
Fix some horizontal scrolling issues in FF
Modified Paths:
--------------
scummvm/trunk/engines/simon/cursor.cpp
scummvm/trunk/engines/simon/simon.cpp
scummvm/trunk/engines/simon/simon.h
scummvm/trunk/engines/simon/vga.cpp
Modified: scummvm/trunk/engines/simon/cursor.cpp
===================================================================
--- scummvm/trunk/engines/simon/cursor.cpp 2006-04-07 03:30:52 UTC (rev 21660)
+++ scummvm/trunk/engines/simon/cursor.cpp 2006-04-07 09:04:36 UTC (rev 21661)
@@ -224,7 +224,7 @@
};
void SimonEngine::drawMousePointer() {
- debug(0, "Mouse %d Anim %d Max %d", _mouseCursor, _mouseAnim, _mouseAnimMax);
+ //debug(0, "Mouse %d Anim %d Max %d", _mouseCursor, _mouseAnim, _mouseAnimMax);
if (getGameType() == GType_SIMON2)
_system->setMouseCursor(_simon2_cursors[_mouseCursor], 16, 16, 7, 7);
Modified: scummvm/trunk/engines/simon/simon.cpp
===================================================================
--- scummvm/trunk/engines/simon/simon.cpp 2006-04-07 03:30:52 UTC (rev 21660)
+++ scummvm/trunk/engines/simon/simon.cpp 2006-04-07 09:04:36 UTC (rev 21661)
@@ -2359,7 +2359,9 @@
_usePaletteDelay = true;
} else {
_scrollX = 0;
+ _scrollY = 0;
_scrollXMax = 0;
+ _scrollYMax = 0;
_scrollCount = 0;
_scrollFlag = 0;
_scrollHeight = 134;
@@ -2491,21 +2493,35 @@
if (_scrollCount == 0)
return;
- if (_scrollCount < 0) {
- if (_scrollFlag != -1) {
- _scrollFlag = -1;
- if (++_scrollCount == 0)
- return;
+ if (getGameType() == GType_FF) {
+ if (_scrollCount < 0) {
+ if (_scrollFlag != -8) {
+ _scrollFlag = -8;
+ _scrollCount += 8;
+ }
+ } else {
+ if (_scrollFlag != 8) {
+ _scrollFlag = 8;
+ _scrollCount -= 8;
+ }
}
} else {
- if (_scrollFlag != 1) {
- _scrollFlag = 1;
- if (--_scrollCount == 0)
- return;
+ if (_scrollCount < 0) {
+ if (_scrollFlag != -1) {
+ _scrollFlag = -1;
+ if (++_scrollCount == 0)
+ return;
+ }
+ } else {
+ if (_scrollFlag != 1) {
+ _scrollFlag = 1;
+ if (--_scrollCount == 0)
+ return;
+ }
}
+
+ add_vga_timer(6, NULL, 0, 0);
}
-
- add_vga_timer(6, NULL, 0, 0);
}
void SimonEngine::vcResumeSprite(const byte *code_ptr, uint16 cur_file, uint16 cur_sprite) {
@@ -2626,7 +2642,10 @@
if (_paletteFlag == 2)
_paletteFlag = 1;
- if ((getGameType() == GType_SIMON2 || getGameType() == GType_FF) && _scrollFlag) {
+ if (getGameType() == GType_FF && _scrollCount) {
+ scroll_timeout();
+ }
+ if (getGameType() == GType_SIMON2 && _scrollFlag) {
scrollEvent();
}
@@ -3736,6 +3755,10 @@
memcpy(_sdl_buf_attached, _sdl_buf, _screenWidth * _screenHeight);
+ if (getGameType() == GType_FF && _scrollFlag) {
+ scrollEvent();
+ }
+
if (_paletteColorCount != 0) {
if (getGameType() == GType_SIMON1 && _usePaletteDelay) {
delay(100);
Modified: scummvm/trunk/engines/simon/simon.h
===================================================================
--- scummvm/trunk/engines/simon/simon.h 2006-04-07 03:30:52 UTC (rev 21660)
+++ scummvm/trunk/engines/simon/simon.h 2006-04-07 09:04:36 UTC (rev 21661)
@@ -266,8 +266,8 @@
bool _vgaVar9;
int16 _scriptUnk1;
bool _restoreWindow6;
- int _scrollX, _scrollXMax, _scrollHeight;
- int _scrollY, _scrollYMax, _scrollWidth;
+ int _scrollX, _scrollXMax, _scrollWidth;
+ int _scrollY, _scrollYMax, _scrollHeight;
int _scrollCount, _scrollFlag;
const byte *_scrollImage;
byte _vgaVar8;
@@ -1000,8 +1000,8 @@
void vcSkipNextInstruction();
int getScale(int y, int x);
- void checkScrollX(int x);
- void checkScrollY(int y);
+ void checkScrollX(int x, int xpos);
+ void checkScrollY(int y, int ypos);
bool itemIsSiblingOf(uint16 val);
bool itemIsParentOf(uint16 a, uint16 b);
Modified: scummvm/trunk/engines/simon/vga.cpp
===================================================================
--- scummvm/trunk/engines/simon/vga.cpp 2006-04-07 03:30:52 UTC (rev 21660)
+++ scummvm/trunk/engines/simon/vga.cpp 2006-04-07 09:04:36 UTC (rev 21661)
@@ -729,7 +729,7 @@
byte *dst;
uint w;
- _scrollXMax = 640;
+ _scrollXMax = width - 640;
_scrollYMax = 0;
_scrollImage = state.depack_src;
_scrollHeight = height;
@@ -741,13 +741,14 @@
vcWriteVar(251, _scrollX);
dst = getBackBuf();
- src = state.depack_src + (_scrollX - 8) / 2;
+ src = state.depack_src + _scrollX / 2;
for (w = 0; w < 80; w++) {
decodeStripA(dst, src + READ_LE_UINT32(src), height);
dst += 8;
src += 4;
}
+
return;
}
if (height > 480) {
@@ -1856,7 +1857,7 @@
y = vsp->y;
vsp->y = y1;
- checkScrollY(y1 - y);
+ checkScrollY(y, y1);
_variableArray[11] = readUint16Wrapper(p);
_variableArray[13] = pos;
@@ -2335,7 +2336,7 @@
vsp->x += getScale(vsp->y, x);
_variableArray[var] = vsp->x;
- checkScrollX(x);
+ checkScrollX(x, vsp->x);
vsp->flags = kDFScaled;
}
@@ -2350,7 +2351,7 @@
vsp->y += getScale(vsp->y, y);
_variableArray[var] = vsp->y;
- checkScrollY(y);
+ checkScrollY(y, vsp->y);
vsp->flags = kDFScaled;
}
@@ -2438,7 +2439,7 @@
}
// Scrolling functions for Feeble Files
-void SimonEngine::checkScrollX(int x) {
+void SimonEngine::checkScrollX(int x, int xpos) {
if (_scrollXMax == 0 || getBitFlag(80) || getBitFlag(82) || x == 0)
return;
@@ -2453,7 +2454,7 @@
return;
}
- if (x - _scrollX >= 480) {
+ if (xpos - _scrollX >= 480) {
_scrollCount = 320;
tmp = _scrollXMax - _scrollX;
if (tmp < 320)
@@ -2469,7 +2470,7 @@
return;
}
- if ((uint16)(x - _scrollX) < 161) {
+ if ((uint16)(xpos - _scrollX) < 161) {
_scrollCount = -320;
tmp = _scrollXMax - _scrollX;
if (_scrollX < 320)
@@ -2478,7 +2479,7 @@
}
}
-void SimonEngine::checkScrollY(int y) {
+void SimonEngine::checkScrollY(int y, int ypos) {
if (_scrollYMax == 0 || getBitFlag(80))
return;
@@ -2493,7 +2494,7 @@
return;
}
- if (y - _scrollY >= 440) {
+ if (ypos - _scrollY >= 440) {
_scrollCount = 240;
tmp = _scrollYMax - _scrollY;
if (tmp < 240)
@@ -2509,7 +2510,7 @@
return;
}
- if ((uint16)(y - _scrollY) < 100) {
+ if ((uint16)(ypos - _scrollY) < 100) {
_scrollCount = -240;
tmp = _scrollYMax - _scrollY;
if (_scrollY < 240)
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