aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/screen_lol.cpp
diff options
context:
space:
mode:
authorFlorian Kagerer2009-06-07 00:37:30 +0000
committerFlorian Kagerer2009-06-07 00:37:30 +0000
commit4416881c0770e4a287cc64fff5c4f91337aa0696 (patch)
treea59fef3a63b1913e4d773b70c753b25698ee88f8 /engines/kyra/screen_lol.cpp
parentf5edbba804d506941f0bf8ec44003b166ba02935 (diff)
downloadscummvm-rg350-4416881c0770e4a287cc64fff5c4f91337aa0696.tar.gz
scummvm-rg350-4416881c0770e4a287cc64fff5c4f91337aa0696.tar.bz2
scummvm-rg350-4416881c0770e4a287cc64fff5c4f91337aa0696.zip
LOL: implemented king richard healing sequence
svn-id: r41314
Diffstat (limited to 'engines/kyra/screen_lol.cpp')
-rw-r--r--engines/kyra/screen_lol.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/engines/kyra/screen_lol.cpp b/engines/kyra/screen_lol.cpp
index 5f64a1cddd..3f3aef72fe 100644
--- a/engines/kyra/screen_lol.cpp
+++ b/engines/kyra/screen_lol.cpp
@@ -934,6 +934,40 @@ bool Screen_LoL::fadePaletteStep(uint8 *pal1, uint8 *pal2, uint32 elapsedTime, u
return res;
}
+uint8 *Screen_LoL::generateFadeTable(uint8 *dst, uint8 *src1, uint8 *src2, int numTabs) {
+ if (!src1)
+ src1 = _screenPalette;
+
+ uint8 *p1 = dst;
+ uint8 *p2 = src1;
+ uint8 *p3 = src2;
+
+ for (int i = 0; i < 768; i++) {
+ int8 val = (int8)*p3++ - (int8)*p2++;
+ *dst++ = (uint8)val;
+ }
+
+ int16 t = 0;
+ int16 d = 256 / numTabs;
+
+ for (int i = 1; i < numTabs - 1; i++) {
+ p2 = src1;
+ p3 = p1;
+ t += d;
+
+ for (int ii = 0; ii < 768; ii++) {
+ int val = (((int8)*p3++ * t) >> 8) + (int8)*p2++;
+ *dst++ = (uint8)val;
+ }
+ }
+
+ memcpy(p1, src1, 768);
+ memcpy(dst, src2, 768);
+
+ dst += 768;
+ return dst;
+}
+
uint8 Screen_LoL::getShapePaletteSize(const uint8 *shp) {
return shp[10];
}