Ticket #1790: 1035739-2.diff
File 1035739-2.diff, 4.1 KB (added by , 18 years ago) |
---|
-
scumm/scumm.cpp
364 364 _bgNeedsRedraw = false; 365 365 _screenEffectFlag = false; 366 366 _completeScreenRedraw = false; 367 _disableFadeInEffect = false; 367 368 memset(&_cursor, 0, sizeof(_cursor)); 368 369 memset(_grabbedCursor, 0, sizeof(_grabbedCursor)); 369 370 _currentCursor = 0; … … 1563 1564 1564 1565 while (!_quit) { 1565 1566 1566 updatePalette();1567 1568 1567 diff -= _system->getMillis(); 1569 1568 waitForTimer(delta * 15 + diff); 1570 1569 diff = _system->getMillis(); … … 1609 1608 // that it will be in a different state each time you run the program. 1610 1609 _rnd.getRandomNumber(2); 1611 1610 1611 if (_game.version <= 6) { 1612 updatePalette(); 1613 } 1614 1612 1615 #ifndef DISABLE_HE 1613 1616 if (_game.heversion >= 90) { 1614 1617 ((ScummEngine_v90he *)this)->_moviePlay->handleNextFrame(); … … 1769 1772 handleMouseOver(oldEgo != VAR(VAR_EGO)); 1770 1773 1771 1774 // Render everything to the screen. 1775 if (_game.version >= 7) { 1776 updatePalette(); 1777 } 1772 1778 drawDirtyScreenParts(); 1773 1779 1774 1780 // FIXME / TODO: Try to move the following to scummLoop_handleSound or -
scumm/smush/smush_player.cpp
345 345 346 346 _vm->_fullRedraw = true; 347 347 348 // WORKAROUND bug #1035739: This is hack to workaround some ugly palette349 // issues, see the mentioned bug report for details.350 _vm->_doEffect = false;351 352 353 348 // HACK HACK HACK: This is an *evil* trick, beware! See above for 354 349 // some explanation. 355 350 _vm->virtscr[0].pitch = _origPitch; 356 351 _vm->gdi._numStrips = _origNumStrips; 357 352 358 359 353 _initDone = false; 360 354 } 361 355 -
scumm/gfx.cpp
2952 2952 #pragma mark - 2953 2953 2954 2954 void ScummEngine::fadeIn(int effect) { 2955 if (_disableFadeInEffect) { 2956 // fadeIn() calls can be disabled in TheDig after a SMUSH movie 2957 // has been played. Like the original interpreter, we introduce 2958 // an extra flag to handle this. 2959 _disableFadeInEffect = false; 2960 _doEffect = false; 2961 _screenEffectFlag = true; 2962 return; 2963 } 2964 2955 2965 updatePalette(); 2956 2966 2957 2967 switch (effect) { … … 3012 3022 memcpy(_scrollBuffer, vs->getPixels(0, 0), vs->h * vs->pitch); 3013 3023 } 3014 3024 3015 3016 if (_screenEffectFlag && effect != 0) { 3025 // TheDig can disable fadeIn(), and may call fadeOut() several times 3026 // successively. Disabling the _screenEffectFlag check forces the screen 3027 // to get cleared. This fixes glitches, at least, in the first cutscenes 3028 // when bypassed of FT and TheDig. 3029 if ((_game.version == 7 || _screenEffectFlag) && effect != 0) { 3017 3030 3018 3031 // Fill screen 0 with black 3019 3032 memset(vs->getPixels(0, 0), 0, vs->pitch * vs->h); … … 3112 3125 for (i = 0; i < 16; i++) 3113 3126 tab_2[i] += delta[i]; 3114 3127 3115 // Draw the current state to the screen and wait half a sec so the user3116 // can watch the effect taking place.3117 waitForTimer( 30);3128 // Draw the current state to the screen and wait a few secs so the 3129 // user can watch the effect taking place. 3130 waitForTimer(VAR_FADE_DELAY != 0xFF ? VAR(VAR_FADE_DELAY) * 10 : 30); 3118 3131 } 3119 3132 } 3120 3133 -
scumm/scumm.h
976 976 //ender: fullscreen 977 977 bool _fullRedraw, _bgNeedsRedraw; 978 978 bool _screenEffectFlag, _completeScreenRedraw; 979 bool _disableFadeInEffect; 979 980 980 981 struct { 981 982 int hotspotX, hotspotY, width, height; -
scumm/script_v6.cpp
2535 2535 else 2536 2536 sp->play((char *)getStringAddressVar(VAR_VIDEONAME)); 2537 2537 delete sp; 2538 2539 if (_game.id == GID_DIG) { 2540 _disableFadeInEffect = true; 2541 } 2538 2542 } else if (_game.id == GID_FT) { 2539 2543 const int insaneVarNum = ((_game.features & GF_DEMO) && (_game.platform == Common::kPlatformPC)) 2540 2544 ? 232 : 233;