[Scummvm-cvs-logs] CVS: scummvm/simon simon.cpp,1.520.2.2,1.520.2.3
kirben
kirben at users.sourceforge.net
Fri Nov 18 15:40:09 CET 2005
Update of /cvsroot/scummvm/scummvm/simon
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29334/simon
Modified Files:
Tag: branch-0-8-0
simon.cpp
Log Message:
Palette delay at the end of Simon1 was never triggered.
Fix slowFadeIn.
Index: simon.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.cpp,v
retrieving revision 1.520.2.2
retrieving revision 1.520.2.3
diff -u -d -r1.520.2.2 -r1.520.2.3
--- simon.cpp 23 Oct 2005 13:45:10 -0000 1.520.2.2
+++ simon.cpp 18 Nov 2005 23:39:29 -0000 1.520.2.3
@@ -2548,7 +2548,7 @@
b += sizeof(ImageHeader_Simon);
}
- if (!(_game & GF_SIMON2)) {
+ if ((_game & GF_SIMON1) && vga_res_id == 16300) {
if (num == 16300) {
dx_clear_attached_from_top(134);
_usePaletteDelay = true;
@@ -3993,74 +3993,47 @@
}
void SimonEngine::realizePalette() {
- _videoVar9 = false;
- memcpy(_paletteBackup, _palette, 256 * 4);
-
if (_paletteColorCount & 0x8000) {
fadeUpPalette();
} else {
+ _videoVar9 = false;
+ memcpy(_paletteBackup, _palette, 256 * 4);
_system->setPalette(_palette, 0, _paletteColorCount);
+ _paletteColorCount = 0;
}
-
- _paletteColorCount = 0;
}
void SimonEngine::fadeUpPalette() {
- bool done;
-
- _paletteColorCount = (_paletteColorCount & 0x7fff) / 4;
-
- memset(_videoBuf1, 0, _paletteColorCount * sizeof(uint32));
-
- // This function is used by Simon 2 when riding the lion to the goblin
- // camp. Note that _paletteColorCount is not 1024 in this scene, so
- // only part of the palette is faded up. But apparently that's enough,
- // as long as we make sure that the remaining palette colours aren't
- // completely ignored.
+ uint8 paletteTmp[768];
+ uint8 *src, *dst;
+ int c, p;
- if (_paletteColorCount < _videoNumPalColors)
- memcpy(_videoBuf1 + _paletteColorCount * sizeof(uint32),
- _palette + _paletteColorCount * sizeof(uint32),
- (_videoNumPalColors - _paletteColorCount) * sizeof(uint32));
+ _paletteColorCount &= 0x7fff;
+ _videoVar9 = false;
- do {
- uint8 *src;
- byte *dst;
- int i;
+ memcpy(_videoBuf1, _palette, 1024); // Difference
+ memset(_videoBuf1, 0, 768);
- done = true;
- src = _palette;
- dst = _videoBuf1;
+ memcpy(_paletteBackup, _palette, 768);
+ memcpy(paletteTmp, _palette, 768);
- for (i = 0; i < _paletteColorCount; i++) {
- if (src[0] > dst[0]) {
- if (dst[0] > src[0] - 4)
- dst[0] = src[0];
- else
- dst[0] += 4;
- done = false;
- }
- if (src[1] > dst[1]) {
- if (dst[1] > src[1] - 4)
- dst[1] = src[1];
- else
- dst[1] += 4;
- done = false;
- }
- if (src[2] > dst[2]) {
- if (dst[2] > src[2] - 4)
- dst[2] = src[2];
- else
- dst[2] += 4;
- done = false;
- }
- dst += 4;
- src += 4;
- }
+ for (c = 255; c > 0; c -= 4) {
+ src = paletteTmp;
+ dst = _videoBuf1;
- _system->setPalette(_videoBuf1, 0, _videoNumPalColors);
- delay(5);
- } while (!done);
+ for (p = _paletteColorCount; p !=0 ; p--) {
+ if (*src >= c)
+ *dst = *dst + 4;
+
+ src++;
+ dst++;
+ }
+ _system->setPalette(_videoBuf1, 0, _videoNumPalColors);
+ if (_fade)
+ _system->updateScreen();
+ delay(5);
+ }
+ _paletteColorCount = 0;
}
int SimonEngine::go() {
More information about the Scummvm-git-logs
mailing list