diff options
Diffstat (limited to 'engines/dreamweb/stubs.cpp')
-rw-r--r-- | engines/dreamweb/stubs.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index c978d8d475..1c60fb6a4f 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -679,20 +679,17 @@ uint8 *DreamGenContext::getroomspathsCPP() { return (uint8 *)result; } -void DreamGenContext::makebackob() { +void DreamGenContext::makebackob(ObjData *objData) { if (data.byte(kNewobs) == 0) return; - uint8 priority = es.byte(si+5); - uint8 type = es.byte(si+8); + uint8 priority = objData->priority; + uint8 type = objData->type; Sprite *sprite = makesprite(data.word(kObjectx), data.word(kObjecty), addr_backobject, data.word(kSetframes), 0); - // Recover es:bx from sprite - es = data.word(kBuffers); - bx = kSpritetable; - Sprite *sprites = (Sprite *)es.ptr(bx, sizeof(Sprite) * 16); - bx += sizeof(Sprite) * (sprite - sprites); - // - sprite->setObjData(si); + uint16 objDataOffset = (uint8 *)objData - segRef(data.word(kSetdat)).ptr(0, 0); + assert(objDataOffset % sizeof(ObjData) == 0); + assert(objDataOffset < 128 * sizeof(ObjData)); + sprite->setObjData(objDataOffset); if (priority == 255) priority = 0; sprite->priority = priority; |