[Scummvm-git-logs] scummvm master -> 59941ad8863b72efa5525f386e817bb662cdcfcf

djsrv dservilla at gmail.com
Thu Jun 25 03:41:33 UTC 2020


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

Summary:
f11da52a67 DIRECTOR: LINGO: Detect XCOD resources
59941ad886 DIRECTOR: LINGO: Clear LINGO.INI handlers


Commit: f11da52a67dddf5bec6332ffd72339a433e5bcf5
    https://github.com/scummvm/scummvm/commit/f11da52a67dddf5bec6332ffd72339a433e5bcf5
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-24T23:29:30-04:00

Commit Message:
DIRECTOR: LINGO: Detect XCOD resources

Changed paths:
    engines/director/director.cpp
    engines/director/lingo/lingo-object.cpp


diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 797add797d..78cdf45b5e 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -199,6 +199,15 @@ Common::Error DirectorEngine::run() {
 		if (_mainArchive->hasResource(MKTAG('B', 'N', 'D', 'L'), "Projector")) {
 			warning("Detected Projector file");
 
+			if (_mainArchive->hasResource(MKTAG('X', 'C', 'O', 'D'), -1)) {
+				Common::Array<uint16> xcod = _mainArchive->getResourceIDList(MKTAG('X', 'C', 'O', 'D'));
+				for (Common::Array<uint16>::iterator iterator = xcod.begin(); iterator != xcod.end(); ++iterator) {
+					Resource res = _mainArchive->getResourceDetail(MKTAG('X', 'C', 'O', 'D'), *iterator);
+					debug(0, "Detected XObject '%s'", res.name.c_str());
+					g_lingo->openXLib(res.name, kXObj);
+				}
+			}
+
 			if (_mainArchive->hasResource(MKTAG('S', 'T', 'R', '#'), 0)) {
 				_currentScore->setArchive(_mainArchive);
 
diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index 143cdbdad7..8054613de0 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -90,12 +90,6 @@ void Lingo::initXLibs() {
 		sym.u.bltin = lib->initializer;
 		_xlibInitializers[lib->name] = sym;
 	}
-
-	if (_vm->getPlatform() == Common::kPlatformMacintosh) {
-		// TODO: Mac executables can contain XObjects in XCOD resources.
-		// If a Mac executable exists, check which XObjects should be loaded.
-		openXLib("FileIO", kXObj);
-	}
 }
 
 void Lingo::openXLib(const Common::String &name, ObjectType type) {


Commit: 59941ad8863b72efa5525f386e817bb662cdcfcf
    https://github.com/scummvm/scummvm/commit/59941ad8863b72efa5525f386e817bb662cdcfcf
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-24T23:29:30-04:00

Commit Message:
DIRECTOR: LINGO: Clear LINGO.INI handlers

Changed paths:
    engines/director/resource.cpp


diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index ca19d552c6..fc84f2e6a3 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -81,6 +81,7 @@ void DirectorEngine::loadEXE(const Common::String movie) {
 		iniStream->read(script, iniStream->size());
 		_lingo->addCode(script, kArchMain, kMovieScript, 0);
 		_lingo->processEvent(kEventStartUp);
+		_lingo->resetLingo(true);
 		free(script);
 	} else {
 		warning("No LINGO.INI");




More information about the Scummvm-git-logs mailing list