aboutsummaryrefslogtreecommitdiff
path: root/engines/made/screenfx.cpp
diff options
context:
space:
mode:
authorBenjamin Haisch2008-05-20 18:01:26 +0000
committerBenjamin Haisch2008-05-20 18:01:26 +0000
commiteb354bbe02572ea1b18084e424be54b7ad666bfc (patch)
tree9f29e036f5373a2e891a4c8f827a68f4ff1ee751 /engines/made/screenfx.cpp
parentcc08a4953d3cf1af0146b29c63f8f72803f1ca48 (diff)
downloadscummvm-rg350-eb354bbe02572ea1b18084e424be54b7ad666bfc.tar.gz
scummvm-rg350-eb354bbe02572ea1b18084e424be54b7ad666bfc.tar.bz2
scummvm-rg350-eb354bbe02572ea1b18084e424be54b7ad666bfc.zip
Implemented visual effects 10 and 12
svn-id: r32196
Diffstat (limited to 'engines/made/screenfx.cpp')
-rw-r--r--engines/made/screenfx.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/engines/made/screenfx.cpp b/engines/made/screenfx.cpp
index 532ac806e3..f573c13852 100644
--- a/engines/made/screenfx.cpp
+++ b/engines/made/screenfx.cpp
@@ -68,6 +68,14 @@ void ScreenEffects::run(int16 effectNum, Graphics::Surface *surface, byte *palet
vfx09(surface, palette, newPalette, colorCount);
break;
+ case 10:
+ vfx10(surface, palette, newPalette, colorCount);
+ break;
+
+ case 12:
+ vfx12(surface, palette, newPalette, colorCount);
+ break;
+
case 14: // "Screen open" effect
vfx14(surface, palette, newPalette, colorCount);
break;
@@ -108,7 +116,7 @@ void ScreenEffects::setBlendedPalette(byte *palette, byte *newPalette, int color
if (!_screen->isPaletteLocked()) {
int32 mulValue = (value * 64) / maxValue;
for (int i = 0; i < colorCount * 3; i++)
- _fxPalette[i] = newPalette[i] - (newPalette[i] - palette[i]) * mulValue / 64;
+ _fxPalette[i] = CLIP(newPalette[i] - (newPalette[i] - palette[i]) * mulValue / 64, 0, 255);
_screen->setRGBPalette(_fxPalette, 0, 256);
}
}
@@ -207,6 +215,24 @@ void ScreenEffects::vfx09(Graphics::Surface *surface, byte *palette, byte *newPa
setPalette(palette);
}
+void ScreenEffects::vfx10(Graphics::Surface *surface, byte *palette, byte *newPalette, int colorCount) {
+ for (int x = -56; x < 312; x += 8) {
+ copyRect(surface, x, 0, x + 64, 200);
+ setBlendedPalette(palette, newPalette, colorCount, x + 56, 368);
+ _screen->updateScreenAndWait(25);
+ }
+ setPalette(palette);
+}
+
+void ScreenEffects::vfx12(Graphics::Surface *surface, byte *palette, byte *newPalette, int colorCount) {
+ for (int y = -70; y < 312; y += 10) {
+ copyRect(surface, 0, y, 320, y + 80);
+ setBlendedPalette(palette, newPalette, colorCount, y + 70, 260);
+ _screen->updateScreenAndWait(25);
+ }
+ setPalette(palette);
+}
+
// "Screen open" effect
void ScreenEffects::vfx14(Graphics::Surface *surface, byte *palette, byte *newPalette, int colorCount) {
int16 x = 8, y = 5;