diff options
author | Benjamin Haisch | 2008-05-20 18:01:26 +0000 |
---|---|---|
committer | Benjamin Haisch | 2008-05-20 18:01:26 +0000 |
commit | eb354bbe02572ea1b18084e424be54b7ad666bfc (patch) | |
tree | 9f29e036f5373a2e891a4c8f827a68f4ff1ee751 /engines | |
parent | cc08a4953d3cf1af0146b29c63f8f72803f1ca48 (diff) | |
download | scummvm-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')
-rw-r--r-- | engines/made/screenfx.cpp | 28 | ||||
-rw-r--r-- | engines/made/screenfx.h | 2 |
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); }; |