aboutsummaryrefslogtreecommitdiff
path: root/verbs.cpp
diff options
context:
space:
mode:
authorVincent Hamm2002-02-15 17:17:35 +0000
committerVincent Hamm2002-02-15 17:17:35 +0000
commitfef71c00d31199579b4bc5df8b5fd26b40d014a1 (patch)
tree5fb20a963ed3a0286df01c8eec00def923acc508 /verbs.cpp
parent4bd4e619e393669a9068d39f3d1f6e731cbc0fe9 (diff)
downloadscummvm-rg350-fef71c00d31199579b4bc5df8b5fd26b40d014a1.tar.gz
scummvm-rg350-fef71c00d31199579b4bc5df8b5fd26b40d014a1.tar.bz2
scummvm-rg350-fef71c00d31199579b4bc5df8b5fd26b40d014a1.zip
Fixed Loom interface
svn-id: r3594
Diffstat (limited to 'verbs.cpp')
-rw-r--r--verbs.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/verbs.cpp b/verbs.cpp
index 566e95b591..c849c8d899 100644
--- a/verbs.cpp
+++ b/verbs.cpp
@@ -169,6 +169,7 @@ void Scumm::drawVerbBitmap(int vrb, int x, int y) {
int i,tmp;
byte *obim;
ImageHeader *imhd;
+ uint32 size;
if ((vs=findVirtScreen(y)) == NULL)
return;
@@ -188,14 +189,12 @@ void Scumm::drawVerbBitmap(int vrb, int x, int y) {
ObjectData *od;
int index, obj;
obj = READ_LE_UINT16(obim+6);
- index = getObjectIndex(obj);
- if(index==-1)
- return;
- od = &_objs[index];
-
- imgw = od->width>>3;
- imgh = od->height>>3;
- imptr = obim+8;
+ size = READ_LE_UINT32(obim);
+
+ imgw = (*(obim+size+11)) ;
+ imgh = (*(obim+size+17))>>3 ;
+ imptr = (obim+8);
+
} else {
imhd = (ImageHeader*)findResourceData(MKID('IMHD'), obim);
imgw = READ_LE_UINT16(&imhd->width) >> 3;
@@ -255,7 +254,8 @@ void Scumm::killVerb(int slot) {
void Scumm::setVerbObject(uint room, uint object, uint verb) {
byte *obimptr;
- uint32 size;
+ byte *obcdptr;
+ uint32 size, size2;
FindObjectInRoom foir;
int i;
@@ -267,9 +267,15 @@ void Scumm::setVerbObject(uint room, uint object, uint verb) {
if(_objs[i].obj_nr == object) {
findObjectInRoom(&foir, foImageHeader, object, room);
size = READ_LE_UINT32(foir.obim);
- createResource(rtVerb, verb, size);
+ printf("Size= %d",size);
+ obcdptr = getResourceAddress(rtRoom, room) + getOBCDOffs(object);
+ size2 = READ_LE_UINT32(obcdptr);
+ printf("Size2= %d",size2);
+ createResource(rtVerb, verb, size+size2);
obimptr = getResourceAddress(rtRoom, room) - foir.roomptr + foir.obim;
+ obcdptr = getResourceAddress(rtRoom, room) + getOBCDOffs(object);
memcpy(getResourceAddress(rtVerb, verb), obimptr, size);
+ memcpy(getResourceAddress(rtVerb, verb)+size, obcdptr, size2);
}
}
} else {