diff options
-rw-r--r-- | scumm/script_v7he.cpp | 23 | ||||
-rw-r--r-- | scumm/script_v8.cpp | 4 |
2 files changed, 18 insertions, 9 deletions
diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp index f3127a5314..ec5561edcc 100644 --- a/scumm/script_v7he.cpp +++ b/scumm/script_v7he.cpp @@ -510,10 +510,11 @@ void ScummEngine_v70he::o70_getActorRoom() { } void ScummEngine_v70he::o70_resourceRoutines() { - int resid, op; - op = fetchScriptByte(); + int objidx, resid, subOp; - switch (op) { + subOp = fetchScriptByte(); + + switch (subOp) { case 100: // SO_LOAD_SCRIPT resid = pop(); ensureResourceLoaded(rtScript, resid); @@ -607,7 +608,7 @@ void ScummEngine_v70he::o70_resourceRoutines() { case 122: case 123: case 203: - debug(5,"stub queueload (%d) resource %d", op, pop()); + debug(5,"stub queueload (%d) resource %d", subOp, pop()); break; case 159: resid = pop(); @@ -627,17 +628,25 @@ void ScummEngine_v70he::o70_resourceRoutines() { break; case 233: resid = pop(); - debug(5,"stub o70_resourceRoutines lock object %d", resid); + objidx = getObjectIndex(resid); + if (objidx == -1) + break; + res.lock(rtFlObject, _objs[objidx].fl_object_index); + debug(0,"stub o70_resourceRoutines lock object %d", resid); break; case 235: resid = pop(); - debug(5,"stub o70_resourceRoutines unlock object %d", resid); + objidx = getObjectIndex(resid); + if (objidx == -1) + break; + res.unlock(rtFlObject, _objs[objidx].fl_object_index); + debug(0,"stub o70_resourceRoutines unlock object %d", resid); break; case 239: // Used in airport break; default: - debug(1,"o70_resourceRoutines: default case %d", op); + debug(1,"o70_resourceRoutines: default case %d", subOp); } } diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp index cd3e6d7f7e..6e29b88fff 100644 --- a/scumm/script_v8.cpp +++ b/scumm/script_v8.cpp @@ -1214,13 +1214,13 @@ void ScummEngine_v8::o8_kernelSetFunctions() { case 11: { // lockObject int objidx = getObjectIndex(args[1]); assert(objidx != -1); - res.lock(rtFlObject, objidx); + res.lock(rtFlObject, _objs[objidx].fl_object_index); break; } case 12: { // unlockObject int objidx = getObjectIndex(args[1]); assert(objidx != -1); - res.unlock(rtFlObject, objidx); + res.unlock(rtFlObject, _objs[objidx].fl_object_index); break; } case 13: // remapCostume |