aboutsummaryrefslogtreecommitdiff
path: root/scumm/akos.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/akos.cpp')
-rw-r--r--scumm/akos.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/scumm/akos.cpp b/scumm/akos.cpp
index c84d59b30c..b004f065da 100644
--- a/scumm/akos.cpp
+++ b/scumm/akos.cpp
@@ -458,6 +458,8 @@ byte AkosRenderer::drawLimb(const Actor *a, int limb) {
_ymove -= lastDy;
}
+ uint16 shadowMask = 0;
+
if (!useCondMask || !akct) {
decflag = 1;
} else {
@@ -468,7 +470,7 @@ byte AkosRenderer::drawLimb(const Actor *a, int limb) {
uint32 type = cond & 0xC0000000;
cond &= 0x3FFFFFFF;
if (_vm->_heversion >= 95) {
-// uint16 shadowMask = cond & 0xE000;
+ shadowMask = cond & 0xE000;
cond &= ~0xE000;
}
if (_vm->_heversion >= 95 && cond == 0) {
@@ -488,6 +490,10 @@ byte AkosRenderer::drawLimb(const Actor *a, int limb) {
if (decflag == 0)
continue;
+ if (_vm->_heversion >= 95) {
+ _shadow_mode = (shadowMask) ? 3: 0;
+ }
+
switch (codec) {
case 1:
result |= codec1(xmoveCur, ymoveCur);
@@ -559,7 +565,7 @@ void AkosRenderer::codec1_genericDecode(Codec1 &v1) {
} else if (_shadow_mode == 2) {
error("codec1_spec2"); // TODO
} else if (_shadow_mode == 3) {
- if (pcolor < 8) {
+ if (_vm->_heversion >= 95 || pcolor < 8) {
pcolor = (pcolor << 8) + *dst;
pcolor = _shadow_table[pcolor];
}