aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/script_v0.cpp
diff options
context:
space:
mode:
authorsegrax2012-01-19 17:59:56 +1100
committerTobias Gunkel2012-02-11 08:28:59 +0100
commite2d45467bb6f0dc6d35fa33697bb97ae470f05f1 (patch)
treed26c3e3e231e2ed4379c6c56de8af08c87f23a15 /engines/scumm/script_v0.cpp
parentf2c3675ed1306f82b5cb5d44d541739ff727dfde (diff)
downloadscummvm-rg350-e2d45467bb6f0dc6d35fa33697bb97ae470f05f1.tar.gz
scummvm-rg350-e2d45467bb6f0dc6d35fa33697bb97ae470f05f1.tar.bz2
scummvm-rg350-e2d45467bb6f0dc6d35fa33697bb97ae470f05f1.zip
SCUMM: improve unknown variable support, add case 0xff to the animateactor opcode
Diffstat (limited to 'engines/scumm/script_v0.cpp')
-rw-r--r--engines/scumm/script_v0.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/engines/scumm/script_v0.cpp b/engines/scumm/script_v0.cpp
index caaf56878f..ec3cad009d 100644
--- a/engines/scumm/script_v0.cpp
+++ b/engines/scumm/script_v0.cpp
@@ -663,24 +663,29 @@ void ScummEngine_v0::o_lights() {
void ScummEngine_v0::o_animateActor() {
int act = getVarOrDirectByte(PARAM_1);
int anim = getVarOrDirectByte(PARAM_2);
- int unk = fetchScriptByte();
+ int8 unk = (int8) fetchScriptByte();
debug(0,"o_animateActor: unk %d", unk);
ActorC64 *a = (ActorC64*) derefActor(act, "o_animateActor");
a->_byte_FDE8 = unk;
-
- // 0x6993
- if (anim == 0xFE) {
+
+ switch( anim ) {
+ case 0xFE:
+ // 0x6993
a->_speaking = 0x80; // Enabled, but not switching
return;
- }
- // 0x69A3
- if (anim == 0xFD) {
+
+ case 0xFD:
+ // 0x69A3
a->_speaking = 0x00;
return;
- }
+
+ case 0xFF:
+ a->stopActorMoving();
+ return;
+ }
a->animateActor(anim);
}