aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/object.cpp21
-rw-r--r--scumm/resource.cpp2
-rw-r--r--scumm/script_v8.cpp4
3 files changed, 14 insertions, 13 deletions
diff --git a/scumm/object.cpp b/scumm/object.cpp
index 26d13c8d80..bf2676f6cc 100644
--- a/scumm/object.cpp
+++ b/scumm/object.cpp
@@ -826,7 +826,7 @@ void Scumm::addObjectToInventory(uint obj, uint room)
{
int i, slot;
uint32 size;
- byte *obcdptr, *ptr;
+ byte *ptr, *dst;
FindObjectInRoom foir;
debug(1, "Adding object %d from room %d into inventory", obj, room);
@@ -836,24 +836,23 @@ void Scumm::addObjectToInventory(uint obj, uint room)
i = getObjectIndex(obj);
ptr = getResourceAddress(rtFlObject, _objs[i].fl_object_index) + 8;
size = READ_BE_UINT32_UNALIGNED(ptr + 4);
- slot = getInventorySlot();
- _inventory[slot] = obj;
- createResource(rtInventory, slot, size);
- ptr = getResourceAddress(rtFlObject, _objs[i].fl_object_index) + 8;
- memcpy(getResourceAddress(rtInventory, slot), ptr, size);
} else {
findObjectInRoom(&foir, foCodeHeader, obj, room);
if (_features & GF_SMALL_HEADER)
size = READ_LE_UINT32(foir.obcd);
else
size = READ_BE_UINT32_UNALIGNED(foir.obcd + 4);
- slot = getInventorySlot();
- _inventory[slot] = obj;
- createResource(rtInventory, slot, size);
- obcdptr = getResourceAddress(rtRoom, room) - foir.roomptr + foir.obcd;
- memcpy(getResourceAddress(rtInventory, slot), obcdptr, size);
+ ptr = foir.obcd;
}
+ slot = getInventorySlot();
+ _inventory[slot] = obj;
+ createResource(rtInventory, slot, size);
+
+ dst = getResourceAddress(rtInventory, slot);
+ assert(dst);
+ memcpy(dst, ptr, size);
+
CHECK_HEAP
}
diff --git a/scumm/resource.cpp b/scumm/resource.cpp
index 217bf86da6..80433ba2ca 100644
--- a/scumm/resource.cpp
+++ b/scumm/resource.cpp
@@ -1381,6 +1381,8 @@ bool Scumm::isResourceInUse(int type, int i)
switch (type) {
case rtRoom:
return _roomResource == (byte)i;
+ case rtRoomScripts:
+ return _roomResource == (byte)i;
case rtScript:
return isScriptInUse(i);
case rtCostume:
diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp
index 362c4a781e..62344dfe2f 100644
--- a/scumm/script_v8.cpp
+++ b/scumm/script_v8.cpp
@@ -1423,10 +1423,10 @@ void Scumm_v8::o6_kernelSetFunctions()
case 34: // queryQuit
warning("o6_kernelSetFunctions: queryQuit()");
break;
- case 108:
+ case 108: // buildPaletteShadow
setupShadowPalette(args[1], args[2], args[3], args[4], args[5], args[6]);
break;
- case 109:
+ case 109: // setPaletteShadow
setupShadowPalette(0, args[1], args[2], args[3], args[4], args[5]);
break;
case 115: // getWalkBoxAt