[Scummvm-git-logs] scummvm master -> c6ca956f079e4cb7cb9a3a380aaac6348417e6b4

sev- noreply at scummvm.org
Tue Sep 2 21:45:11 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:
4a7c81427f DIRECTOR: Do not attempt to parse non-present EXEs
5dcd8e6983 DIRECTOR: Do not attempt to load SerialPort Xlib in later Directors
1f8e24b1d8 DIRECTOR: Found requested movie bitdepth in WVCI chunk
dcadc3e85a DIRECTOR: Added missing break. Couresy of digitall
c6ca956f07 DIRECTOR: Improved debug output on loading


Commit: 4a7c81427f967c747050292c2654a4d4fc862031
    https://github.com/scummvm/scummvm/commit/4a7c81427f967c747050292c2654a4d4fc862031
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-02T23:45:01+02:00

Commit Message:
DIRECTOR: Do not attempt to parse non-present EXEs

If we run not from a projector but from a DIR file or
command line, we were still trying to parse file with empty path.

That was generating irrelevant warning.

Changed paths:
    engines/director/resource.cpp


diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 24f276be59a..8f4bdfa24ef 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -619,6 +619,11 @@ void Window::loadStartMovieXLibs() {
 ProjectorArchive::ProjectorArchive(Common::Path path)
 	: _path(path), _files() {
 
+	if (path.empty()) {
+		_isLoaded = false;
+		return;
+	}
+
 	// Buffer 100K into memory
 	Common::SeekableReadStream *stream = createBufferedReadStream();
 	if (!stream) {


Commit: 5dcd8e69837a21ab7b17bd45592280baaad8af3a
    https://github.com/scummvm/scummvm/commit/5dcd8e69837a21ab7b17bd45592280baaad8af3a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-02T23:45:02+02:00

Commit Message:
DIRECTOR: Do not attempt to load SerialPort Xlib in later Directors

Changed paths:
    engines/director/resource.cpp


diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 8f4bdfa24ef..3f5240f0676 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -613,7 +613,12 @@ void Window::loadStartMovieXLibs() {
 	if (strcmp(g_director->getGameId(), "warlock") == 0 && g_director->getPlatform() != Common::kPlatformWindows) {
 		g_lingo->openXLib("FPlayXObj", kXObj, Common::Path());
 	}
-	g_lingo->openXLib("SerialPort", kXObj, Common::Path());
+
+	// After D5 we always have list of Xlibs to load
+	if (g_director->getVersion() < 500 && g_director->getPlatform() == Common::kPlatformMacintosh) {
+		// SerialPort is Mac-only
+		g_lingo->openXLib("SerialPort", kXObj, Common::Path());
+	}
 }
 
 ProjectorArchive::ProjectorArchive(Common::Path path)


Commit: 1f8e24b1d86ae7e6497f9adeabc459ad53a19b4e
    https://github.com/scummvm/scummvm/commit/1f8e24b1d86ae7e6497f9adeabc459ad53a19b4e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-02T23:45:02+02:00

Commit Message:
DIRECTOR: Found requested movie bitdepth in WVCI chunk

In order to make it work, we need to implement on-the-fly
bit depth switching in the engine.

Also, test what is happening if movie with different bitdepth
are loaded simultaneously.

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


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 81e43ae97b6..d2a9970fa61 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -460,12 +460,12 @@ bool Cast::loadConfig() {
 
 		/* version = */ stream->readUint16();	// We've already read it, this is offset 36
 
-		_field21 = stream->readSint16();
+		_movieDepth = stream->readSint16();
 		_field22 = stream->readSint32();
 		_field23 = stream->readSint32();
 
-		debugC(1, kDebugLoading, "Cast::loadConfig(): field17: %d, field18: %d, field19: %d, field21: %d, field22: %d field23: %d",
-			_field17, _field18, _field19, _field21, _field22, _field23);
+		debugC(1, kDebugLoading, "Cast::loadConfig(): field17: %d, field18: %d, field19: %d, movieDepth: %d, field22: %d field23: %d",
+			_field17, _field18, _field19, _movieDepth, _field22, _field23);
 	}
 
 	if (_version >= kFileVer400) {
@@ -560,6 +560,10 @@ bool Cast::loadConfig() {
 		_vm->setVersion(humanVer);
 	}
 
+	if (_movieDepth > 0) {
+		warning("STUB: loadConfig(): Movie bit depth is %d", _movieDepth);
+	}
+
 	delete stream;
 	return true;
 }
@@ -604,7 +608,7 @@ void Cast::saveConfig(Common::SeekableWriteStream *writeStream, uint32 offset) {
 
 	writeStream->writeUint16BE(_version);   		// 36
 
-	writeStream->writeUint16BE(_field21);           // 38
+	writeStream->writeUint16BE(_movieDepth);           // 38
 	writeStream->writeUint32BE(_field22);           // 40
 	writeStream->writeUint32BE(_field23);           // 44
 
@@ -1156,7 +1160,7 @@ uint32 Cast::computeChecksum() {
 	check *= _field18 + 18;
 	check += _field19 + 19;
 	check *= _version + 20;
-	check += _field21 + 21;
+	check += _movieDepth + 21;
 	check += _field22 + 22;
 	check += _field23 + 23;
 	check += _field24 + 24;
diff --git a/engines/director/cast.h b/engines/director/cast.h
index 19153ec48e6..7a27cc1f558 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -218,7 +218,7 @@ public:
 	/* 31 */ uint8 _field18;
 	/* 32 */ int32 _field19;
 	/* 36 */ int16 _version;
-	/* 38 */ int16 _field21;
+	/* 38 */ int16 _movieDepth;
 	/* 40 */ int32 _field22;
 	/* 44 */ int32 _field23;
 	/* 48 */ int32 _field24;


Commit: dcadc3e85a958abc79e5cbe387618de6643c9812
    https://github.com/scummvm/scummvm/commit/dcadc3e85a958abc79e5cbe387618de6643c9812
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-02T23:45:02+02:00

Commit Message:
DIRECTOR: Added missing break. Couresy of digitall

Changed paths:
    engines/director/frame.cpp


diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 78cdd65aee0..3ea677d4679 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -1224,6 +1224,7 @@ void Frame::readMainChannelsD6(Common::MemoryReadStreamEndian &stream, uint16 of
 			break;
 		case 0+4:
 			_mainChannels.scriptSpriteListIdx = stream.readUint32();
+			break;
 		case 0+6:
 			_mainChannels.scriptSpriteListIdx = stream.readUint16();
 			break;


Commit: c6ca956f079e4cb7cb9a3a380aaac6348417e6b4
    https://github.com/scummvm/scummvm/commit/c6ca956f079e4cb7cb9a3a380aaac6348417e6b4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-02T23:45:02+02:00

Commit Message:
DIRECTOR: Improved debug output on loading

Changed paths:
    engines/director/cast.cpp
    engines/director/castmember/castmember.cpp
    engines/director/movie.cpp


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index d2a9970fa61..6c68539900f 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -1604,7 +1604,7 @@ void Cast::loadCastData(Common::SeekableReadStreamEndian &stream, uint16 id, Res
 		warning("BUILDBOT: Left over bytes: %d in dataStream for id: %d type: %s", leftOver, id, castType2str((CastType) castType));
 
 	if (target) { // Skip unhandled casts
-		debugCN(3, kDebugLoading, "Children: ");
+		debugCN(3, kDebugLoading, "  Children: ");
 		for (uint child = 0; child < res->children.size(); child++) {
 			debugCN(3, kDebugLoading, "%d ", res->children[child].index);
 			target->_children.push_back(res->children[child]);
diff --git a/engines/director/castmember/castmember.cpp b/engines/director/castmember/castmember.cpp
index f1c8b12907c..86ac31600c5 100644
--- a/engines/director/castmember/castmember.cpp
+++ b/engines/director/castmember/castmember.cpp
@@ -38,10 +38,7 @@ void EditInfo::read(Common::ReadStreamEndian *stream) {
 	rulerFlag = stream->readByte();
 	// We're ignoring 2 bytes here
 	valid = true;
-	if (debugChannelSet(3, kDebugLoading)) {
-		rect.debugPrint(0, "EditInfo: ");
-		debug("selStart: %d  selEnd: %d  version: %d  rulerFlag: %d", selStart, selEnd, version, rulerFlag);
-	}
+	debugC(3, kDebugLoading, "  EditInfo: rect: [%s],  selStart: %d,  selEnd: %d,  version: %d,  rulerFlag: %d", rect.toString().c_str(), selStart, selEnd, version, rulerFlag);
 }
 
 void EditInfo::write(Common::WriteStream *stream) {
diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index 11c940f2031..ce03e593849 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -323,7 +323,7 @@ InfoEntries Movie::loadInfoEntries(Common::SeekableReadStreamEndian &stream, uin
 		res.strings[i].data = (byte *)malloc(res.strings[i].len);
 		stream.read(res.strings[i].data, res.strings[i].len);
 
-		debugC(6, kDebugLoading, "InfoEntry %d: %d bytes", i, res.strings[i].len);
+		debugC(6, kDebugLoading, "    InfoEntry %d: %d bytes", i, res.strings[i].len);
 	}
 
 	free(entries);




More information about the Scummvm-git-logs mailing list