[Scummvm-git-logs] scummvm master -> 8f744954c345cc980e6e07220acc30b5466d5493

AndywinXp noreply at scummvm.org
Mon Sep 26 22:14:33 UTC 2022


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
8f744954c3 JANITORIAL: SCUMM: Improve readability of AKOS code


Commit: 8f744954c345cc980e6e07220acc30b5466d5493
    https://github.com/scummvm/scummvm/commit/8f744954c345cc980e6e07220acc30b5466d5493
Author: AndywinXp (andywinxp at gmail.com)
Date: 2022-09-27T00:14:26+02:00

Commit Message:
JANITORIAL: SCUMM: Improve readability of AKOS code

This is part of an on-going effort on my end to document the AKOS code, and fix strange stuff
such as integers being used as booleans, and variable_names instead of variableNames

Changed paths:
    engines/scumm/actor.cpp
    engines/scumm/actor.h
    engines/scumm/akos.cpp
    engines/scumm/akos.h
    engines/scumm/costume.cpp
    engines/scumm/debugger.cpp


diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp
index a15026af314..6ff20197e51 100644
--- a/engines/scumm/actor.cpp
+++ b/engines/scumm/actor.cpp
@@ -2674,7 +2674,7 @@ void Actor_v0::limbFrameCheck(int limb) {
 	_limbFrameRepeat[limb] = _limbFrameRepeatNew[limb];
 
 	// 0x25C3
-	_cost.active[limb] = ((V0CostumeLoader *)_vm->_costumeLoader)->getFrame(this, limb);
+	_cost.animType[limb] = ((V0CostumeLoader *)_vm->_costumeLoader)->getFrame(this, limb);
 	_cost.curpos[limb] = 0;
 
 	_needRedraw = true;
@@ -2734,7 +2734,7 @@ void Actor::animateLimb(int limb, int f) {
 		size = _vm->getResourceDataSize(akfo) / 2;
 
 		while (f--) {
-			if (_cost.active[limb] != 0)
+			if (_cost.animType[limb] != AKAT_Empty)
 				((ScummEngine_v6 *)_vm)->akos_increaseAnim(this, limb, aksq, (const uint16 *)akfo, size);
 		}
 
@@ -3816,7 +3816,7 @@ void Actor::saveLoadWithSerializer(Common::Serializer &s) {
 	s.syncAsUint16LE(_walkdata.point3.x, VER(42));
 	s.syncAsUint16LE(_walkdata.point3.y, VER(42));
 
-	s.syncBytes(_cost.active, 16, VER(8));
+	s.syncBytes(_cost.animType, 16, VER(8));
 	s.syncAsUint16LE(_cost.stopped, VER(8));
 	s.syncArray(_cost.curpos, 16, Common::Serializer::Uint16LE, VER(8));
 	s.syncArray(_cost.start, 16, Common::Serializer::Uint16LE, VER(8));
diff --git a/engines/scumm/actor.h b/engines/scumm/actor.h
index f5ad06c0750..72a8a12152c 100644
--- a/engines/scumm/actor.h
+++ b/engines/scumm/actor.h
@@ -27,7 +27,6 @@
 #include "common/serializer.h"
 #include "scumm/scumm.h"
 
-
 namespace Scumm {
 
 enum {
@@ -47,7 +46,7 @@ enum MoveFlags {
 };
 
 struct CostumeData {
-	byte active[16];
+	byte animType[16];
 	uint16 animCounter;
 	byte soundCounter;
 	byte soundPos;
@@ -65,7 +64,7 @@ struct CostumeData {
 	void reset() {
 		stopped = 0;
 		for (int i = 0; i < 16; i++) {
-			active[i] = 0;
+			animType[i] = 0; // AKAT_Empty
 			curpos[i] = start[i] = end[i] = frame[i] = 0xFFFF;
 		}
 	}
diff --git a/engines/scumm/akos.cpp b/engines/scumm/akos.cpp
index 51c60be5983..ecf3949054f 100644
--- a/engines/scumm/akos.cpp
+++ b/engines/scumm/akos.cpp
@@ -52,20 +52,28 @@ struct AkosOffset {
 #include "common/pack-end.h"	// END STRUCT PACKING
 
 
-static bool akos_compare(int a, int b, byte cmd) {
+static bool akosCompare(int a, int b, byte cmd) {
 	switch (cmd) {
-	case 0:
+	case AKC_IfVarEQJump:
+	case AKC_IfVarEQDo:
 		return a == b;
-	case 1:
+	case AKC_IfVarNEJump:
+	case AKC_IfVarNEDo:
 		return a != b;
-	case 2:
+	case AKC_IfVarLTJump:
+	case AKC_IfVarLTDo:
 		return a < b;
-	case 3:
+	case AKC_IfVarLEJump:
+	case AKC_IfVarLEDo:
 		return a <= b;
-	case 4:
+	case AKC_IfVarGTJump:
+	case AKC_IfVarGTDo:
 		return a > b;
-	default:
+	case AKC_IfVarGEJump:
+	case AKC_IfVarGEDo:
 		return a >= b;
+	default:
+		return false;
 	}
 }
 
@@ -120,15 +128,15 @@ void AkosCostumeLoader::costumeDecodeData(Actor *a, int frame, uint usemask) {
 	i = 0;
 	mask = READ_LE_UINT16(r); r += 2;
 	do {
-		if (mask & 0x8000) {
+		if (mask & AKC_ExtendWordBit) {
 			const uint8 *akst = akstPtr;
 			const uint8 *aksf = aksfPtr;
 
 			code = *r++;
-			if (usemask & 0x8000) {
+			if (usemask & AKC_ExtendWordBit) {
 				switch (code) {
 				case 1:
-					a->_cost.active[i] = 0;
+					a->_cost.animType[i] = AKAT_Empty;
 					a->_cost.frame[i] = frame;
 					a->_cost.end[i] = 0;
 					a->_cost.start[i] = 0;
@@ -184,7 +192,7 @@ void AkosCostumeLoader::costumeDecodeData(Actor *a, int frame, uint usemask) {
 						}
 					}
 
-					a->_cost.active[i] = code;
+					a->_cost.animType[i] = code;
 					a->_cost.frame[i] = frame;
 					a->_cost.end[i] = start + len;
 					a->_cost.start[i] = start;
@@ -318,17 +326,17 @@ byte AkosRenderer::drawLimb(const Actor *a, int limb) {
 	if (_skipLimbs)
 		return 0;
 
-	if (_vm->_game.heversion >= 70 && cost.active[limb] == 8)
+	if (_vm->_game.heversion >= 70 && cost.animType[limb] == AKAT_DeltaAnim)
 		return 0;
 
-	if (!cost.active[limb] || cost.stopped & (1 << limb))
+	if (!cost.animType[limb] || cost.stopped & (1 << limb))
 		return 0;
 
 	useCondMask = false;
 	p = aksq + cost.curpos[limb];
 
 	code = p[0];
-	if (code & 0x80)
+	if (code & AKC_ExtendBit)
 		code = READ_BE_UINT16(p);
 
 	if (_vm->_game.heversion >= 90)
@@ -368,13 +376,13 @@ byte AkosRenderer::drawLimb(const Actor *a, int limb) {
 		_ymove -= (int16)READ_LE_UINT16(&costumeInfo->move_y);
 
 		switch (_codec) {
-		case 1:
+		case AKOS_BYLE_RLE_CODEC:
 			result |= codec1(xmoveCur, ymoveCur);
 			break;
-		case 5:
+		case AKOS_CDAT_RLE_CODEC:
 			result |= codec5(xmoveCur, ymoveCur);
 			break;
-		case 16:
+		case AKOS_RUN_MAJMIN_CODEC:
 			result |= codec16(xmoveCur, ymoveCur);
 			break;
 		default:
@@ -393,7 +401,7 @@ byte AkosRenderer::drawLimb(const Actor *a, int limb) {
 
 		for (i = 0; i != extra; i++) {
 			code = p[4];
-			if (code & 0x80)
+			if (code & AKC_ExtendBit)
 				code = READ_BE_UINT16(p + 4);
 			off = akof + (code & 0xFFF);
 
@@ -438,7 +446,7 @@ byte AkosRenderer::drawLimb(const Actor *a, int limb) {
 				}
 			}
 
-			p += (p[4] & 0x80) ? 6 : 5;
+			p += (p[4] & AKC_ExtendBit) ? 6 : 5;
 
 			if (decflag == 0)
 				continue;
@@ -446,21 +454,21 @@ byte AkosRenderer::drawLimb(const Actor *a, int limb) {
 			if (_vm->_game.heversion >= 90) {
 				if (_vm->_game.heversion >= 99)
 					_shadow_mode = 0;
-				if (xmap && (shadowMask & 0x8000))
+				if (xmap && (shadowMask & AKC_ExtendWordBit))
 					_shadow_mode = 3;
 			}
 
 			switch (_codec) {
-			case 1:
+			case AKOS_BYLE_RLE_CODEC:
 				result |= codec1(xmoveCur, ymoveCur);
 				break;
-			case 5:
+			case AKOS_CDAT_RLE_CODEC:
 				result |= codec5(xmoveCur, ymoveCur);
 				break;
-			case 16:
+			case AKOS_RUN_MAJMIN_CODEC:
 				result |= codec16(xmoveCur, ymoveCur);
 				break;
-			case 32:
+			case AKOS_TRLE_CODEC:
 				result |= codec32(xmoveCur, ymoveCur);
 				break;
 			default:
@@ -1291,7 +1299,6 @@ byte AkosCostumeLoader::increaseAnims(Actor *a) {
 
 bool ScummEngine_v6::akos_increaseAnims(const byte *akos, Actor *a) {
 	const byte *aksq, *akfo;
-	int i;
 	uint size;
 	bool result;
 
@@ -1301,35 +1308,35 @@ bool ScummEngine_v6::akos_increaseAnims(const byte *akos, Actor *a) {
 	size = getResourceDataSize(akfo) / 2;
 
 	result = false;
-	for (i = 0; i < 16; i++) {
-		if (a->_cost.active[i] != 0)
+	for (int i = 0; i < 16; i++) {
+		if (a->_cost.animType[i] != AKAT_Empty)
 			result |= akos_increaseAnim(a, i, aksq, (const uint16 *)akfo, size);
 	}
 	return result;
 }
 
 bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const uint16 *akfo, int numakfo) {
-	byte active;
-	uint old_curpos, curpos, end;
+	byte animType;
+	uint startState, curState, endState;
 	uint code;
 	bool skipNextState, needRedraw;
-	int tmp, tmp2;
+	int counter, tmp2;
 
-	active = a->_cost.active[chan];
-	end = a->_cost.end[chan];
-	old_curpos = curpos = a->_cost.curpos[chan];
+	animType = a->_cost.animType[chan];
+	endState = a->_cost.end[chan];
+	startState = curState = a->_cost.curpos[chan];
 	skipNextState = false;
 	needRedraw = false;
 
 	do {
 
-		code = aksq[curpos];
-		if (code & 0x80)
-			code = READ_BE_UINT16(aksq + curpos);
+		code = aksq[curState];
+		if (code & AKC_ExtendBit)
+			code = READ_BE_UINT16(aksq + curState);
 
-		switch (active) {
-		case 6:
-		case 8:
+		switch (animType) {
+		case AKAT_AlwaysRun:
+		case AKAT_DeltaAnim:
 			switch (code) {
 			case AKC_IfVarGoTo:
 			case AKC_AddVar:
@@ -1345,7 +1352,7 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 			case AKC_IfNotSoundInVarRunningGoTo:
 			case AKC_IfSoundRunningGoTo:
 			case AKC_IfNotSoundRunningGoTo:
-				curpos += 5;
+				curState += 5;
 				break;
 			case AKC_JumpToOffsetInVar:
 			case AKC_SetActorZClipping:
@@ -1358,18 +1365,18 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 			case AKC_SoftSound:
 			case AKC_SoftVarSound:
 			case AKC_StartTalkieInVar:
-				curpos += 3;
+				curState += 3;
 				break;
 			case AKC_SoundStuff:
 				if (_game.heversion >= 61)
-					curpos += 6;
+					curState += 6;
 				else
-					curpos += 8;
+					curState += 8;
 				break;
 			case AKC_StartActionOn:
 			case AKC_SetActorVar:
 			case AKC_SetDrawOffs:
-				curpos += 6;
+				curState += 6;
 				break;
 			case AKC_EndOfIfDo:
 			case AKC_HideActor:
@@ -1377,7 +1384,7 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 			case AKC_StartSound_SpecialCase:
 			case AKC_EmptyCel:
 			case AKC_EndSeq:
-				curpos += 2;
+				curState += 2;
 				break;
 			case AKC_IfVarGEJump:
 			case AKC_IfVarGTJump:
@@ -1386,7 +1393,7 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 			case AKC_IfVarNEJump:
 			case AKC_IfVarEQJump:
 			case AKC_SetVarRandom:
-				curpos += 7;
+				curState += 7;
 				break;
 			case AKC_Flip:
 			case AKC_GoToState:
@@ -1394,17 +1401,17 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 			case AKC_StartActorTalkie:
 			case AKC_IfTalkingGoTo:
 			case AKC_IfNotTalkingGoTo:
-				curpos += 4;
+				curState += 4;
 				break;
 			case AKC_RelativeOffsetDrawMany:
-				curpos += 4;
+				curState += 4;
 				// Fall through
 			case AKC_DrawMany:
-				curpos += 3;
-				tmp = aksq[curpos - 1];
-				while (--tmp >= 0) {
-					curpos += 4;
-					curpos += (aksq[curpos] & 0x80) ? 2 : 1;
+				curState += 3;
+				counter = aksq[curState - 1];
+				while (--counter >= 0) {
+					curState += 4;
+					curState += (aksq[curState] & AKC_ExtendBit) ? 2 : 1;
 				}
 				break;
 			case AKC_CondDrawMany:
@@ -1413,34 +1420,37 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 			case AKC_SetVarToUserCondition:
 			case AKC_SetTalkCondition:
 			case AKC_SetVarToTalkCondition:
-				needRedraw = 1;
-				curpos += aksq[curpos + 2];
+				needRedraw = true;
+				curState += aksq[curState + 2];
 				break;
 			case AKC_DisplayAuxFrame:
 				akos_queCommand(7, a, GW(2), 0);
-				curpos += 4;
+				curState += 4;
 				break;
 			default:
-				curpos += (code & 0x8000) ? 2 : 1;
+				curState += (code & AKC_ExtendWordBit) ? 2 : 1;
 				break;
 			}
 			break;
-		case 2:
-			curpos += (code & 0x8000) ? 2 : 1;
-			if (curpos > end)
-				curpos = a->_cost.start[chan];
+		case AKAT_LoopLayer:
+			curState += (code & AKC_ExtendWordBit) ? 2 : 1;
+			if (curState > endState)
+				curState = a->_cost.start[chan];
 			break;
-		case 3:
-			if (curpos != end)
-				curpos += (code & 0x8000) ? 2 : 1;
+		case AKAT_RunLayer:
+			if (curState != endState)
+				curState += (code & AKC_ExtendWordBit) ? 2 : 1;
+			break;
+		case AKAT_UserConstant:
+			// Script controlled animation: do nothing
 			break;
 		default:
 			break;
 		}
 
-		code = aksq[curpos];
-		if (code & 0x80)
-			code = READ_BE_UINT16(aksq + curpos);
+		code = aksq[curState];
+		if (code & AKC_ExtendBit)
+			code = READ_BE_UINT16(aksq + curState);
 
 		if (skipNextState && code != AKC_EndOfIfDo)
 			continue;
@@ -1459,8 +1469,8 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 		case AKC_IfVarLTJump:
 		case AKC_IfVarNEJump:
 		case AKC_IfVarEQJump:
-			if (akos_compare(a->getAnimVar(GB(4)), GW(5), code - AKC_ConditionalJumpStart) != 0) {
-				curpos = GUW(2);
+			if (akosCompare(a->getAnimVar(GB(4)), GW(5), code)) {
+				curState = GUW(2);
 				break;
 			}
 			continue;
@@ -1478,11 +1488,11 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 			continue;
 		case AKC_StartSound:
 			if (_game.heversion >= 61)
-				tmp = GB(2);
+				counter = GB(2);
 			else
-				tmp = GB(2) - 1;
-			if ((uint) tmp < 24)
-				akos_queCommand(3, a, a->_sound[tmp], 0);
+				counter = GB(2) - 1;
+			if ((uint) counter < 24)
+				akos_queCommand(3, a, a->_sound[counter], 0);
 			continue;
 		case AKC_StartSound_SpecialCase:
 			akos_queCommand(3, a, a->_sound[0], 0);
@@ -1505,13 +1515,13 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 		case AKC_SoundStuff:
 			if (_game.heversion >= 61)
 				continue;
-			tmp = GB(2) - 1;
-			if (tmp >= 8)
+			counter = GB(2) - 1;
+			if (counter >= 8)
 				continue;
 			tmp2 = GB(4);
 			if (tmp2 < 1 || tmp2 > 3)
 				error("akos_increaseAnim:8 invalid code %d", tmp2);
-			akos_queCommand(tmp2 + 6, a, a->_sound[tmp], GB(6));
+			akos_queCommand(tmp2 + 6, a, a->_sound[counter], GB(6));
 			continue;
 		case AKC_SetDrawOffs:
 			akos_queCommand(6, a, GW(2), GW(4));
@@ -1519,22 +1529,22 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 		case AKC_JumpToOffsetInVar:
 			if (akfo == nullptr)
 				error("akos_increaseAnim: no AKFO table");
-			tmp = a->getAnimVar(GB(2)) - 1;
+			counter = a->getAnimVar(GB(2)) - 1;
 			if (_game.heversion >= 80) {
-				if (tmp < 0 || tmp > a->_cost.heJumpCountTable[chan] - 1)
-					error("akos_increaseAnim: invalid jump value %d", tmp);
-				curpos = READ_LE_UINT16(akfo + a->_cost.heJumpOffsetTable[chan] + tmp * 2);
+				if (counter < 0 || counter > a->_cost.heJumpCountTable[chan] - 1)
+					error("akos_increaseAnim: invalid jump value %d", counter);
+				curState = READ_LE_UINT16(akfo + a->_cost.heJumpOffsetTable[chan] + counter * 2);
 			} else {
-				if (tmp < 0 || tmp > numakfo - 1)
-					error("akos_increaseAnim: invalid jump value %d", tmp);
-				curpos = READ_LE_UINT16(&akfo[tmp]);
+				if (counter < 0 || counter > numakfo - 1)
+					error("akos_increaseAnim: invalid jump value %d", counter);
+				curState = READ_LE_UINT16(&akfo[counter]);
 			}
 			break;
 		case AKC_IfVarGoTo:
 			if (!a->getAnimVar(GB(4)))
 				continue;
 			a->setAnimVar(GB(4), 0);
-			curpos = GUW(2);
+			curState = GUW(2);
 			break;
 
 		case AKC_EndOfIfDo:
@@ -1542,15 +1552,15 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 			continue;
 
 		case AKC_GoToState:
-			curpos = GUW(2);
+			curState = GUW(2);
 
 			// WORKAROUND bug #3813: In the German version of SPY Fox 3: Operation Ozone
 			// the wig maker room 21 contains a costume animation 352 of an LED ticker
 			// with a jump to an erroneous position 846.
 			// To prevent an undefined 'uSweat token' the animation is reset to its start.
 			if (_game.id == GID_HEGAME && _language == Common::DE_DEU && \
-			    _currentRoom == 21 && a->_costume == 352 && curpos == 846) {
-				curpos = a->_cost.start[chan];
+			    _currentRoom == 21 && a->_costume == 352 && curState == 846) {
+				curState = a->_cost.start[chan];
 			}
 			break;
 
@@ -1563,7 +1573,7 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 
 		case AKC_CondDrawMany:
 		case AKC_CondRelativeOffsetDrawMany:
-			needRedraw = 1;
+			needRedraw = true;
 			break;
 
 		case AKC_StartActionOn:
@@ -1582,30 +1592,30 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 		case AKC_IfVarLEDo:
 		case AKC_IfVarGTDo:
 		case AKC_IfVarGEDo:
-			if (akos_compare(a->getAnimVar(GB(4)), GW(2), code - AKC_ConditionalDoStart) == 0)
+			if (!akosCompare(a->getAnimVar(GB(4)), GW(2), code))
 				skipNextState = true;
 			continue;
 		case AKC_IfSoundInVarRunningGoTo:
 			if (_sound->isSoundRunning( a->_sound[a->getAnimVar(GB(4))]))  {
-				curpos = GUW(2);
+				curState = GUW(2);
 				break;
 			}
 			continue;
 		case AKC_IfNotSoundInVarRunningGoTo:
 			if (!_sound->isSoundRunning(a->_sound[a->getAnimVar(GB(4))])) {
-				curpos = GUW(2);
+				curState = GUW(2);
 				break;
 			}
 			continue;
 		case AKC_IfSoundRunningGoTo:
 			if (_sound->isSoundRunning(a->_sound[GB(4)])) {
-				curpos = GUW(2);
+				curState = GUW(2);
 				break;
 			}
 			continue;
 		case AKC_IfNotSoundRunningGoTo:
 			if (!_sound->isSoundRunning(a->_sound[GB(4)])) {
-				curpos = GUW(2);
+				curState = GUW(2);
 				break;
 			}
 			continue;
@@ -1632,13 +1642,13 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 			continue;
 		case AKC_IfTalkingGoTo:
 			if (((ActorHE *)a)->_heTalking != 0) {
-				curpos = GUW(2);
+				curState = GUW(2);
 				break;
 			}
 			continue;
 		case AKC_IfNotTalkingGoTo:
 			if (((ActorHE *)a)->_heTalking == 0) {
-				curpos = GUW(2);
+				curState = GUW(2);
 				break;
 			}
 			continue;
@@ -1647,36 +1657,36 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
 			continue;
 		case AKC_IfAnyTalkingGoTo:
 			if (VAR(VAR_TALK_ACTOR) != 0) {
-				curpos = GUW(2);
+				curState = GUW(2);
 				break;
 			}
 			continue;
 		case AKC_IfNotAnyTalkingGoTo:
 			if (VAR(VAR_TALK_ACTOR) == 0) {
-				curpos = GUW(2);
+				curState = GUW(2);
 				break;
 			}
 			continue;
 		default:
-			if ((code & 0xC000) == 0xC000)
+			if ((code & AKC_CommandMask) == AKC_CommandMask)
 				error("Undefined uSweat token %X", code);
 		}
 		break;
-	} while (1);
+	} while (true);
 
-	int code2 = aksq[curpos];
-	if (code2 & 0x80)
-		code2 = READ_BE_UINT16(aksq + curpos);
+	int code2 = aksq[curState];
+	if (code2 & AKC_ExtendBit)
+		code2 = READ_BE_UINT16(aksq + curState);
 
-	if ((code2 & 0xC000) == 0xC000 && code2 != AKC_DrawMany && code2 != AKC_EmptyCel && code2 != AKC_EndSeq && code2 != AKC_DisplayAuxFrame && code2 != AKC_RelativeOffsetDrawMany && code2 != AKC_CondDrawMany && code2 != AKC_CondRelativeOffsetDrawMany)
+	if ((code2 & AKC_CommandMask) == AKC_CommandMask && code2 != AKC_DrawMany && code2 != AKC_EmptyCel && code2 != AKC_EndSeq && code2 != AKC_DisplayAuxFrame && code2 != AKC_RelativeOffsetDrawMany && code2 != AKC_CondDrawMany && code2 != AKC_CondRelativeOffsetDrawMany)
 		error("Ending with undefined uSweat token %X", code2);
 
-	a->_cost.curpos[chan] = curpos;
+	a->_cost.curpos[chan] = curState;
 
 	if (needRedraw)
-		return 1;
+		return true;
 	else
-		return curpos != old_curpos;
+		return curState != startState;
 }
 
 void ScummEngine_v6::akos_queCommand(byte cmd, Actor *a, int param_1, int param_2) {
@@ -1703,29 +1713,29 @@ void ScummEngine_v6::akos_processQueue() {
 		Actor *a = derefActor(actor, "akos_processQueue");
 
 		switch (cmd) {
-		case 1:
+		case AKQC_PutActorInTheVoid:
 			a->putActor(0, 0, 0);
 			break;
-		case 3:
+		case AKQC_StartSound:
 			_sound->addSoundToQueue(param_1, 0, -1, 0);
 			break;
-		case 4:
+		case AKQC_StartAnimation:
 			a->startAnimActor(param_1);
 			break;
-		case 5:
+		case AKQC_SetZClipping:
 			a->_forceClip = param_1;
 			break;
-		case 6:
+		case AKQC_SetXYOffset:
 			a->_heOffsX = param_1;
 			a->_heOffsY = param_2;
 			break;
-		case 7:
+		case AKQC_DisplayAuxFrame:
 #ifdef ENABLE_HE
 			assert(_game.heversion >= 71);
 			((ScummEngine_v71he *)this)->queueAuxEntry(a->_number, param_1);
 #endif
 			break;
-		case 8:
+		case AKQC_StartTalkie:
 			_actorToPrintStrFor = a->_number;
 
 			a->_talkPosX = ((ActorHE *)a)->_heTalkQueue[param_1].posX;
@@ -1737,7 +1747,7 @@ void ScummEngine_v6::akos_processQueue() {
 			actorTalk(((ActorHE *)a)->_heTalkQueue[param_1].sentence);
 
 			break;
-		case 9:
+		case AKQC_SoftStartSound:
 			_sound->addSoundToQueue(param_1, 0, -1, 4);
 			break;
 		default:
@@ -1768,41 +1778,41 @@ void ScummEngine_v7::akos_processQueue() {
 		Actor *a = derefActor(actor, "akos_processQueue");
 
 		switch (cmd) {
-		case 1:
+		case AKQC_PutActorInTheVoid:
 			a->putActor(0, 0, 0);
 			break;
-		case 3:
+		case AKQC_StartSound:
 			if (param_1 != 0) {
 				if (_imuseDigital) {
 					_imuseDigital->startSfx(param_1, 63);
 				}
 			}
 			break;
-		case 4:
+		case AKQC_StartAnimation:
 			a->startAnimActor(param_1);
 			break;
-		case 5:
+		case AKQC_SetZClipping:
 			a->_forceClip = param_1;
 			break;
-		case 6:
+		case AKQC_SetXYOffset:
 			a->_heOffsX = param_1;
 			a->_heOffsY = param_2;
 			break;
-		case 7:
+		case AKQC_SetSoundVolume:
 			if (param_1 != 0) {
 				if (_imuseDigital) {
 					_imuseDigital->setVolume(param_1, param_2);
 				}
 			}
 			break;
-		case 8:
+		case AKQC_SetSoundPan:
 			if (param_1 != 0) {
 				if (_imuseDigital) {
 					_imuseDigital->setPan(param_1, param_2);
 				}
 			}
 			break;
-		case 9:
+		case AKQC_SetSoundPriority:
 			if (param_1 != 0) {
 				if (_imuseDigital) {
 					_imuseDigital->setPriority(param_1, param_2);
diff --git a/engines/scumm/akos.h b/engines/scumm/akos.h
index 64932335bb7..873d6d2e8b4 100644
--- a/engines/scumm/akos.h
+++ b/engines/scumm/akos.h
@@ -26,6 +26,11 @@
 
 namespace Scumm {
 
+#define AKOS_BYLE_RLE_CODEC   1
+#define AKOS_CDAT_RLE_CODEC   5
+#define AKOS_RUN_MAJMIN_CODEC 16
+#define AKOS_TRLE_CODEC       32
+
 struct CostumeData;
 struct AkosHeader;
 struct AkosOffset;
@@ -123,74 +128,117 @@ protected:
 	void markRectAsDirty(Common::Rect rect);
 };
 
-enum AkosOpcodes {
-	AKC_EmptyCel = 0xC001,
-	AKC_SetVar = 0xC010,
-	AKC_StartSound = 0xC015,
-	AKC_IfSoundInVarRunningGoTo = 0xC016,
-	AKC_IfNotSoundInVarRunningGoTo = 0xC017,
-	AKC_IfSoundRunningGoTo = 0xC018,
-	AKC_IfNotSoundRunningGoTo = 0xC019,
-	AKC_DrawMany = 0xC020,
-	AKC_CondDrawMany = 0xC021,
-	AKC_CondRelativeOffsetDrawMany = 0xC022,
-	AKC_RelativeOffsetDrawMany = 0xC025,
-	AKC_GoToState = 0xC030,
-	AKC_IfVarGoTo = 0xC031,
-	AKC_AddVar = 0xC040,
-	AKC_SoftSound = 0xC042,
-	AKC_SoftVarSound = 0xC044,
-	AKC_SetUserCondition = 0xC045,
-	AKC_SetVarToUserCondition = 0xC046,
-	AKC_SetTalkCondition = 0xC047,
-	AKC_SetVarToTalkCondition = 0xC048,
-	AKC_StartScript = 0xC050,
-	AKC_IncVar = 0xC060,
-	AKC_StartSound_SpecialCase = 0xC061,
-	AKC_ConditionalJumpStart = 0xC070,
-	AKC_IfVarEQJump = 0xC070,
-	AKC_IfVarNEJump = 0xC071,
-	AKC_IfVarLTJump = 0xC072,
-	AKC_IfVarLEJump = 0xC073,
-	AKC_IfVarGTJump = 0xC074,
-	AKC_IfVarGEJump = 0xC075,
-	AKC_StartAnim = 0xC080,
-	AKC_StartVarAnim = 0xC081,
-	AKC_SetVarRandom = 0xC082,
-	AKC_SetActorZClipping = 0xC083,
-	AKC_StartActorAnim = 0xC084,
-	AKC_SetActorVar = 0xC085,
-	AKC_HideActor = 0xC086,
-	AKC_SetDrawOffs = 0xC087,
-	AKC_JumpToOffsetInVar = 0xC088,
-	AKC_SoundStuff = 0xC089,
-	AKC_Flip = 0xC08A,
-	AKC_StartActionOn = 0xC08B,
-	AKC_StartScriptVar = 0xC08C,
-	AKC_StartSoundVar = 0xC08D,
-	AKC_DisplayAuxFrame = 0xC08E,
-	AKC_ConditionalDoStart = 0xC090,
-	AKC_IfVarEQDo = 0xC090,
-	AKC_IfVarNEDo = 0xC091,
-	AKC_IfVarLTDo = 0xC092,
-	AKC_IfVarLEDo = 0xC093,
-	AKC_IfVarGTDo = 0xC094,
-	AKC_IfVarGEDo = 0xC095,
-	AKC_EndOfIfDo = 0xC09F,
-	AKC_StartActorTalkie = 0xC0A0,
-	AKC_IfTalkingGoTo = 0xC0A1,
-	AKC_IfNotTalkingGoTo = 0xC0A2,
-	AKC_StartTalkieInVar = 0xC0A3,
-	AKC_IfAnyTalkingGoTo = 0xC0A4,
-	AKC_IfNotAnyTalkingGoTo = 0xC0A5,
-	AKC_IfTalkingPickGoTo = 0xC0A6,
-	AKC_IfNotTalkingPickGoTo = 0xC0A7,
-	AKC_EndSeq = 0xC0FF
+enum AkosSequenceCodes {
+	// Auxiliary uSweat tokens:
+	AKC_ExtendBit =     0x80,
+	AKC_ExtendWordBit = 0x8000,
+
+	// Opcode uSweat tokens:
+	AKC_CommandMask = 0xC000,
+
+	AKC_EmptyCel =                   (AKC_CommandMask | 0x0001),
+
+	AKC_SetVar =                     (AKC_CommandMask | 0x0010),
+	AKC_StartSound =                 (AKC_CommandMask | 0x0015),
+	AKC_IfSoundInVarRunningGoTo =    (AKC_CommandMask | 0x0016),
+	AKC_IfNotSoundInVarRunningGoTo = (AKC_CommandMask | 0x0017),
+	AKC_IfSoundRunningGoTo =         (AKC_CommandMask | 0x0018),
+	AKC_IfNotSoundRunningGoTo =      (AKC_CommandMask | 0x0019),
+
+	AKC_DrawMany =                   (AKC_CommandMask | 0x0020),
+	AKC_CondDrawMany =               (AKC_CommandMask | 0x0021),
+	AKC_CondRelativeOffsetDrawMany = (AKC_CommandMask | 0x0022),
+	AKC_RelativeOffsetDrawMany =     (AKC_CommandMask | 0x0025),
+
+	AKC_GoToState =                  (AKC_CommandMask | 0x0030),
+	AKC_IfVarGoTo =                  (AKC_CommandMask | 0x0031),
+
+	AKC_AddVar =                     (AKC_CommandMask | 0x0040),
+	AKC_SoftSound =                  (AKC_CommandMask | 0x0042),
+	AKC_SoftVarSound =               (AKC_CommandMask | 0x0044),
+	AKC_SetUserCondition =           (AKC_CommandMask | 0x0045),
+	AKC_SetVarToUserCondition =      (AKC_CommandMask | 0x0046),
+	AKC_SetTalkCondition =           (AKC_CommandMask | 0x0047),
+	AKC_SetVarToTalkCondition =      (AKC_CommandMask | 0x0048),
+	AKC_StartScript =                (AKC_CommandMask | 0x0050),
+
+	AKC_IncVar =                     (AKC_CommandMask | 0x0060),
+	AKC_StartSound_SpecialCase =     (AKC_CommandMask | 0x0061),
+
+	AKC_IfVarEQJump =                (AKC_CommandMask | 0x0070),
+	AKC_IfVarNEJump =                (AKC_CommandMask | 0x0071),
+	AKC_IfVarLTJump =                (AKC_CommandMask | 0x0072),
+	AKC_IfVarLEJump =                (AKC_CommandMask | 0x0073),
+	AKC_IfVarGTJump =                (AKC_CommandMask | 0x0074),
+	AKC_IfVarGEJump =                (AKC_CommandMask | 0x0075),
+
+	AKC_StartAnim =                  (AKC_CommandMask | 0x0080),
+	AKC_StartVarAnim =               (AKC_CommandMask | 0x0081),
+	AKC_SetVarRandom =               (AKC_CommandMask | 0x0082),
+	AKC_SetActorZClipping =          (AKC_CommandMask | 0x0083),
+	AKC_StartActorAnim =             (AKC_CommandMask | 0x0084),
+	AKC_SetActorVar =                (AKC_CommandMask | 0x0085),
+	AKC_HideActor =                  (AKC_CommandMask | 0x0086),
+	AKC_SetDrawOffs =                (AKC_CommandMask | 0x0087),
+	AKC_JumpToOffsetInVar =          (AKC_CommandMask | 0x0088),
+	AKC_SoundStuff =                 (AKC_CommandMask | 0x0089),
+	AKC_Flip =                       (AKC_CommandMask | 0x008A),
+	AKC_StartActionOn =              (AKC_CommandMask | 0x008B),
+	AKC_StartScriptVar =             (AKC_CommandMask | 0x008C),
+	AKC_StartSoundVar =              (AKC_CommandMask | 0x008D),
+	AKC_DisplayAuxFrame =            (AKC_CommandMask | 0x008E),
+
+	AKC_IfVarEQDo =                  (AKC_CommandMask | 0x0090),
+	AKC_IfVarNEDo =                  (AKC_CommandMask | 0x0091),
+	AKC_IfVarLTDo =                  (AKC_CommandMask | 0x0092),
+	AKC_IfVarLEDo =                  (AKC_CommandMask | 0x0093),
+	AKC_IfVarGTDo =                  (AKC_CommandMask | 0x0094),
+	AKC_IfVarGEDo =                  (AKC_CommandMask | 0x0095),
+	AKC_EndOfIfDo =                  (AKC_CommandMask | 0x009F),
+
+	AKC_StartActorTalkie =           (AKC_CommandMask | 0x00A0),
+	AKC_IfTalkingGoTo =              (AKC_CommandMask | 0x00A1),
+	AKC_IfNotTalkingGoTo =           (AKC_CommandMask | 0x00A2),
+	AKC_StartTalkieInVar =           (AKC_CommandMask | 0x00A3),
+	AKC_IfAnyTalkingGoTo =           (AKC_CommandMask | 0x00A4),
+	AKC_IfNotAnyTalkingGoTo =        (AKC_CommandMask | 0x00A5),
+	AKC_IfTalkingPickGoTo =          (AKC_CommandMask | 0x00A6),
+	AKC_IfNotTalkingPickGoTo =       (AKC_CommandMask | 0x00A7),
+
+	AKC_EndSeq =                     (AKC_CommandMask | 0x00FF)
+};
+
+enum AkosQueuedCommands {
+	AKQC_PutActorInTheVoid = 1,
+	AKQC_StartSound = 3,
+	AKQC_StartAnimation = 4,
+	AKQC_SetZClipping = 5,
+	AKQC_SetXYOffset = 6,
+	AKQC_DisplayAuxFrame = 7,
+	AKQC_StartTalkie = 8,
+	AKQC_SoftStartSound = 9,
+
+	// For V7-8
+	AKQC_SetSoundVolume = 7,
+	AKQC_SetSoundPan = 8,
+	AKQC_SetSoundPriority = 9
+};
+
+enum AkosAnimTypes {
+	AKAT_Empty =          0x00,
+	AKAT_KillLayer =      0x01,
+	AKAT_LoopLayer =      0x02,
+	AKAT_RunLayer =       0x03,
+	AKAT_LayerInvisible = 0x04,
+	AKAT_LayerVisible =   0x05,
+	AKAT_AlwaysRun =      0x06,
+	AKAT_UserConstant =   0x07,
+	AKAT_DeltaAnim =      0x08
 };
 
-#define GW(o) ((int16)READ_LE_UINT16(aksq+curpos+(o)))
-#define GUW(o) READ_LE_UINT16(aksq+curpos+(o))
-#define GB(o) aksq[curpos+(o)]
+#define GW(o) ((int16)READ_LE_UINT16(aksq + curState + (o)))
+#define GUW(o) READ_LE_UINT16(aksq + curState + (o))
+#define GB(o) aksq[curState + (o)]
 
 } // End of namespace Scumm
 
diff --git a/engines/scumm/costume.cpp b/engines/scumm/costume.cpp
index d680720c959..45417a89c46 100644
--- a/engines/scumm/costume.cpp
+++ b/engines/scumm/costume.cpp
@@ -1257,7 +1257,7 @@ byte V0CostumeRenderer::drawLimb(const Actor *a, int limb) {
 		return 0;
 
 	_loaded.loadCostume(a->_costume);
-	byte frame = _loaded._frameOffsets[a->_cost.curpos[limb] + a->_cost.active[limb]];
+	byte frame = _loaded._frameOffsets[a->_cost.curpos[limb] + a->_cost.animType[limb]];
 
 	// Get the frame ptr
 	byte ptrLow = _loaded._baseptr[frame];
@@ -1426,7 +1426,7 @@ byte V0CostumeLoader::increaseAnim(Actor *a, int limb) {
 	loadCostume(a->_costume);
 
 	// 0x2543
-	byte frame = _frameOffsets[a->_cost.curpos[limb] + a->_cost.active[limb]];
+	byte frame = _frameOffsets[a->_cost.curpos[limb] + a->_cost.animType[limb]];
 
 	// Is this frame invalid?
 	if (frame == 0xFF) {
diff --git a/engines/scumm/debugger.cpp b/engines/scumm/debugger.cpp
index b830ad2898b..0d1f386ef81 100644
--- a/engines/scumm/debugger.cpp
+++ b/engines/scumm/debugger.cpp
@@ -531,7 +531,7 @@ bool ScummDebugger::Cmd_PrintScript(int argc, const char **argv) {
 bool ScummDebugger::Cmd_Cosdump(int argc, const char **argv) {
 	const byte *akos;
 	const byte *aksq;
-	uint32 curpos;
+	uint32 curState;
 	uint32 code;
 	uint32 aend;
 	int costume;
@@ -551,7 +551,7 @@ bool ScummDebugger::Cmd_Cosdump(int argc, const char **argv) {
 
 	akos = _vm->getResourceAddress(rtCostume, costume);
 
-	curpos = 0;
+	curState = 0;
 	aksq = _vm->findResourceData(MKTAG('A','K','S','Q'), akos);
 	if (aksq == nullptr) {
 		debugPrintf("Costume %d does not have AKSQ block\n", costume);
@@ -559,231 +559,231 @@ bool ScummDebugger::Cmd_Cosdump(int argc, const char **argv) {
 	}
 	aend = READ_BE_UINT32(aksq - 4) - 8;
 	debugPrintf("DUMP COSTUME SCRIPT %d (size %d)\n", costume, aend);
-	while (curpos < aend) {
+	while (curState < aend) {
 		code = GB(0);
 		if (code & 0x80)
-			code = READ_BE_UINT16(aksq + curpos);
-		debugPrintf("[%04x] (%04x) ", curpos, code);
+			code = READ_BE_UINT16(aksq + curState);
+		debugPrintf("[%04x] (%04x) ", curState, code);
 		switch (code) {
 		case AKC_EmptyCel:
 			debugPrintf("RETURN\n");
-			curpos += 2;
+			curState += 2;
 			break;
 		case AKC_SetVar:
 			debugPrintf("VAR[%d] = %d\n", GB(4), GW(2));
-			curpos += 5;
+			curState += 5;
 			break;
 		case AKC_StartSound:
 			debugPrintf("START SOUND %d\n", GB(2));
-			curpos += 3;
+			curState += 3;
 			break;
 		case AKC_IfSoundInVarRunningGoTo:
 			debugPrintf("IF SOUND RUNNING VAR[%d] GOTO [%04x]\n", GB(4), GUW(2));
-			curpos += 5;
+			curState += 5;
 			break;
 		case AKC_IfNotSoundInVarRunningGoTo:
 			debugPrintf("IF NOT SOUND RUNNING VAR[%d] GOTO [%04x]\n", GB(4), GUW(2));
-			curpos += 5;
+			curState += 5;
 			break;
 		case AKC_IfSoundRunningGoTo:
 			debugPrintf("IF SOUND RUNNING %d GOTO [%04x]\n", GB(4), GUW(2));
-			curpos += 5;
+			curState += 5;
 			break;
 		case AKC_IfNotSoundRunningGoTo:
 			debugPrintf("IF NOT SOUND RUNNING %d GOTO [%04x]\n", GB(4), GUW(2));
-			curpos += 5;
+			curState += 5;
 			break;
 		case AKC_DrawMany:
 			debugPrintf("DRAW:\n");
-			curpos += 2;
+			curState += 2;
 			count = GB(0);
-			curpos++;
+			curState++;
 			for (i = 0; i < count; i++) {
 				code = GB(4);
 				if (code & 0x80) {
-					code = READ_BE_UINT16(aksq + curpos + 4);
+					code = READ_BE_UINT16(aksq + curState + 4);
 					debugPrintf("\tEXTENDED OFFSET %d POS %d,%d\n", code, GW(0), GW(2));
-					curpos++;
+					curState++;
 				} else {
 					debugPrintf("\tOFFSET %d POS %d,%d\n", code, GW(0), GW(2));
 				}
-				curpos += 5;
+				curState += 5;
 			}
 			break;
 		case AKC_CondDrawMany:
-			debugPrintf("CONDITION MASK DRAW [%04x] [", curpos + GB(2));
+			debugPrintf("CONDITION MASK DRAW [%04x] [", curState + GB(2));
 			count = GB(3);
 			for (i = 0; i < count; i++) {
 				if (i)
 					debugPrintf(", ");
 				debugPrintf("%d", GB(4));
-				curpos++;
+				curState++;
 			}
 			debugPrintf("]\n");
-			curpos += 4;
+			curState += 4;
 			count = GB(0);
-			curpos++;
+			curState++;
 			for (i = 0; i < count; i++) {
 				code = GB(4);
 				if (code & 0x80) {
-					code = READ_BE_UINT16(aksq + curpos + 4);
+					code = READ_BE_UINT16(aksq + curState + 4);
 					debugPrintf("\tEXTENDED OFFSET %d POS %d,%d\n", code, GW(0), GW(2));
-					curpos++;
+					curState++;
 				} else {
 					debugPrintf("\tOFFSET %d POS %d,%d\n", code, GW(0), GW(2));
 				}
-				curpos += 5;
+				curState += 5;
 			}
 			break;
 		case AKC_CondRelativeOffsetDrawMany:
-			debugPrintf("CONDITION MASK DRAW [%04x] [", curpos + GB(2));
+			debugPrintf("CONDITION MASK DRAW [%04x] [", curState + GB(2));
 			count = GB(3);
 			for (i = 0; i < count; i++) {
 				if (i)
 					debugPrintf(", ");
 				debugPrintf("%d", GB(4));
-				curpos++;
+				curState++;
 			}
 			debugPrintf("] AT OFFSET %d, %d:\n", GW(2), GW(4));
-			curpos += 6;
+			curState += 6;
 			count = GB(0);
-			curpos++;
+			curState++;
 			for (i = 0; i < count; i++) {
 				code = GB(4);
 				if (code & 0x80) {
-					code = READ_BE_UINT16(aksq + curpos + 4);
+					code = READ_BE_UINT16(aksq + curState + 4);
 					debugPrintf("\tEXTENDED OFFSET %d POS %d,%d\n", code, GW(0), GW(2));
-					curpos++;
+					curState++;
 				} else {
 					debugPrintf("\tOFFSET %d POS %d,%d\n", code, GW(0), GW(2));
 				}
-				curpos += 5;
+				curState += 5;
 			}
 			break;
 		case AKC_RelativeOffsetDrawMany:
 			debugPrintf("DRAW AT OFFSET %d, %d:\n", GW(2), GW(4));
-			curpos += 6;
+			curState += 6;
 			count = GB(0);
-			curpos++;
+			curState++;
 			for (i = 0; i < count; i++) {
 				code = GB(4);
 				if (code & 0x80) {
-					code = READ_BE_UINT16(aksq + curpos + 4);
+					code = READ_BE_UINT16(aksq + curState + 4);
 					debugPrintf("\tEXTENDED OFFSET %d POS %d,%d\n", code, GW(0), GW(2));
-					curpos++;
+					curState++;
 				} else {
 					debugPrintf("\tOFFSET %d POS %d,%d\n", code, GW(0), GW(2));
 				}
-				curpos += 5;
+				curState += 5;
 			}
 			break;
 		case AKC_GoToState:
 			debugPrintf("GOTO [%04x]\n", GUW(2));
-			curpos += 4;
+			curState += 4;
 			break;
 		case AKC_IfVarGoTo:
 			debugPrintf("IF VAR[%d] GOTO [%04x]\n", GB(4), GUW(2));
-			curpos += 5;
+			curState += 5;
 			break;
 		case AKC_AddVar:
 			debugPrintf("VAR[%d] += %d\n", GB(4), GW(2));
-			curpos += 5;
+			curState += 5;
 			break;
 		case AKC_SoftSound:
 			debugPrintf("START SOUND %d SOFT\n", GB(2));
-			curpos += 3;
+			curState += 3;
 			break;
 		case AKC_SoftVarSound:
 			debugPrintf("START SOUND VAR[%d] SOFT\n", GB(2));
-			curpos += 3;
+			curState += 3;
 			break;
 		case AKC_SetUserCondition:
 			debugPrintf("USER CONDITION %d = VAR[%d] GOTO [%04x] \n", GB(3), GB(4), GB(2));
-			curpos += 5;
+			curState += 5;
 			break;
 		case AKC_SetVarToUserCondition:
 			debugPrintf("VAR[%d] = USER CONDITION %d GOTO [%04x] \n", GB(4), GB(3), GB(2));
-			curpos += 5;
+			curState += 5;
 			break;
 		case AKC_SetTalkCondition:
 			debugPrintf("TALK CONDITION %d SET GOTO [%04x] \n", GB(3), GB(2));
-			curpos += 4;
+			curState += 4;
 			break;
 		case AKC_SetVarToTalkCondition:
 			debugPrintf("VAR[%d] = TALK CONDITION %d GOTO [%04x] \n", GB(4), GB(3), GB(2));
-			curpos += 5;
+			curState += 5;
 			break;
 		case AKC_StartScript:
 			debugPrintf("IGNORE %d\n", GB(2));
-			curpos += 3;
+			curState += 3;
 			break;
 		case AKC_IncVar:
 			debugPrintf("VAR[0]++\n");
-			curpos += 2;
+			curState += 2;
 			break;
 		case AKC_StartSound_SpecialCase:
 			debugPrintf("START SOUND QUICK\n");
-			curpos += 2;
+			curState += 2;
 			break;
 		case AKC_IfVarEQJump:
 			debugPrintf("IF VAR[%d] == %d GOTO [%04x]\n", GB(4), GW(5), GUW(2));
-			curpos += 7;
+			curState += 7;
 			break;
 		case AKC_IfVarNEJump:
 			debugPrintf("IF VAR[%d] != %d GOTO [%04x]\n", GB(4), GW(5), GUW(2));
-			curpos += 7;
+			curState += 7;
 			break;
 		case AKC_IfVarLTJump:
 			debugPrintf("IF VAR[%d] < %d GOTO [%04x]\n", GB(4), GW(5), GUW(2));
-			curpos += 7;
+			curState += 7;
 			break;
 		case AKC_IfVarLEJump:
 			debugPrintf("IF VAR[%d] <= %d GOTO [%04x]\n", GB(4), GW(5), GUW(2));
-			curpos += 7;
+			curState += 7;
 			break;
 		case AKC_IfVarGTJump:
 			debugPrintf("IF VAR[%d] > %d GOTO [%04x]\n", GB(4), GW(5), GUW(2));
-			curpos += 7;
+			curState += 7;
 			break;
 		case AKC_IfVarGEJump:
 			debugPrintf("IF VAR[%d] >= %d GOTO [%04x]\n", GB(4), GW(5), GUW(2));
-			curpos += 7;
+			curState += 7;
 			break;
 		case AKC_StartAnim:
 			debugPrintf("START ANIMATION %d\n", GB(2));
-			curpos += 3;
+			curState += 3;
 			break;
 		case AKC_StartVarAnim:
 			debugPrintf("START ANIMATION VAR[%d]\n", GB(2));
-			curpos += 3;
+			curState += 3;
 			break;
 		case AKC_SetVarRandom:
 			debugPrintf("VAR[%d] = RANDOM BETWEEN %d AND %d\n", GB(6), GW(2), GW(4));
-			curpos += 7;
+			curState += 7;
 			break;
 		case AKC_SetActorZClipping:
 			debugPrintf("ZCLIP %d\n", GB(2));
-			curpos += 3;
+			curState += 3;
 			break;
 		case AKC_StartActorAnim:
 			debugPrintf("START ANIMATION ACTOR VAR[%d] VAR[%d]\n", GB(2), GB(3));
-			curpos += 4;
+			curState += 4;
 			break;
 		case AKC_SetActorVar:
 			debugPrintf("ACTOR VAR[%d] VAR[%d] = %d\n", GB(2), GB(3), GW(4));
-			curpos += 6;
+			curState += 6;
 			break;
 		case AKC_HideActor:
 			debugPrintf("DESTROY ACTOR\n");
-			curpos += 2;
+			curState += 2;
 			break;
 		case AKC_SetDrawOffs:
 			debugPrintf("SET DRAW OFFSETS %d %d\n", GW(2), GW(4));
-			curpos += 6;
+			curState += 6;
 			break;
 		case AKC_JumpToOffsetInVar:
 			debugPrintf("GOTO OFFSET AT VAR[%d]\n", GB(2));
-			curpos += 3;
+			curState += 3;
 			break;
 		// case AKC_SoundStuff:
 		// 	break;
@@ -795,7 +795,7 @@ bool ScummDebugger::Cmd_Cosdump(int argc, const char **argv) {
 		// 	break;
 		case AKC_StartSoundVar:
 			debugPrintf("START SOUND VAR[%d]\n", GB(2));
-			curpos += 3;
+			curState += 3;
 			break;
 		// case AKC_DisplayAuxFrame:
 		// 	break;
@@ -815,19 +815,19 @@ bool ScummDebugger::Cmd_Cosdump(int argc, const char **argv) {
 		// 	break;
 		case AKC_StartActorTalkie:
 			debugPrintf("START TALK %d {%d}\n", GB(2), GB(3));
-			curpos += 4;
+			curState += 4;
 			break;
 		case AKC_IfTalkingGoTo:
 			debugPrintf("IF ACTOR TALKING GOTO [%04x]\n", GUW(2));
-			curpos += 4;
+			curState += 4;
 			break;
 		case AKC_IfNotTalkingGoTo:
 			debugPrintf("IF NOT ACTOR TALKING GOTO [%04x]\n", GUW(2));
-			curpos += 4;
+			curState += 4;
 			break;
 		case AKC_StartTalkieInVar:
 			debugPrintf("START TALK VAR[%d]\n", GB(2));
-			curpos += 3;
+			curState += 3;
 			break;
 		// case AKC_IfAnyTalkingGoTo:
 		// 	break;
@@ -839,7 +839,7 @@ bool ScummDebugger::Cmd_Cosdump(int argc, const char **argv) {
 		// 	break;
 		case AKC_EndSeq:
 			debugPrintf("STOP\n");
-			curpos += 2;
+			curState += 2;
 			break;
 		default:
 			warning("DEFAULT OP, breaking...\n");




More information about the Scummvm-git-logs mailing list