[Scummvm-cvs-logs] scummvm master -> 2267218e2f029ea016ebc174e1e0655319e09862

m-kiewitz m_kiewitz at users.sourceforge.net
Fri Jun 12 16:34:30 CEST 2015


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
2267218e2f SHERLOCK: 3DO: object loading - more figured out


Commit: 2267218e2f029ea016ebc174e1e0655319e09862
    https://github.com/scummvm/scummvm/commit/2267218e2f029ea016ebc174e1e0655319e09862
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2015-06-12T16:34:00+02:00

Commit Message:
SHERLOCK: 3DO: object loading - more figured out

Changed paths:
    engines/sherlock/objects.cpp



diff --git a/engines/sherlock/objects.cpp b/engines/sherlock/objects.cpp
index 2fa1867..ab17634 100644
--- a/engines/sherlock/objects.cpp
+++ b/engines/sherlock/objects.cpp
@@ -695,7 +695,7 @@ 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);
+	//warning("object %s, defCmd %d", _name.c_str(), _defaultCommand);
 }
 
 void Object::load3DO(Common::SeekableReadStream &s) {
@@ -708,12 +708,11 @@ void Object::load3DO(Common::SeekableReadStream &s) {
 	_imageFrame = nullptr;
 
 	// on 3DO all of this data is reordered!!!
+	// it seems that possibly the 3DO compiler reordered the global struct
 	s.skip(4);
 	_sequenceOffset = s.readUint16LE(); // weird that this seems to be LE
 	s.seek(10, SEEK_CUR);
 
-	_walkCount = 0; // ??? s.readByte();
-	_allow = 0; // ??? s.readByte();
 	// Offset 16
 	_frameNumber = s.readSint16BE();
 	_sequenceNumber = s.readSint16BE();
@@ -733,45 +732,35 @@ void Object::load3DO(Common::SeekableReadStream &s) {
 	_goto.y = _goto.y * FIXED_INT_MULTIPLIER / 100;
 
 	// Offset 42
-#if 0
-	_pickup = s.readByte();
-	_defaultCommand = s.readByte();
+	warning("pos %d", s.pos());
+
+	// Unverified
 	_lookFlag = s.readSint16BE();
 	_pickupFlag = s.readSint16BE();
 	_requiredFlag = s.readSint16BE();
 	_noShapeSize.x = s.readUint16BE();
 	_noShapeSize.y = s.readUint16BE();
 	_status = s.readUint16BE();
-	_maxFrames = s.readUint16BE();
-
-	_aOpen.load(s);
-
-	_aType = (AType)s.readByte();
-	_lookFrames = s.readByte();
-	_seqCounter = s.readByte();
-	_lookPosition.x = s.readUint16BE() * FIXED_INT_MULTIPLIER / 100;
-	_lookPosition.y = s.readByte() * FIXED_INT_MULTIPLIER;
-	_lookFacing = s.readByte();
-	_lookcAnim = s.readByte();
-
-	_aClose.load(s);
+	// Unverified END
 
-	_seqStack = s.readByte();
-	_seqTo = s.readByte();
-#endif
-	warning("pos %d", s.pos());
-
-	s.skip(13); // Unknown
-	_maxFrames = s.readByte();
+	_maxFrames = s.readUint16BE();
 	// offset 56
 	_lookPosition.x = s.readUint16BE() * FIXED_INT_MULTIPLIER / 100;
 	// offset 58
 	_descOffset = s.readUint16BE();
-	_seqCounter2 = 0; // ???
 	_seqSize = s.readUint16BE();
 
 	s.skip(446); // Unknown
 
+	// missing:
+	// _aOpen.load(s);
+	// _aClose.load(s);
+	//  s.skip(1);
+	//  _aMove.load(s);
+	//  s.skip(8);
+	// for (int idx = 0; idx < 4; ++idx)
+	//  _use[idx].load(s, false);
+
 #if 0
 	s.skip(1);
 	_aMove.load(s);
@@ -788,20 +777,38 @@ void Object::load3DO(Common::SeekableReadStream &s) {
 	s.read(buffer, 41);
 	_description = Common::String(buffer);
 
-	s.skip(4);
+	// Unverified
+	_walkCount = s.readByte();
+	_allow = s.readByte();
+	_pickup = s.readByte();
+	_defaultCommand = s.readByte();
+	// Unverified END
 
 	// Probably those here?!?!
 	_misc = s.readByte();
 	_flags = s.readByte();
 
-	s.skip(3);
+	// Unverified
+	_aType = (AType)s.readByte();
+	_lookFrames = s.readByte();
+	_seqCounter = s.readByte();
+	// Unverified END
+
 	_lookPosition.y = s.readByte() * FIXED_INT_MULTIPLIER;
 	_lookFacing = s.readByte();
 
-	s.skip(16); // Unknown
+	// Unverified
+	_lookcAnim = s.readByte();
+	_seqStack = s.readByte();
+	_seqTo = s.readByte();
+	_seqCounter2 = s.readByte();
+	// Unverified END
 
-warning("object %s, offset %d", _name.c_str(), streamPos);
-warning("object %s, lookPosX %d, lookPosY %d", _name.c_str(), _lookPosition.x, _lookPosition.y);
+	s.skip(12); // Unknown
+
+	//warning("object %s, offset %d", _name.c_str(), streamPos);
+	//warning("object %s, lookPosX %d, lookPosY %d", _name.c_str(), _lookPosition.x, _lookPosition.y);
+	//warning("object %s, defCmd %d", _name.c_str(), _defaultCommand);
 }
 
 void Object::toggleHidden() {






More information about the Scummvm-git-logs mailing list