From 094e7505e1c86ba8eed663ff780e3c1c8b16606e Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Fri, 12 Jun 2015 16:12:34 +0200 Subject: SHERLOCK: 3DO: object: found lookPos --- engines/sherlock/objects.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/engines/sherlock/objects.cpp b/engines/sherlock/objects.cpp index d135c20fe4..2fa18678fa 100644 --- a/engines/sherlock/objects.cpp +++ b/engines/sherlock/objects.cpp @@ -695,9 +695,11 @@ void Object::load(Common::SeekableReadStream &s, bool isRoseTattoo) { for (int idx = 0; idx < 4; ++idx) _use[idx].load(s, false); } + //warning("object %s, lookPosX %d, lookPosY %d", _name.c_str(), _lookPosition.x, _lookPosition.y); } void Object::load3DO(Common::SeekableReadStream &s) { + int32 streamPos = s.pos(); char buffer[41]; _examine.clear(); @@ -712,6 +714,7 @@ void Object::load3DO(Common::SeekableReadStream &s) { _walkCount = 0; // ??? s.readByte(); _allow = 0; // ??? s.readByte(); + // Offset 16 _frameNumber = s.readSint16BE(); _sequenceNumber = s.readSint16BE(); _position.x = s.readSint16BE(); @@ -729,6 +732,7 @@ void Object::load3DO(Common::SeekableReadStream &s) { _goto.x = _goto.x * FIXED_INT_MULTIPLIER / 100; _goto.y = _goto.y * FIXED_INT_MULTIPLIER / 100; + // Offset 42 #if 0 _pickup = s.readByte(); _defaultCommand = s.readByte(); @@ -759,8 +763,9 @@ void Object::load3DO(Common::SeekableReadStream &s) { s.skip(13); // Unknown _maxFrames = s.readByte(); - s.skip(2); // Unknown - + // offset 56 + _lookPosition.x = s.readUint16BE() * FIXED_INT_MULTIPLIER / 100; + // offset 58 _descOffset = s.readUint16BE(); _seqCounter2 = 0; // ??? _seqSize = s.readUint16BE(); @@ -776,19 +781,27 @@ void Object::load3DO(Common::SeekableReadStream &s) { _use[idx].load(s, false); #endif + // offset 508 // 3DO: name is at the end s.read(buffer, 12); _name = Common::String(buffer); s.read(buffer, 41); _description = Common::String(buffer); - s.skip(4); // Unknown + s.skip(4); // Probably those here?!?! _misc = s.readByte(); _flags = s.readByte(); - s.skip(21); // Unknown + s.skip(3); + _lookPosition.y = s.readByte() * FIXED_INT_MULTIPLIER; + _lookFacing = s.readByte(); + + s.skip(16); // Unknown + +warning("object %s, offset %d", _name.c_str(), streamPos); +warning("object %s, lookPosX %d, lookPosY %d", _name.c_str(), _lookPosition.x, _lookPosition.y); } void Object::toggleHidden() { -- cgit v1.2.3