aboutsummaryrefslogtreecommitdiff
path: root/engines/gob
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gob')
-rw-r--r--engines/gob/inter_v1.cpp48
-rw-r--r--engines/gob/inter_v2.cpp2
-rw-r--r--engines/gob/mult_v2.cpp11
-rw-r--r--engines/gob/parse.cpp8
4 files changed, 18 insertions, 51 deletions
diff --git a/engines/gob/inter_v1.cpp b/engines/gob/inter_v1.cpp
index 5ac605e301..822c96d749 100644
--- a/engines/gob/inter_v1.cpp
+++ b/engines/gob/inter_v1.cpp
@@ -1663,52 +1663,8 @@ bool Inter_v1::o1_keyFunc(OpFuncParams &params) {
break;
case 2:
- key = 0;
-
- if (_vm->_global->_pressedKeys[0x48])
- key |= 1;
-
- if (_vm->_global->_pressedKeys[0x50])
- key |= 2;
-
- if (_vm->_global->_pressedKeys[0x4D])
- key |= 4;
-
- if (_vm->_global->_pressedKeys[0x4B])
- key |= 8;
-
- if (_vm->_global->_pressedKeys[0x1C])
- key |= 0x10;
-
- if (_vm->_global->_pressedKeys[0x39])
- key |= 0x20;
-
- if (_vm->_global->_pressedKeys[1])
- key |= 0x40;
-
- if (_vm->_global->_pressedKeys[0x1D])
- key |= 0x80;
-
- if (_vm->_global->_pressedKeys[0x2A])
- key |= 0x100;
-
- if (_vm->_global->_pressedKeys[0x36])
- key |= 0x200;
-
- if (_vm->_global->_pressedKeys[0x38])
- key |= 0x400;
-
- if (_vm->_global->_pressedKeys[0x3B])
- key |= 0x800;
-
- if (_vm->_global->_pressedKeys[0x3C])
- key |= 0x1000;
-
- if (_vm->_global->_pressedKeys[0x3D])
- key |= 0x2000;
-
- if (_vm->_global->_pressedKeys[0x3E])
- key |= 0x4000;
+ _vm->_util->processInput(true);
+ key = _vm->_util->checkKey();
WRITE_VAR(0, key);
_vm->_util->clearKeyBuf();
diff --git a/engines/gob/inter_v2.cpp b/engines/gob/inter_v2.cpp
index 5a66300848..78ea9cab7a 100644
--- a/engines/gob/inter_v2.cpp
+++ b/engines/gob/inter_v2.cpp
@@ -975,7 +975,7 @@ void Inter_v2::o2_loadMultObject() {
_vm->_global->_inter_execPtr++;
}
- if (_vm->_goblin->_gobsCount < 0)
+ if (_vm->_goblin->_gobsCount <= objIndex)
return;
Mult::Mult_Object &obj = _vm->_mult->_objects[objIndex];
diff --git a/engines/gob/mult_v2.cpp b/engines/gob/mult_v2.cpp
index d973ea4c22..8b158ab314 100644
--- a/engines/gob/mult_v2.cpp
+++ b/engines/gob/mult_v2.cpp
@@ -227,6 +227,13 @@ void Mult_v2::loadMult(int16 resId) {
case 3:
_vm->_global->_inter_execPtr += 4;
break;
+
+ case -1:
+ break;
+
+ default:
+ warning("Mult_v2::loadMult(): Unknown sound key command (%d)",
+ _multData->sndKeys[i].cmd);
}
}
@@ -1185,6 +1192,8 @@ void Mult_v2::advanceObjects(int16 index) {
}
void Mult_v2::advanceAllObjects() {
+ Mult_Data *multData = _multData;
+
for (int i = 0; i < 8; i++) {
if (_multDatas[i]) {
_multData = _multDatas[i];
@@ -1192,6 +1201,8 @@ void Mult_v2::advanceAllObjects() {
advanceObjects(j);
}
}
+
+ _multData = multData;
}
} // End of namespace Gob
diff --git a/engines/gob/parse.cpp b/engines/gob/parse.cpp
index 93af23c82b..a603fd164e 100644
--- a/engines/gob/parse.cpp
+++ b/engines/gob/parse.cpp
@@ -196,17 +196,17 @@ void Parse::printExpr_internal(char stopToken) {
debugN(5, "var8_%d", _vm->_inter->load16());
break;
- case 19: // uint32 immediate
+ case 19: // int32/uint32 immediate
debugN(5, "%d", READ_LE_UINT32(_vm->_global->_inter_execPtr));
_vm->_global->_inter_execPtr += 4;
break;
- case 20: // uint16 immediate
+ case 20: // int16 immediate
debugN(5, "%d", _vm->_inter->load16());
break;
- case 21: // uint8 immediate
- debugN(5, "%d", *_vm->_global->_inter_execPtr++);
+ case 21: // int8 immediate
+ debugN(5, "%d", (int8) *_vm->_global->_inter_execPtr++);
break;
case 22: // string immediate