mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-13 12:39:56 +00:00
Fix scrolling glitches in Oracle of FF
svn-id: r22290
This commit is contained in:
parent
91a67d1150
commit
afb5f5d5ab
@ -1534,17 +1534,14 @@ void SimonEngine::video_putchar_drawchar(WindowBlock *window, uint x, uint y, by
|
||||
|
||||
_lockWord |= 0x8000;
|
||||
|
||||
dst = getFrontBuf();
|
||||
dst += y * _dxSurfacePitch + x + window->textColumnOffset;
|
||||
dst = getFrontBuf() + y * _dxSurfacePitch + x + window->textColumnOffset;
|
||||
|
||||
if (getGameType() == GType_FF) {
|
||||
dst = getFrontBuf() + y * _dxSurfacePitch + x + window->textColumnOffset;
|
||||
h = 13;
|
||||
w = feebleFontSize[chr - 0x20];
|
||||
|
||||
src = feeble_video_font + (chr - 0x20) * 13;
|
||||
} else {
|
||||
dst = getFrontBuf() + y * _dxSurfacePitch + x + window->textColumnOffset;
|
||||
h = 8;
|
||||
w = 6;
|
||||
|
||||
@ -1584,8 +1581,15 @@ void SimonEngine::video_putchar_drawchar(WindowBlock *window, uint x, uint y, by
|
||||
int8 b = *src++;
|
||||
i = 0;
|
||||
do {
|
||||
if (b < 0)
|
||||
dst[i] = color;
|
||||
if (b < 0) {
|
||||
if (getGameType() == GType_FF) {
|
||||
if (dst[i] == 0)
|
||||
dst[i] = color;
|
||||
} else {
|
||||
dst[i] = color;
|
||||
}
|
||||
}
|
||||
|
||||
b <<= 1;
|
||||
} while (++i != w);
|
||||
dst += _dxSurfacePitch;
|
||||
|
@ -79,10 +79,8 @@ void SimonEngine::linksDown() {
|
||||
void SimonEngine::scrollOracle() {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
for (i = 0; i < 5; i++)
|
||||
scrollOracleUp();
|
||||
bltOracleText();
|
||||
}
|
||||
}
|
||||
|
||||
void SimonEngine::oracleTextUp() {
|
||||
@ -112,7 +110,6 @@ void SimonEngine::oracleTextUp() {
|
||||
if(sub)
|
||||
startSubroutineEx(sub);
|
||||
setBitFlag(94, false);
|
||||
bltOracleText();
|
||||
}
|
||||
if (_currentBoxNumber != 601 || !getBitFlag(89))
|
||||
break;
|
||||
@ -147,7 +144,6 @@ void SimonEngine::oracleTextDown() {
|
||||
if (sub)
|
||||
startSubroutineEx(sub);
|
||||
setBitFlag(93, false);
|
||||
bltOracleText();
|
||||
}
|
||||
if (_currentBoxNumber != 600 || !getBitFlag(89))
|
||||
break;
|
||||
@ -212,23 +208,6 @@ void SimonEngine::scrollOracleDown() {
|
||||
}
|
||||
}
|
||||
|
||||
void SimonEngine::bltOracleText() {
|
||||
byte *src, *dst1, *dst2;
|
||||
uint16 h;
|
||||
|
||||
src = getFrontBuf() + 103 * _screenWidth + 136;
|
||||
dst1 = getFrontBuf() + 103 * _screenWidth + 136;
|
||||
dst2 = getBackBuf() + 103 * _screenWidth + 136;
|
||||
|
||||
for (h = 0; h < 104; h++) {
|
||||
memcpy(dst1, src, 360);
|
||||
memcpy(dst2, src, 360);
|
||||
dst1 += _screenWidth;
|
||||
dst2 += _screenWidth;
|
||||
src += _screenWidth;
|
||||
}
|
||||
}
|
||||
|
||||
void SimonEngine::oracleLogo() {
|
||||
Common::Rect srcRect, dstRect;
|
||||
byte *src, *dst;
|
||||
|
@ -618,7 +618,6 @@ protected:
|
||||
void saveUserGame(int slot);
|
||||
void windowBackSpace(WindowBlock *window);
|
||||
|
||||
void bltOracleText();
|
||||
void oracleLogo();
|
||||
void scrollOracle();
|
||||
void scrollOracleUp();
|
||||
|
@ -1781,11 +1781,9 @@ void SimonEngine::vc36_setWindowImage() {
|
||||
uint16 vga_res = vcReadNextWord();
|
||||
uint16 windowNum = vcReadNextWord();
|
||||
|
||||
if (getGameType() == GType_FF) {
|
||||
// TODO
|
||||
} else if (getGameType() == GType_SIMON2) {
|
||||
if (getGameType() == GType_SIMON2) {
|
||||
set_video_mode_internal(windowNum, vga_res);
|
||||
} else {
|
||||
} else if (getGameType() == GType_SIMON1) {
|
||||
if (windowNum == 16) {
|
||||
_copyPartialMode = 2;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user