[Scummvm-git-logs] scummvm master -> 037eee36fddc70294d0cbc0bb813a9cf3de3299c

sev- noreply at scummvm.org
Sun Aug 31 21:01:28 UTC 2025


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

Summary:
557e1267b9 DIRECTOR: Improved debug output on loading
89f78aa80e DIRECTOR: Load TextCastMembers for D6+
66a48559fd DIRECTOR: Clarified CastInfo for RTE resources
87f8f12b15 COMMON: Added toString() methods for Common::Point and Common::Rect
037eee36fd DIRECTOR: Improve debug output on loading


Commit: 557e1267b9ff98635bd95a8ceafcdaf44e6c7f98
    https://github.com/scummvm/scummvm/commit/557e1267b9ff98635bd95a8ceafcdaf44e6c7f98
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-08-31T23:01:07+02:00

Commit Message:
DIRECTOR: Improved debug output on loading

Changed paths:
    engines/director/cast.cpp
    engines/director/score.cpp


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 8dc766ad01e..81e43ae97b6 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -1893,16 +1893,16 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 		} else {
 			ci->imageQuality = READ_BE_INT32(castInfo.strings[21].data);
 
-			dumpS = Common::String::format("imageQuality: %d (0x%08X) ", ci->imageQuality, ci->imageQuality) + dumpS;
+			dumpS = Common::String::format("imageQuality: %d (0x%08X), ", ci->imageQuality, ci->imageQuality) + dumpS;
 		}
 		// fallthrough
 	case 20:
 		ci->comments = castInfo.strings[20].readString();
-		dumpS = Common::String::format("comments: '%s' ", ci->comments.c_str()) + dumpS;
+		dumpS = Common::String::format("comments: '%s', ", ci->comments.c_str()) + dumpS;
 		// fallthrough
 	case 19:
 		ci->modifiedBy = castInfo.strings[19].readString();
-		dumpS = Common::String::format("modifiedBy: '%s' ", ci->modifiedBy.c_str()) + dumpS;
+		dumpS = Common::String::format("modifiedBy: '%s', ", ci->modifiedBy.c_str()) + dumpS;
 		// fallthrough
 	case 18:
 		if (castInfo.strings[18].len != 4) {
@@ -1910,7 +1910,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 			Common::hexdump(castInfo.strings[18].data, castInfo.strings[18].len);
 		} else {
 			ci->modifiedTime = READ_BE_INT32(castInfo.strings[18].data);
-			dumpS = Common::String::format("modifiedTime: %d (0x%08X) ", ci->modifiedTime, ci->modifiedTime) + dumpS;
+			dumpS = Common::String::format("modifiedTime: %d (0x%08X), ", ci->modifiedTime, ci->modifiedTime) + dumpS;
 		}
 		// fallthrough
 	case 17:
@@ -1919,12 +1919,12 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 			Common::hexdump(castInfo.strings[17].data, castInfo.strings[17].len);
 		} else {
 			ci->creationTime = READ_BE_INT32(castInfo.strings[17].data);
-			dumpS = Common::String::format("creationTime: %d (0x%08X) ", ci->creationTime, ci->creationTime) + dumpS;
+			dumpS = Common::String::format("creationTime: %d (0x%08X), ", ci->creationTime, ci->creationTime) + dumpS;
 		}
 		// fallthrough
 	case 16:
 		ci->mediaFormatName = castInfo.strings[2].readString();
-		dumpS = Common::String::format("mediaFormatName: '%s' ", ci->mediaFormatName.c_str()) + dumpS;
+		dumpS = Common::String::format("mediaFormatName: '%s', ", ci->mediaFormatName.c_str()) + dumpS;
 		// fallthrough
 	case 15:
 		if (castInfo.strings[15].len) {
@@ -1933,7 +1933,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 				Common::hexdump(castInfo.strings[15].data, castInfo.strings[15].len);
 			} else {
 				memcpy(ci->guid, castInfo.strings[15].data, 16);
-				dumpS = "guid: <data> " + dumpS;
+				dumpS = "guid: <data>, " + dumpS;
 			}
 		}
 		// fallthrough
@@ -1943,7 +1943,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 			Common::hexdump(castInfo.strings[14].data, castInfo.strings[14].len);
 			ci->dvWindowInfo = Common::Array<byte>(castInfo.strings[14].data, castInfo.strings[14].len);
 
-			dumpS = "dvWindowInfo: <data> " + dumpS;
+			dumpS = "dvWindowInfo: <data>, " + dumpS;
 		}
 		// fallthrough
 	case 13:
@@ -1952,7 +1952,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 			ci->scriptRect = Movie::readRect(*entryStream);
 			delete entryStream;
 
-			dumpS = Common::String::format("scriptRect: [%d,%d,%d,%d] ", ci->scriptRect.left, ci->scriptRect.top, ci->scriptRect.right, ci->scriptRect.bottom) + dumpS;
+			dumpS = Common::String::format("scriptRect: [%d,%d,%d,%d], ", ci->scriptRect.left, ci->scriptRect.top, ci->scriptRect.right, ci->scriptRect.bottom) + dumpS;
 		}
 		// fallthrough
 	case 12:
@@ -1964,7 +1964,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 			ci->xtraRect.bottom = READ_BE_INT32(castInfo.strings[12].data + 8);
 			ci->xtraRect.right = READ_BE_INT32(castInfo.strings[12].data + 12);
 
-			dumpS = "xtraRect: <data> " + dumpS;
+			dumpS = "xtraRect: <data>, " + dumpS;
 		}
 		// fallthrough
 	case 11:
@@ -1972,14 +1972,14 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 			warning("Cast::loadCastInfo(): BUILDBOT: bptable for castid %d", id);
 			Common::hexdump(castInfo.strings[11].data, castInfo.strings[11].len);
 			ci->bpTable = Common::Array<byte>(castInfo.strings[11].data, castInfo.strings[11].len);
-			dumpS = "bpTable: <data> " + dumpS;
+			dumpS = "bpTable: <data>, " + dumpS;
 		}
 		// fallthrough
 	case 10:
 		if (castInfo.strings[10].len) {
 			Common::hexdump(castInfo.strings[10].data, castInfo.strings[10].len);
 			ci->xtraDisplayName = castInfo.strings[10].readString(false); // C string
-			dumpS = Common::String::format("xtraDisplayName: '%s' ", ci->xtraDisplayName.c_str()) + dumpS;
+			dumpS = Common::String::format("xtraDisplayName: '%s', ", ci->xtraDisplayName.c_str()) + dumpS;
 		}
 		// fallthrough
 	case 9:
@@ -1989,7 +1989,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 				Common::hexdump(castInfo.strings[9].data, castInfo.strings[9].len);
 			} else {
 				memcpy(ci->xtraGuid, castInfo.strings[9].data, 16);
-				dumpS = "xtraGUID: <data> " + dumpS;
+				dumpS = "xtraGUID: <data>, " + dumpS;
 			}
 		}
 		// fallthrough
@@ -1998,7 +1998,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 			entryStream = new Common::MemoryReadStreamEndian(castInfo.strings[8].data, castInfo.strings[8].len, stream.isBE());
 			ci->rteEditInfo.read(entryStream);
 			delete entryStream;
-			dumpS = Common::String::format("rteEditInfo: { %s } ", ci->rteEditInfo.toString().c_str()) + dumpS;
+			dumpS = Common::String::format("rteEditInfo: { %s }, ", ci->rteEditInfo.toString().c_str()) + dumpS;
 		}
 		// fallthrough
 	case 7:
@@ -2006,7 +2006,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 			entryStream = new Common::MemoryReadStreamEndian(castInfo.strings[7].data, castInfo.strings[7].len, stream.isBE());
 			ci->textEditInfo.read(entryStream);
 			delete entryStream;
-			dumpS = Common::String::format("textEditInfo: { %s } ", ci->textEditInfo.toString().c_str()) + dumpS;
+			dumpS = Common::String::format("textEditInfo: { %s }, ", ci->textEditInfo.toString().c_str()) + dumpS;
 		}
 		// fallthrough
 	case 6:
@@ -2019,7 +2019,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 				ci->scriptStyle.read(*entryStream, this);
 			delete entryStream;
 
-			dumpS = "scriptStyle: <data> " + dumpS;
+			dumpS = "scriptStyle: <data>, " + dumpS;
 		}
 		// fallthrough
 	case 5:
@@ -2027,7 +2027,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 			entryStream = new Common::MemoryReadStreamEndian(castInfo.strings[5].data, castInfo.strings[5].len, stream.isBE());
 			ci->scriptEditInfo.read(entryStream);
 			delete entryStream;
-			dumpS = Common::String::format("scriptEditInfo: { %s } ", ci->scriptEditInfo.toString().c_str()) + dumpS;
+			dumpS = Common::String::format("scriptEditInfo: { %s }, ", ci->scriptEditInfo.toString().c_str()) + dumpS;
 		}
 		// fallthrough
 	case 4:
@@ -2035,30 +2035,30 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
 		if (_version < kFileVer500) {
 			ci->fileType = castInfo.strings[4].readString();
 
-			dumpS = Common::String::format("fileType: '%s' ", ci->fileType.c_str()) + dumpS;
+			dumpS = Common::String::format("fileType: '%s', ", ci->fileType.c_str()) + dumpS;
 
 		} else {
 			ci->propInit = castInfo.strings[4].readString();
 
-			dumpS = Common::String::format("propInit: '%s' ", ci->propInit.c_str()) + dumpS;
+			dumpS = Common::String::format("propInit: '%s', ", ci->propInit.c_str()) + dumpS;
 		}
 		// fallthrough
 	case 3:
 		ci->fileName = castInfo.strings[3].readString();
-		dumpS = Common::String::format("fileName: '%s' ", ci->fileName.c_str()) + dumpS;
+		dumpS = Common::String::format("fileName: '%s', ", ci->fileName.c_str()) + dumpS;
 		// fallthrough
 	case 2:
 		ci->directory = castInfo.strings[2].readString();
-		dumpS = Common::String::format("directory: '%s' ", ci->directory.c_str()) + dumpS;
+		dumpS = Common::String::format("directory: '%s', ", ci->directory.c_str()) + dumpS;
 		// fallthrough
 	case 1:
 		ci->name = castInfo.strings[1].readString();
-		dumpS = Common::String::format("name: '%s' ", ci->name.c_str()) + dumpS;
+		dumpS = Common::String::format("name: '%s', ", ci->name.c_str()) + dumpS;
 		// fallthrough
 	case 0:
 		ci->script = castInfo.strings[0].readString(false);
 		if (!ci->script.empty()) {
-			dumpS = Common::String::format("script: %d bytes ", ci->script.size()) + dumpS;
+			dumpS = Common::String::format("script: %d bytes, ", ci->script.size()) + dumpS;
 		}
 		// fallthrough
 	case -1:
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 608e28b2e3f..bbe400befd8 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1759,7 +1759,7 @@ void Score::loadFrames(Common::SeekableReadStreamEndian &stream, uint16 version)
 		int32 ver = (int32)_framesStream->readUint32();
 		uint32 listStart = _framesStream->readUint32();
 
-		debugC(1, kDebugLoading, "Score::loadFrames(): len: %d, version: %d, listStart: 0x%x",
+		debugC(1, kDebugLoading, "Score::loadFrames(): D6+ len: %d, version: %d, listStart: 0x%x",
 			_framesStreamSize, ver, listStart);
 
 		_framesStream->seek(listStart);


Commit: 89f78aa80e3416c3011b9a521c7efa92afedcffd
    https://github.com/scummvm/scummvm/commit/89f78aa80e3416c3011b9a521c7efa92afedcffd
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-08-31T23:01:07+02:00

Commit Message:
DIRECTOR: Load TextCastMembers for D6+

Changed paths:
    engines/director/castmember/text.cpp


diff --git a/engines/director/castmember/text.cpp b/engines/director/castmember/text.cpp
index 49d1dcb0513..c79d77e01d5 100644
--- a/engines/director/castmember/text.cpp
+++ b/engines/director/castmember/text.cpp
@@ -117,7 +117,7 @@ TextCastMember::TextCastMember(Cast *cast, uint16 castId, Common::SeekableReadSt
 		if (debugChannelSet(2, kDebugLoading)) {
 			_initialRect.debugPrint(2, "TextCastMember(): rect:");
 		}
-	} else if (version >= kFileVer400 && version < kFileVer600) {
+	} else if (version >= kFileVer400 && version < kFileVer1100) {
 		_flags1 = flags1;
 		_borderSize = stream.readByte();
 		_gutterSize = stream.readByte();
@@ -147,7 +147,7 @@ TextCastMember::TextCastMember(Cast *cast, uint16 castId, Common::SeekableReadSt
 			_initialRect.debugPrint(2, "TextCastMember(): rect:");
 		}
 	} else {
-		warning("Text/ButtonCastMember(): >D5 isn't handled");
+		warning("STUB: Text/ButtonCastMember: Text not yet supported for version v%d (%d)", humanVersion(_cast->_version), _cast->_version);
 	}
 
 	if (asButton) {


Commit: 66a48559fdbfbc6af29d23b9cf20c9e1d57f88ef
    https://github.com/scummvm/scummvm/commit/66a48559fdbfbc6af29d23b9cf20c9e1d57f88ef
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-08-31T23:01:07+02:00

Commit Message:
DIRECTOR: Clarified CastInfo for RTE resources

Changed paths:
    engines/director/castmember/richtext.cpp
    engines/director/castmember/richtext.h


diff --git a/engines/director/castmember/richtext.cpp b/engines/director/castmember/richtext.cpp
index c3f7eade8cf..0b53046c346 100644
--- a/engines/director/castmember/richtext.cpp
+++ b/engines/director/castmember/richtext.cpp
@@ -40,7 +40,7 @@ RichTextCastMember::RichTextCastMember(Cast *cast, uint16 castId, Common::Seekab
 
 	_pf32 = Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0);
 
-	if (version >= kFileVer500 && version < kFileVer600) {
+	if (version >= kFileVer500 && version < kFileVer1100) {
 		if (debugChannelSet(5, kDebugLoading)) {
 			debugC(5, kDebugLoading, "RichTextCastMember():");
 			stream.hexdump(stream.size());
@@ -48,9 +48,14 @@ RichTextCastMember::RichTextCastMember(Cast *cast, uint16 castId, Common::Seekab
 
 		_initialRect = Movie::readRect(stream);
 		_boundingRect = Movie::readRect(stream);
-		stream.seek(8, SEEK_CUR);
+		_antialiasFlag = stream.readByte();
+		_cropFlags = stream.readByte();
+		_scrollPos = stream.readUint16BE();
+		_antialiasFontSize = stream.readUint16BE();
+		_displayHeight = stream.readUint16BE();
+
 		uint8 r = 0, g = 0, b = 0;
-		stream.readByte();
+		stream.readByte(); // skip one byte
 		r = stream.readByte();
 		g = stream.readByte();
 		b = stream.readByte();
@@ -61,7 +66,7 @@ RichTextCastMember::RichTextCastMember(Cast *cast, uint16 castId, Common::Seekab
 		b = (stream.readUint16BE() >> 8);
 		_bgColor = _pf32.RGBToColor(r, g, b);
 	} else {
-		warning("RichTextCastMember(): >D5 isn't handled");
+		warning("STUB: RichTextCastMember: RTE not yet supported for version v%d (%d)", humanVersion(_cast->_version), _cast->_version);
 	}
 
 	_type = kCastRichText;
diff --git a/engines/director/castmember/richtext.h b/engines/director/castmember/richtext.h
index 92ad1293e09..7764c1fda64 100644
--- a/engines/director/castmember/richtext.h
+++ b/engines/director/castmember/richtext.h
@@ -54,9 +54,17 @@ public:
 private:
 	Common::U32String _plainText;
 	Graphics::PixelFormat _pf32;
+	Picture *_picture;
+
+	// _initialRect
+	// _boundingRect
+	byte _antialiasFlag;
+	byte _cropFlags;
+	uint16 _scrollPos;
+	uint16 _antialiasFontSize;  // Seems to be always 12
+	uint16 _displayHeight;
 	uint32 _foreColor;
 	uint32 _bgColor;
-	Picture *_picture;
 };
 
 } // End of namespace Director


Commit: 87f8f12b1505de31efc5d0d193972130fe417530
    https://github.com/scummvm/scummvm/commit/87f8f12b1505de31efc5d0d193972130fe417530
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-08-31T23:01:07+02:00

Commit Message:
COMMON: Added toString() methods for Common::Point and Common::Rect

Changed paths:
    common/rect.h


diff --git a/common/rect.h b/common/rect.h
index 3592dc5b2b4..fc263e9f56e 100644
--- a/common/rect.h
+++ b/common/rect.h
@@ -25,6 +25,7 @@
 #include "common/scummsys.h"
 #include "common/util.h"
 #include "common/debug.h"
+#include "common/str.h"
 
 #define PRINT_RECT(x) (x).left,(x).top,(x).right,(x).bottom
 
@@ -119,6 +120,13 @@ struct PointBase {
 
 		return uint(diffx * diffx + diffy * diffy);
 	}
+
+	/**
+	 * Return string representation of the point.
+	 */
+	String toString() const {
+		return String::format("%d, %d", x, y);
+	}
 };
 
 struct Point   : public PointBase<int16, Point  > {
@@ -437,6 +445,13 @@ struct RectBase {
 		debugC(debuglevel, debugChannel, "%s %d, %d, %d, %d", caption, left, top, right, bottom);
 	}
 
+	/**
+	 * Return string representation of the rectangle.
+	 */
+	String toString() const {
+		return String::format("%d, %d, %d, %d", left, top, right, bottom);
+	}
+
 	/**
 	 * Create a rectangle around the given center.
 	 * @note The center point is rounded up and left when given an odd width and height.


Commit: 037eee36fddc70294d0cbc0bb813a9cf3de3299c
    https://github.com/scummvm/scummvm/commit/037eee36fddc70294d0cbc0bb813a9cf3de3299c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-08-31T23:01:07+02:00

Commit Message:
DIRECTOR: Improve debug output on loading

Changed paths:
    engines/director/castmember/castmember.h
    engines/director/castmember/richtext.cpp
    engines/director/castmember/text.cpp


diff --git a/engines/director/castmember/castmember.h b/engines/director/castmember/castmember.h
index f5815b55953..ad6d3f110a4 100644
--- a/engines/director/castmember/castmember.h
+++ b/engines/director/castmember/castmember.h
@@ -154,8 +154,8 @@ struct EditInfo {
 	void write(Common::WriteStream *stream);
 
 	Common::String toString() {
-		return Common::String::format("rect: [%d,%d,%d,%d] selStart: %d selEnd: %d version: %d rulerFlag: %d valid: %d",
-			rect.left, rect.top, rect.right, rect.bottom, selStart, selEnd, version, rulerFlag, valid);
+		return Common::String::format("rect: [%s] selStart: %d selEnd: %d version: %d rulerFlag: %d valid: %d",
+			rect.toString().c_str(), selStart, selEnd, version, rulerFlag, valid);
 	}
 };
 
diff --git a/engines/director/castmember/richtext.cpp b/engines/director/castmember/richtext.cpp
index 0b53046c346..f4d238a4520 100644
--- a/engines/director/castmember/richtext.cpp
+++ b/engines/director/castmember/richtext.cpp
@@ -65,6 +65,16 @@ RichTextCastMember::RichTextCastMember(Cast *cast, uint16 castId, Common::Seekab
 		g = (stream.readUint16BE() >> 8);
 		b = (stream.readUint16BE() >> 8);
 		_bgColor = _pf32.RGBToColor(r, g, b);
+
+		debugC(3, kDebugLoading, "  RichTextCastMember(): initialRect: [%s], boundingRect: [%s], antialiasFlag: 0x%02x, cropFlags: 0x%02x, scrollPos: %d, antialiasFontSize: %d, displayHeight: %d",
+			_initialRect.toString().c_str(),
+			_boundingRect.toString().c_str(),
+			_antialiasFlag,
+			_cropFlags,
+			_scrollPos,
+			_antialiasFontSize,
+			_displayHeight);
+		debugC(3, kDebugLoading, "  RichTextCastMember(): foreColor: 0x%08x, bgColor: 0x%08x", _foreColor, _bgColor);
 	} else {
 		warning("STUB: RichTextCastMember: RTE not yet supported for version v%d (%d)", humanVersion(_cast->_version), _cast->_version);
 	}
diff --git a/engines/director/castmember/text.cpp b/engines/director/castmember/text.cpp
index c79d77e01d5..08154563267 100644
--- a/engines/director/castmember/text.cpp
+++ b/engines/director/castmember/text.cpp
@@ -143,9 +143,7 @@ TextCastMember::TextCastMember(Cast *cast, uint16 castId, Common::SeekableReadSt
 				_flags1, _borderSize, _gutterSize, _boxShadow, _textType, _textAlign);
 		debugC(2, kDebugLoading, "TextCastMember(): background rgb: 0x%04x 0x%04x 0x%04x, shadow: %d flags: %d textHeight: %d",
 				_bgpalinfo1, _bgpalinfo2, _bgpalinfo3, _textShadow, _textFlags, _textHeight);
-		if (debugChannelSet(2, kDebugLoading)) {
-			_initialRect.debugPrint(2, "TextCastMember(): rect:");
-		}
+		debugC(2, kDebugLoading, "TextCastMember(): rect: [%s]", _initialRect.toString().c_str());
 	} else {
 		warning("STUB: Text/ButtonCastMember: Text not yet supported for version v%d (%d)", humanVersion(_cast->_version), _cast->_version);
 	}




More information about the Scummvm-git-logs mailing list