aboutsummaryrefslogtreecommitdiff
path: root/scumm/akos.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/akos.cpp')
-rw-r--r--scumm/akos.cpp41
1 files changed, 39 insertions, 2 deletions
diff --git a/scumm/akos.cpp b/scumm/akos.cpp
index 8c165453e3..b48f46ab01 100644
--- a/scumm/akos.cpp
+++ b/scumm/akos.cpp
@@ -70,6 +70,10 @@ enum AkosOpcodes {
AKC_AddVar = 0xC040,
AKC_C042 = 0xC042,
AKC_C044 = 0xC044,
+ AKC_C045 = 0xC045,
+ AKC_C046 = 0xC046,
+ AKC_C047 = 0xC047,
+ AKC_C048 = 0xC048,
AKC_Ignore = 0xC050,
AKC_IncVar = 0xC060,
AKC_CmdQue3Quick = 0xC061,
@@ -107,6 +111,10 @@ enum AkosOpcodes {
AKC_C0A1 = 0xC0A1,
AKC_C0A2 = 0xC0A2,
AKC_C0A3 = 0xC0A3,
+ AKC_C0A4 = 0xC0A4,
+ AKC_C0A5 = 0xC0A5,
+ AKC_C0A6 = 0xC0A6,
+ AKC_C0A7 = 0xC0A7,
AKC_EndSeq = 0xC0FF
};
@@ -1127,13 +1135,14 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const
byte active;
uint old_curpos, curpos, end;
uint code;
- bool flag_value;
+ bool flag_value, needRedraw;
int tmp, tmp2;
active = a->cost.active[chan];
end = a->cost.end[chan];
old_curpos = curpos = a->cost.curpos[chan];
flag_value = false;
+ needRedraw = false;
do {
@@ -1221,6 +1230,11 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const
}
break;
case AKC_C021:
+ case AKC_C045:
+ case AKC_C046:
+ case AKC_C047:
+ case AKC_C048:
+ needRedraw = 1;
curpos += aksq[curpos + 2];
break;
default:
@@ -1348,7 +1362,10 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const
case AKC_ComplexChan:
case AKC_C08E:
case AKC_ComplexChan2:
+ break;
+
case AKC_C021:
+ needRedraw = 1;
break;
case AKC_Cmd3:
@@ -1415,6 +1432,23 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const
case AKC_C044:
akos_queCommand(3, a, a->sound[a->getAnimVar(GB(2))], 0);
continue;
+
+ case AKC_C045:
+ //actorSetUserCondition(a, GB(3), a->getAnimVar(GB(4)));
+ continue;
+
+ case AKC_C046:
+ //a->setAnimVar(GB(4), actorIsUserConditionSet(a, GB(3)));
+ continue;
+
+ case AKC_C047:
+ //actorSetTalkCondition(a, GB(3));
+ continue;
+
+ case AKC_C048:
+ //a->setAnimVar(GB(4), actorIsTalkConditionSet(a, GB(3)));
+ continue;
+
default:
if ((code & 0xC000) == 0xC000)
error("Undefined uSweat token %X", code);
@@ -1429,7 +1463,10 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const
a->cost.curpos[chan] = curpos;
- return curpos != old_curpos;
+ if (needRedraw)
+ return 1;
+ else
+ return curpos != old_curpos;
}
void ScummEngine::akos_queCommand(byte cmd, Actor *a, int param_1, int param_2) {