[Scummvm-cvs-logs] SF.net SVN: scummvm:[55625] scummvm/trunk/engines/toon
sylvaintv at users.sourceforge.net
sylvaintv at users.sourceforge.net
Sat Jan 29 21:59:46 CET 2011
Revision: 55625
http://scummvm.svn.sourceforge.net/scummvm/?rev=55625&view=rev
Author: sylvaintv
Date: 2011-01-29 20:59:46 +0000 (Sat, 29 Jan 2011)
Log Message:
-----------
TOON: Fix some palette issues
- In fade out when leaving certain rooms
- When loading a game in a cutaway/closeup state
Modified Paths:
--------------
scummvm/trunk/engines/toon/movie.cpp
scummvm/trunk/engines/toon/toon.cpp
scummvm/trunk/engines/toon/toon.h
Modified: scummvm/trunk/engines/toon/movie.cpp
===================================================================
--- scummvm/trunk/engines/toon/movie.cpp 2011-01-29 20:12:27 UTC (rev 55624)
+++ scummvm/trunk/engines/toon/movie.cpp 2011-01-29 20:59:46 UTC (rev 55625)
@@ -87,7 +87,7 @@
_vm->getAudioManager()->setMusicVolume(0);
_decoder->loadFile(video.c_str(), flags);
playVideo();
- _vm->flushPalette();
+ _vm->flushPalette(false);
if (flags & 1)
_vm->getAudioManager()->setMusicVolume(_vm->getAudioManager()->isMusicMuted() ? 0 : 255);
_decoder->close();
Modified: scummvm/trunk/engines/toon/toon.cpp
===================================================================
--- scummvm/trunk/engines/toon/toon.cpp 2011-01-29 20:12:27 UTC (rev 55624)
+++ scummvm/trunk/engines/toon/toon.cpp 2011-01-29 20:59:46 UTC (rev 55625)
@@ -402,6 +402,11 @@
}
#endif
+ if (_needPaletteFlush) {
+ flushPalette(false);
+ _needPaletteFlush = false;
+ }
+
if (_firstFrame) {
copyToVirtualScreen(false);
fadeIn(5);
@@ -544,6 +549,7 @@
Picture *mainmenuPicture = new Picture(this);
mainmenuPicture->loadPicture("TITLESCR.CPS", true);
mainmenuPicture->setupPalette();
+ flushPalette(false);
MainMenuEntry entries[MAINMENU_ENTRYCOUNT];
@@ -894,8 +900,13 @@
delete _console;
}
-void ToonEngine::flushPalette() {
+void ToonEngine::flushPalette(bool deferFlushToNextRender) {
+ if (deferFlushToNextRender) {
+ _needPaletteFlush = true;
+ return;
+ }
+ _needPaletteFlush = false;
uint8 vmpalette[1024];
for (int32 i = 0; i < 256; i++) {
vmpalette[i*4+0] = _finalPalette[i*3+0];
@@ -907,14 +918,7 @@
}
void ToonEngine::setPaletteEntries(uint8 *palette, int32 offset, int32 num) {
memcpy(_finalPalette + offset * 3, palette, num * 3);
- uint8 vmpalette[1024];
- for (int32 i = 0; i < num; i++) {
- vmpalette[i*4+0] = palette[i*3+0];
- vmpalette[i*4+1] = palette[i*3+1];
- vmpalette[i*4+2] = palette[i*3+2];
- vmpalette[i*4+3] = 0;
- }
- _system->setPalette(vmpalette, offset, num);
+ flushPalette();
}
void ToonEngine::simpleUpdate(bool waitCharacterToTalk) {
@@ -1753,14 +1757,17 @@
}
void ToonEngine::fadeOut(int32 numFrames) {
+
+ uint8 oldpalette[1024];
+ _system->grabPalette(oldpalette, 0, 256);
+
for (int32 f = 0; f < numFrames; f++) {
-
uint8 vmpalette[1024];
for (int32 i = 0; i < 256; i++) {
- vmpalette[i*4+0] = (numFrames - f - 1) * _finalPalette[i*3+0] / (numFrames - 1);
- vmpalette[i*4+1] = (numFrames - f - 1) * _finalPalette[i*3+1] / (numFrames - 1);
- vmpalette[i*4+2] = (numFrames - f - 1) * _finalPalette[i*3+2] / (numFrames - 1);
- vmpalette[i*4+3] = (numFrames - f - 1);
+ vmpalette[i*4+0] = (numFrames - f - 1) * oldpalette[i*4+0] / (numFrames - 1);
+ vmpalette[i*4+1] = (numFrames - f - 1) * oldpalette[i*4+1] / (numFrames - 1);
+ vmpalette[i*4+2] = (numFrames - f - 1) * oldpalette[i*4+2] / (numFrames - 1);
+ vmpalette[i*4+3] = 255;
}
_system->setPalette(vmpalette, 0, 256);
_system->updateScreen();
@@ -3204,6 +3211,20 @@
delete[] buf;
}
delete loadFile;
+
+ // setup correct palette if we are in a closeup/cutaway or not.
+ if (_gameState->_inCloseUp) {
+ _gameState->_inCloseUp = false;
+ flipScreens();
+ } else if (_gameState->_inCutaway) {
+ _currentCutaway->setupPalette();
+ setupGeneralPalette();
+ } else {
+ _currentPicture->setupPalette();
+ setupGeneralPalette();
+ }
+ flushPalette();
+
return true;
}
Modified: scummvm/trunk/engines/toon/toon.h
===================================================================
--- scummvm/trunk/engines/toon/toon.h 2011-01-29 20:12:27 UTC (rev 55624)
+++ scummvm/trunk/engines/toon/toon.h 2011-01-29 20:59:46 UTC (rev 55625)
@@ -115,7 +115,7 @@
void unloadToonDat();
void setPaletteEntries(uint8 *palette, int32 offset, int32 num);
void fixPaletteEntries(uint8 *palette, int num);
- void flushPalette();
+ void flushPalette(bool deferFlushToNextRender = true);
void parseInput();
void initChapter();
void initFonts();
@@ -425,6 +425,7 @@
bool _firstFrame;
bool _isDemo;
bool _showConversationText;
+ bool _needPaletteFlush;
private:
ToonConsole *_console;
};
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