aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/made/screenfx.cpp28
-rw-r--r--engines/made/screenfx.h2
2 files changed, 29 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;
diff --git a/engines/made/screenfx.h b/engines/made/screenfx.h
index e1f877b42e..f0e706318f 100644
--- a/engines/made/screenfx.h
+++ b/engines/made/screenfx.h
@@ -54,6 +54,8 @@ private:
void copyRect(Graphics::Surface *surface, int16 x1, int16 y1, int16 x2, int16 y2);
void vfx00(Graphics::Surface *surface, byte *palette, byte *newPalette, int colorCount);
void vfx09(Graphics::Surface *surface, byte *palette, byte *newPalette, int colorCount);
+ void vfx10(Graphics::Surface *surface, byte *palette, byte *newPalette, int colorCount);
+ void vfx12(Graphics::Surface *surface, byte *palette, byte *newPalette, int colorCount);
void vfx14(Graphics::Surface *surface, byte *palette, byte *newPalette, int colorCount);
void vfx17(Graphics::Surface *surface, byte *palette, byte *newPalette, int colorCount);
};