aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2006-01-11 04:06:51 +0000
committerTravis Howell2006-01-11 04:06:51 +0000
commit7a7eeaa79f1cc659dcdbe8ad15c44ebe558560b1 (patch)
treeabdfff11459a6496fd6bc49302c5c77ebdc9e027
parent4e1778dc14d531f9c99bd82a2f589da6490ea198 (diff)
downloadscummvm-rg350-7a7eeaa79f1cc659dcdbe8ad15c44ebe558560b1.tar.gz
scummvm-rg350-7a7eeaa79f1cc659dcdbe8ad15c44ebe558560b1.tar.bz2
scummvm-rg350-7a7eeaa79f1cc659dcdbe8ad15c44ebe558560b1.zip
A few FF fixes.
svn-id: r19980
-rw-r--r--simon/vga.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/simon/vga.cpp b/simon/vga.cpp
index 33d86a40c4..2298433284 100644
--- a/simon/vga.cpp
+++ b/simon/vga.cpp
@@ -722,8 +722,17 @@ void SimonEngine::vc10_draw() {
}
}
- maxWidth = (getGameType() == GType_FF) ? 640 : 20;
- if (getGameType() == GType_SIMON2 && width > maxWidth) {
+ if (getGameType() == GType_FF) {
+ if (width > 640) {
+ debug(0, "Horizontal scrolling not supported");
+ return;
+ }
+ if (height > 480) {
+ debug(0, "Vertical scrolling not supported");
+ return;
+ }
+ }
+ if (getGameType() == GType_SIMON2 && width > 20) {
const byte *src;
byte *dst;
uint w;
@@ -752,11 +761,6 @@ void SimonEngine::vc10_draw() {
return;
}
- if (getGameType() == GType_FF && height > 480) {
- debug(0, "Vertical scrolling not supported\n");
- return;
- }
-
if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
if (state.flags & 0x10) {
state.depack_src = vc10_uncompressFlip(state.depack_src, width, height);
@@ -2184,10 +2188,10 @@ void SimonEngine::vc76_setScaleXOffs() {
VgaSprite *vsp = findCurSprite();
vsp->image = vcReadNextWord();
- int16 xoffs = vcReadNextWord();
+ int16 x = vcReadNextWord();
int var = vcReadNextWord();
- vsp->x += getScale(vsp->x, xoffs);
+ vsp->x += getScale(vsp->y, x);
_variableArray[var] = vsp->x;
if (_scrollXMax) {
@@ -2201,10 +2205,10 @@ void SimonEngine::vc77_setScaleYOffs() {
VgaSprite *vsp = findCurSprite();
vsp->image = vcReadNextWord();
- int16 yoffs = vcReadNextWord();
+ int16 x = vcReadNextWord();
int var = vcReadNextWord();
- vsp->y += getScale(vsp->y, yoffs);
+ vsp->y += getScale(vsp->y, x);
_variableArray[var] = vsp->y;
vsp->flags = 0x40;
}
@@ -2234,10 +2238,10 @@ void SimonEngine::vc78_computeXY() {
void SimonEngine::vc79_computePosNum() {
uint a = (uint16)_variableArray[12];
- uint pos = 0;
const uint16 *p = _pathFindArray[a - 1];
+ uint pos = 0;
- int16 y = vcReadNextWord();
+ int16 y = _variableArray[16];
while(y > readUint16Wrapper(p + 1)) {
p += 2;
pos++;