aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/akos.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/scumm/akos.cpp b/scumm/akos.cpp
index 751205f9ef..aa84edf455 100644
--- a/scumm/akos.cpp
+++ b/scumm/akos.cpp
@@ -60,7 +60,7 @@ enum AkosOpcodes {
AKC_CmdQue3 = 0xC015,
AKC_ComplexChan = 0xC020,
AKC_Unk3 = 0xC021,
- AKC_Unk2 = 0xC025,
+ AKC_ComplexChan2 = 0xC025,
AKC_Jump = 0xC030,
AKC_JumpIfSet = 0xC031,
AKC_AddVar = 0xC040,
@@ -286,7 +286,7 @@ byte AkosRenderer::drawLimb(const CostumeData &cost, int limb) {
// Code 0xC025 reads 4 bytes of extra information
- if (code != AKC_ComplexChan && code != 0xC025) {
+ if (code != AKC_ComplexChan && code != AKC_ComplexChan2) {
off = akof + (code & 0xFFF);
assert((code & 0xFFF) * 6 < READ_BE_UINT32((const byte *)akof - 4) - 8);
@@ -316,6 +316,9 @@ byte AkosRenderer::drawLimb(const CostumeData &cost, int limb) {
error("akos_drawLimb: invalid codec %d", codec);
}
} else {
+ if (code == AKC_ComplexChan2)
+ p += 4;
+
extra = p[2];
p += 3;
@@ -1170,7 +1173,7 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const
case AKC_Unk4:
curpos += 4;
break;
- case AKC_Unk2:
+ case AKC_ComplexChan2:
curpos += 4;
// Fall through
case AKC_ComplexChan:
@@ -1307,7 +1310,7 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const
case AKC_EndSeq:
case AKC_ComplexChan:
case AKC_Unk1:
- case AKC_Unk2:
+ case AKC_ComplexChan2:
case AKC_Unk3:
break;
@@ -1340,7 +1343,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 || code2 == AKC_Unk1 || code2 == AKC_Unk2);
+ assert((code2 & 0xC000) != 0xC000 || code2 == AKC_ComplexChan || code2 == AKC_Return || code2 == AKC_EndSeq || code2 == AKC_Unk1 || code2 == AKC_ComplexChan2);
a->cost.curpos[chan] = curpos;