svn-id: r26833
This commit is contained in:
Travis Howell 2007-05-13 13:19:46 +00:00
parent 09c816e695
commit a8c6dc6e7d
5 changed files with 70 additions and 64 deletions

View File

@ -711,9 +711,6 @@ protected:
void clearMenuStrip();
void doMenuStrip(uint menuNum);
void oracleLogo();
void swapCharacterLogo();
void mouseOff();
void mouseOn();
@ -1125,7 +1122,7 @@ protected:
void readGameFile(void *dst, uint32 offs, uint32 size);
void timer_callback();
void timer_proc1();
virtual void timer_proc1();
virtual void animateSprites();
@ -1560,6 +1557,10 @@ protected:
virtual void animateSprites();
void animateSpritesByY();
void oracleLogo();
void swapCharacterLogo();
virtual void timer_proc1();
virtual void addArrows(WindowBlock *window);
virtual uint setupIconHitArea(WindowBlock *window, uint num, uint x, uint y, Item *item_ptr);

View File

@ -440,7 +440,7 @@ void AGOSEngine::delay(uint amount) {
}
void AGOSEngine::timer_callback() {
if (_timer5 != 0) {
if (_timer5) {
_syncFlag2 = true;
_timer5--;
} else {
@ -448,6 +448,59 @@ void AGOSEngine::timer_callback() {
}
}
void AGOSEngine_Feeble::timer_proc1() {
_timer4++;
if (_lockWord & 0x80E9 || _lockWord & 2)
return;
_syncCount++;
_lockWord |= 2;
if (!(_lockWord & 0x10)) {
_syncFlag2 ^= 1;
if (!_syncFlag2) {
processVgaEvents();
} else {
// Double speed on Oracle
if (getGameType() == GType_FF && getBitFlag(99)) {
processVgaEvents();
} else if (_scrollCount == 0) {
_lockWord &= ~2;
return;
}
}
}
if (getGameType() == GType_FF) {
_moviePlay->nextFrame();
}
animateSprites();
if (_copyPartialMode == 2) {
fillFrontFromBack(0, 0, _screenWidth, _screenHeight);
_copyPartialMode = 0;
}
if (_displayScreen) {
if (getGameType() == GType_FF) {
if (!getBitFlag(78)) {
oracleLogo();
}
if (getBitFlag(76)) {
swapCharacterLogo();
}
}
handleMouseMoved();
displayScreen();
_displayScreen = false;
}
_lockWord &= ~2;
}
void AGOSEngine::timer_proc1() {
_timer4++;
@ -461,54 +514,13 @@ void AGOSEngine::timer_proc1() {
handleMouseMoved();
if (!(_lockWord & 0x10)) {
if (getGameType() == GType_PP) {
_syncFlag2 ^= 1;
if (!_syncFlag2) {
processVgaEvents();
} else {
if (_scrollCount == 0) {
_lockWord &= ~2;
return;
}
}
} else if (getGameType() == GType_FF) {
_syncFlag2 ^= 1;
if (!_syncFlag2) {
processVgaEvents();
} else {
// Double speed on Oracle
if (getBitFlag(99)) {
processVgaEvents();
} else if (_scrollCount == 0) {
_lockWord &= ~2;
return;
}
}
} else {
processVgaEvents();
processVgaEvents();
_cepeFlag ^= 1;
if (!_cepeFlag)
processVgaEvents();
processVgaEvents();
_syncFlag2 ^= 1;
_cepeFlag ^= 1;
if (!_cepeFlag)
processVgaEvents();
if (_mouseHideCount != 0 && _syncFlag2) {
_lockWord &= ~2;
return;
}
}
}
if (getGameType() == GType_FF) {
_moviePlay->nextFrame();
animateSprites();
}
if (_copyPartialMode == 2) {
fillFrontFromBack(0, 0, _screenWidth, _screenHeight);
_copyPartialMode = 0;
}
if (_updateScreen) {
_system->copyRectToScreen(getFrontBuf(), _screenWidth, 0, 0, _screenWidth, _screenHeight);
_system->updateScreen();
@ -517,14 +529,6 @@ void AGOSEngine::timer_proc1() {
}
if (_displayScreen) {
if (getGameType() == GType_FF) {
if (!getBitFlag(78)) {
oracleLogo();
}
if (getBitFlag(76)) {
swapCharacterLogo();
}
}
displayScreen();
_displayScreen = false;
}

View File

@ -1226,6 +1226,9 @@ void AGOSEngine::setWindowImage(uint16 mode, uint16 vga_res_id) {
_lockWord |= 0x20;
VgaTimerEntry *vte = _vgaTimerList;
while (vte->type != 2)
vte++;
vte->delay = 2;
if (getGameType() == GType_FF || getGameType() == GType_PP) {
@ -1259,7 +1262,7 @@ void AGOSEngine::setWindowImage(uint16 mode, uint16 vga_res_id) {
_vgaSpriteChanged++;
if (_window3Flag == 1) {
clearVideoBackGround(3, 0); // (window, color)
clearVideoBackGround(3, 0);
}
uint xoffs = _videoWindows[updateWindow * 4 + 0] * 16;

View File

@ -298,7 +298,7 @@ void AGOSEngine_Feeble::scrollOracleDown() {
}
}
void AGOSEngine::oracleLogo() {
void AGOSEngine_Feeble::oracleLogo() {
Common::Rect srcRect, dstRect;
byte *src, *dst;
uint16 w, h;
@ -326,7 +326,7 @@ void AGOSEngine::oracleLogo() {
}
}
void AGOSEngine::swapCharacterLogo() {
void AGOSEngine_Feeble::swapCharacterLogo() {
Common::Rect srcRect, dstRect;
byte *src, *dst;
uint16 w, h;

View File

@ -362,9 +362,7 @@ void AGOSEngine::printScreenText(uint vgaSpriteId, uint color, const char *strin
renderString(vgaSpriteId, color, width, height, convertedString);
}
int b = 4;
if (!getBitFlag(133))
b = 3;
int b = (!getBitFlag(133)) ? 3 : 4;
x /= 8;
if (y < 2)