diff options
Diffstat (limited to 'scumm/akos.cpp')
-rw-r--r-- | scumm/akos.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/scumm/akos.cpp b/scumm/akos.cpp index d3a9fdd851..f677c8ba5b 100644 --- a/scumm/akos.cpp +++ b/scumm/akos.cpp @@ -86,6 +86,7 @@ enum AkosOpcodes { AKC_Cmd3 = 0xC08B, AKC_Ignore3 = 0xC08C, AKC_Ignore2 = 0xC08D, + AKC_Unk1 = 0xC08E, AKC_SkipStart = 0xC090, AKC_SkipE = 0xC090, AKC_SkipNE = 0xC091, @@ -265,6 +266,9 @@ byte AkosRenderer::drawLimb(const CostumeData &cost, int limb) { if (_skipLimb) return 0; + if (_vm->_heversion >= 70 && cost.active[limb] == 8) + return 0; + if (!cost.active[limb] || cost.stopped & (1 << limb)) return 0; @@ -1289,6 +1293,7 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const case AKC_Return: case AKC_EndSeq: case AKC_ComplexChan: + case AKC_Unk1: break; case AKC_Cmd3: @@ -1317,7 +1322,7 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const int code2 = aksq[curpos]; if (code2 & 0x80) code2 = (code2 << 8) | aksq[curpos + 1]; - assert((code2 & 0xC000) != 0xC000 || code2 == AKC_ComplexChan || code2 == AKC_Return || code2 == AKC_EndSeq); + assert((code2 & 0xC000) != 0xC000 || code2 == AKC_ComplexChan || code2 == AKC_Return || code2 == AKC_EndSeq || code2 == AKC_Unk1); a->cost.curpos[chan] = curpos; |