[Scummvm-git-logs] scummvm master -> 7ef013bde505049295da6690bf81bf01f51c0b81

rvanlaar noreply at scummvm.org
Fri Jun 28 12:40:25 UTC 2024


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

Summary:
ff35717ec7 DIRECTOR: Add code when xtra is called with int
2ef049b509 DEVTOOLS: DIRECTOR: Update XTRA generation
b780db73e2 DIRECTOR: LINGO: XTRAS: update with gen-xobj-stub
ddda6e8f96 DIRECTOR: LINGO: getXtrasNum: only show openXtras
6fca66f442 JANITORIAL: DIRECTOR: XTRAS: indentation fixes
7ef013bde5 DIRECTOR: LINGO: XTRAS: Safecracker can boot intro


Commit: ff35717ec7a36a6069c77774d808053b2cb6b280
    https://github.com/scummvm/scummvm/commit/ff35717ec7a36a6069c77774d808053b2cb6b280
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2024-06-28T14:38:17+02:00

Commit Message:
DIRECTOR: Add code when xtra is called with int

The D5 function `xtra` can be called with an int.
In that case it returns the xtra that was n-th in the list.

- The list of xtras is stable between opening and closing D5. Tested with
2 XTRAs,
- XTRA function can only take ints > 0. Throws an error when its < 1 and
- XTRA function doesn't take floats.
- XTRA function does take strings, this was already implemented.

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


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 725a55341d5..d459d115147 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1490,15 +1490,25 @@ void LB::b_xFactoryList(int nargs) {
 }
 
 void LB::b_xtra(int nargs) {
-	Common::String name = g_lingo->pop().asString();
-	if (g_lingo->_globalvars.contains(name)) {
-		Datum var = g_lingo->_globalvars[name];
-		if (var.type == OBJECT && var.u.obj->getObjType() == kXtraObj) {
+	Datum d = g_lingo->pop();
+	if (d.type == INT) {
+		int i = d.asInt() -1; // Lingo index for XTRAs start at 1
+		if (i >=0 && i < g_lingo->_openXtras.size()) {
+			Datum var = g_lingo->_globalvars[g_lingo->_openXtras[i]];
 			g_lingo->push(var);
 			return;
 		}
+	} else {
+		Common::String name = d.asString();
+		if (g_lingo->_globalvars.contains(name)) {
+			Datum var = g_lingo->_globalvars[name];
+			if (var.type == OBJECT && var.u.obj->getObjType() == kXtraObj) {
+				g_lingo->push(var);
+				return;
+			}
+		}
 	}
-	g_lingo->lingoError("Xtra not found: %s", name.c_str());
+	g_lingo->lingoError("Xtra not found: %s", d.asString().c_str());
 }
 
 ///////////////////
diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index ecdd2fe0fdb..a6e701165ed 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -373,6 +373,8 @@ void Lingo::openXLib(Common::String name, ObjectType type, const Common::Path &p
 
 	if (_xlibOpeners.contains(name)) {
 		(*_xlibOpeners[name])(type, path);
+		if (type == kXtraObj)
+			_openXtras.push_back(name);
 	} else {
 		warning("Lingo::openXLib: Unimplemented xlib: '%s'", name.c_str());
 	}
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index af63064a29b..f28f4a6d578 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -522,6 +522,7 @@ public:
 
 	OpenXLibsHash _openXLibs;
 	OpenXLibsStateHash _openXLibsState;
+	Common::StringArray _openXtras;
 
 	Common::String _floatPrecisionFormat;
 


Commit: 2ef049b509160f981839317cd064f1a40caf13c0
    https://github.com/scummvm/scummvm/commit/2ef049b509160f981839317cd064f1a40caf13c0
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2024-06-28T14:38:18+02:00

Commit Message:
DEVTOOLS: DIRECTOR: Update XTRA generation

In D5 XTRAs have the property "name".
Adds the code generation for XTRAs to have this property.

According to Director 5 Lingo Dictionary the name
is gettable and settable. Occording to my tests in D5-win,
it's only gettable.

When opening the XTRA, register the XTRA on the _openXtras array.
There's a check if the object is an XTRA when registering.
This way the generated code works when generation Xobj's as well.

Changed paths:
    devtools/director-generate-xobj-stub.py


diff --git a/devtools/director-generate-xobj-stub.py b/devtools/director-generate-xobj-stub.py
index 135dab0d3d6..8e96ed642a4 100755
--- a/devtools/director-generate-xobj-stub.py
+++ b/devtools/director-generate-xobj-stub.py
@@ -67,7 +67,7 @@ namespace Director {{
 
 class {xobject_class} : public Object<{xobject_class}> {{
 public:
-	{xobject_class}(ObjectType objType);
+	{xobject_class}(ObjectType objType);{xtra_props_h}
 }};
 
 namespace {xobj_class} {{
@@ -132,11 +132,13 @@ static BuiltinProto xlibBuiltins[] = {{
 
 {xobject_class}::{xobject_class}(ObjectType ObjectType) :Object<{xobject_class}>("{name}") {{
 	_objType = ObjectType;
-}}
+}}{xtra_props}
 
 void {xobj_class}::open(ObjectType type, const Common::Path &path) {{
     {xobject_class}::initMethods(xlibMethods);
     {xobject_class} *xobj = new {xobject_class}(type);
+    if (type == kXtraObj)
+        g_lingo->_openXtras.push_back(xlibName);
     g_lingo->exposeXObject(xlibName, xobj);
     g_lingo->initBuiltIns(xlibBuiltins);
 }}
@@ -162,6 +164,26 @@ XLIB_NEW_TEMPLATE = """void {xobj_class}::m_new(int nargs) {{
 }}"""
 
 
+# XTRA PROPS TEMPLATE and Header contains extra newline at the beginning.
+# This keeps the newlines correct when `TEMPLATE` is used for xlibs.
+XTRA_PROPS_TEMPLATE = """
+
+bool {xobject_class}::hasProp(const Common::String &propName) {{
+	return (propName == "name");
+}}
+
+Datum {xobject_class}::getProp(const Common::String &propName) {{
+	if (propName == "name")
+		return Datum({xobj_class}::xlibName);
+	warning("{xobj_class}::getProp: unknown property '%s'", propName.c_str());
+	return Datum();
+}}"""
+
+XTRA_PROPS_H = """
+
+	bool hasProp(const Common::String &propName) override;
+	Datum getProp(const Common::String &propName) override;"""
+
 
 XCMD_TEMPLATE_H = (
     LEGAL
@@ -718,6 +740,7 @@ def generate_xobject_stubs(
                 for x in meths
             ]
         ),
+        xtra_props="",
 		xobj_new=XLIB_NEW_TEMPLATE.format(xobj_class=xobj_class),
         xobj_stubs="\n".join(
             [
@@ -742,6 +765,7 @@ def generate_xobject_stubs(
         slug_upper=slug.upper(),
         xobject_class=xobject_class,
         xobj_class=xobj_class,
+        xtra_props_h="",
         methlist="\n".join([TEMPLATE_HEADER_METH.format(**x) for x in meths]),
     )
     if dry_run:
@@ -888,6 +912,8 @@ def generate_xtra_stubs(
             director_version=director_version,
             methtype="HBLTIN",
         ) for x in meths if x["functype"] == "toplevel"]),
+        xtra_props=XTRA_PROPS_TEMPLATE.format(xobj_class=xobj_class,
+                                              xobject_class=xobject_class),
 		xobj_new=XLIB_NEW_TEMPLATE.format(xobj_class=xobj_class),
         xobj_stubs="\n".join(
             [
@@ -910,6 +936,7 @@ def generate_xtra_stubs(
         slug_upper=slug.upper(),
         xobject_class=xobject_class,
         xobj_class=xobj_class,
+        xtra_props_h=XTRA_PROPS_H,
         methlist="\n".join([TEMPLATE_HEADER_METH.format(**x) for x in meths]),
     )
     if dry_run:


Commit: b780db73e2bdca018517bc92b59b5353b78b7140
    https://github.com/scummvm/scummvm/commit/b780db73e2bdca018517bc92b59b5353b78b7140
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2024-06-28T14:38:18+02:00

Commit Message:
DIRECTOR: LINGO: XTRAS: update with gen-xobj-stub

Rerun the director-generate-xobj-stub.py for
- directsound
- keypoll
- qtvrxtra
- timextra

Includes new registration for XTRAs by name and
D5 XTRAs property name.

According to D5 lingo dictionary
this property is settable and gettable. Testing in D5-win show
that the poperty is only gettable.

Implement these items also for:
- fileio

Changed paths:
    engines/director/lingo/lingo-object.cpp
    engines/director/lingo/xlibs/fileio.cpp
    engines/director/lingo/xlibs/fileio.h
    engines/director/lingo/xtras/directsound.cpp
    engines/director/lingo/xtras/directsound.h
    engines/director/lingo/xtras/keypoll.cpp
    engines/director/lingo/xtras/keypoll.h
    engines/director/lingo/xtras/qtvrxtra.cpp
    engines/director/lingo/xtras/qtvrxtra.h
    engines/director/lingo/xtras/timextra.cpp
    engines/director/lingo/xtras/timextra.h


diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index a6e701165ed..ecdd2fe0fdb 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -373,8 +373,6 @@ void Lingo::openXLib(Common::String name, ObjectType type, const Common::Path &p
 
 	if (_xlibOpeners.contains(name)) {
 		(*_xlibOpeners[name])(type, path);
-		if (type == kXtraObj)
-			_openXtras.push_back(name);
 	} else {
 		warning("Lingo::openXLib: Unimplemented xlib: '%s'", name.c_str());
 	}
diff --git a/engines/director/lingo/xlibs/fileio.cpp b/engines/director/lingo/xlibs/fileio.cpp
index f3dceeedc43..2eb2db6aab4 100644
--- a/engines/director/lingo/xlibs/fileio.cpp
+++ b/engines/director/lingo/xlibs/fileio.cpp
@@ -183,6 +183,8 @@ static BuiltinProto xlibBuiltins[] = {
 void FileIO::open(ObjectType type, const Common::Path &path) {
 	FileObject::initMethods(xlibMethods);
 	FileObject *xobj = new FileObject(type);
+	if (g_director->getVersion() >= 500)
+		g_lingo->_openXtras.push_back(xlibName);
 	g_lingo->exposeXObject(xlibName, xobj);
 	g_lingo->initBuiltIns(xlibBuiltins);
 }
@@ -216,6 +218,17 @@ FileObject::~FileObject() {
 	clear();
 }
 
+bool FileObject::hasProp(const Common::String &propName) {
+	return (propName == "name");
+}
+
+Datum FileObject::getProp(const Common::String &propName) {
+	if (propName == "name")
+		return Datum(FileIO::xlibName);
+	warning("FileIO::getProp: unknown property '%s'", propName.c_str());
+	return Datum();
+}
+
 FileIOError FileObject::open(const Common::String &origpath, const Common::String &mode) {
 	Common::SaveFileManager *saves = g_system->getSavefileManager();
 	Common::String path = origpath;
diff --git a/engines/director/lingo/xlibs/fileio.h b/engines/director/lingo/xlibs/fileio.h
index 777b5d899dc..34dff18335b 100644
--- a/engines/director/lingo/xlibs/fileio.h
+++ b/engines/director/lingo/xlibs/fileio.h
@@ -64,6 +64,9 @@ public:
 	FileObject(const FileObject &obj);
 	~FileObject() override;
 
+	bool hasProp(const Common::String &propName) override;
+	Datum getProp(const Common::String &propName) override;
+
 	FileIOError open(const Common::String &origpath, const Common::String &mode);
 	void clear();
 	FileIOError saveFileError();
diff --git a/engines/director/lingo/xtras/directsound.cpp b/engines/director/lingo/xtras/directsound.cpp
index 7b759d1aca7..97f0a7341e2 100644
--- a/engines/director/lingo/xtras/directsound.cpp
+++ b/engines/director/lingo/xtras/directsound.cpp
@@ -159,9 +159,22 @@ DirectsoundXtraObject::DirectsoundXtraObject(ObjectType ObjectType) :Object<Dire
 	_objType = ObjectType;
 }
 
+bool DirectsoundXtraObject::hasProp(const Common::String &propName) {
+	return (propName == "name");
+}
+
+Datum DirectsoundXtraObject::getProp(const Common::String &propName) {
+	if (propName == "name")
+		return Datum(DirectsoundXtra::xlibName);
+	warning("DirectsoundXtra::getProp: unknown property '%s'", propName.c_str());
+	return Datum();
+}
+
 void DirectsoundXtra::open(ObjectType type, const Common::Path &path) {
     DirectsoundXtraObject::initMethods(xlibMethods);
     DirectsoundXtraObject *xobj = new DirectsoundXtraObject(type);
+    if (type == kXtraObj)
+        g_lingo->_openXtras.push_back(xlibName);
     g_lingo->exposeXObject(xlibName, xobj);
     g_lingo->initBuiltIns(xlibBuiltins);
 }
diff --git a/engines/director/lingo/xtras/directsound.h b/engines/director/lingo/xtras/directsound.h
index b45cbd34549..36bf080f1a7 100644
--- a/engines/director/lingo/xtras/directsound.h
+++ b/engines/director/lingo/xtras/directsound.h
@@ -27,6 +27,9 @@ namespace Director {
 class DirectsoundXtraObject : public Object<DirectsoundXtraObject> {
 public:
 	DirectsoundXtraObject(ObjectType objType);
+
+	bool hasProp(const Common::String &propName) override;
+	Datum getProp(const Common::String &propName) override;
 };
 
 namespace DirectsoundXtra {
diff --git a/engines/director/lingo/xtras/keypoll.cpp b/engines/director/lingo/xtras/keypoll.cpp
index 8f8770fee02..90793a2ae9f 100644
--- a/engines/director/lingo/xtras/keypoll.cpp
+++ b/engines/director/lingo/xtras/keypoll.cpp
@@ -72,9 +72,22 @@ KeypollXtraObject::KeypollXtraObject(ObjectType ObjectType) :Object<KeypollXtraO
 	_objType = ObjectType;
 }
 
+bool KeypollXtraObject::hasProp(const Common::String &propName) {
+	return (propName == "name");
+}
+
+Datum KeypollXtraObject::getProp(const Common::String &propName) {
+	if (propName == "name")
+		return Datum(KeypollXtra::xlibName);
+	warning("KeypollXtra::getProp: unknown property '%s'", propName.c_str());
+	return Datum();
+}
+
 void KeypollXtra::open(ObjectType type, const Common::Path &path) {
     KeypollXtraObject::initMethods(xlibMethods);
     KeypollXtraObject *xobj = new KeypollXtraObject(type);
+    if (type == kXtraObj)
+        g_lingo->_openXtras.push_back(xlibName);
     g_lingo->exposeXObject(xlibName, xobj);
     g_lingo->initBuiltIns(xlibBuiltins);
 }
diff --git a/engines/director/lingo/xtras/keypoll.h b/engines/director/lingo/xtras/keypoll.h
index f3b0b046806..35a01a723df 100644
--- a/engines/director/lingo/xtras/keypoll.h
+++ b/engines/director/lingo/xtras/keypoll.h
@@ -27,6 +27,9 @@ namespace Director {
 class KeypollXtraObject : public Object<KeypollXtraObject> {
 public:
 	KeypollXtraObject(ObjectType objType);
+
+	bool hasProp(const Common::String &propName) override;
+	Datum getProp(const Common::String &propName) override;
 };
 
 namespace KeypollXtra {
diff --git a/engines/director/lingo/xtras/qtvrxtra.cpp b/engines/director/lingo/xtras/qtvrxtra.cpp
index 6684d0344eb..a2af7a832f7 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -235,9 +235,22 @@ QtvrxtraXtraObject::QtvrxtraXtraObject(ObjectType ObjectType) :Object<QtvrxtraXt
 	_objType = ObjectType;
 }
 
+bool QtvrxtraXtraObject::hasProp(const Common::String &propName) {
+	return (propName == "name");
+}
+
+Datum QtvrxtraXtraObject::getProp(const Common::String &propName) {
+	if (propName == "name")
+		return Datum(QtvrxtraXtra::xlibName);
+	warning("QtvrxtraXtra::getProp: unknown property '%s'", propName.c_str());
+	return Datum();
+}
+
 void QtvrxtraXtra::open(ObjectType type, const Common::Path &path) {
     QtvrxtraXtraObject::initMethods(xlibMethods);
     QtvrxtraXtraObject *xobj = new QtvrxtraXtraObject(type);
+    if (type == kXtraObj)
+        g_lingo->_openXtras.push_back(xlibName);
     g_lingo->exposeXObject(xlibName, xobj);
     g_lingo->initBuiltIns(xlibBuiltins);
 }
diff --git a/engines/director/lingo/xtras/qtvrxtra.h b/engines/director/lingo/xtras/qtvrxtra.h
index 51e0c3541ba..207adc1e560 100644
--- a/engines/director/lingo/xtras/qtvrxtra.h
+++ b/engines/director/lingo/xtras/qtvrxtra.h
@@ -27,6 +27,9 @@ namespace Director {
 class QtvrxtraXtraObject : public Object<QtvrxtraXtraObject> {
 public:
 	QtvrxtraXtraObject(ObjectType objType);
+
+	bool hasProp(const Common::String &propName) override;
+	Datum getProp(const Common::String &propName) override;
 };
 
 namespace QtvrxtraXtra {
diff --git a/engines/director/lingo/xtras/timextra.cpp b/engines/director/lingo/xtras/timextra.cpp
index c5c0c7d183e..a25b61c6ac4 100644
--- a/engines/director/lingo/xtras/timextra.cpp
+++ b/engines/director/lingo/xtras/timextra.cpp
@@ -63,9 +63,22 @@ TimextraXtraObject::TimextraXtraObject(ObjectType ObjectType) :Object<TimextraXt
 	_objType = ObjectType;
 }
 
+bool TimextraXtraObject::hasProp(const Common::String &propName) {
+	return (propName == "name");
+}
+
+Datum TimextraXtraObject::getProp(const Common::String &propName) {
+	if (propName == "name")
+		return Datum(TimextraXtra::xlibName);
+	warning("TimextraXtra::getProp: unknown property '%s'", propName.c_str());
+	return Datum();
+}
+
 void TimextraXtra::open(ObjectType type, const Common::Path &path) {
     TimextraXtraObject::initMethods(xlibMethods);
     TimextraXtraObject *xobj = new TimextraXtraObject(type);
+    if (type == kXtraObj)
+        g_lingo->_openXtras.push_back(xlibName);
     g_lingo->exposeXObject(xlibName, xobj);
     g_lingo->initBuiltIns(xlibBuiltins);
 }
diff --git a/engines/director/lingo/xtras/timextra.h b/engines/director/lingo/xtras/timextra.h
index 829147ed3bd..fb8e34f045e 100644
--- a/engines/director/lingo/xtras/timextra.h
+++ b/engines/director/lingo/xtras/timextra.h
@@ -27,6 +27,9 @@ namespace Director {
 class TimextraXtraObject : public Object<TimextraXtraObject> {
 public:
 	TimextraXtraObject(ObjectType objType);
+
+	bool hasProp(const Common::String &propName) override;
+	Datum getProp(const Common::String &propName) override;
 };
 
 namespace TimextraXtra {


Commit: ddda6e8f960cbdfd388425eb9d9f7b40066e7a3d
    https://github.com/scummvm/scummvm/commit/ddda6e8f960cbdfd388425eb9d9f7b40066e7a3d
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2024-06-28T14:38:18+02:00

Commit Message:
DIRECTOR: LINGO: getXtrasNum: only show openXtras

Fetching the number of Xtras should only show the open Xtras.

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


diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 18751c27fe7..135eb3c34a3 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -1266,7 +1266,7 @@ int Lingo::getMembersNum() {
 }
 
 int Lingo::getXtrasNum() {
-	return _openXLibs.size();
+	return _openXtras.size();
 }
 
 int Lingo::getMenuItemsNum(Datum &d) {


Commit: 6fca66f442797dbce5decbb4a0ea82f7b16ba14f
    https://github.com/scummvm/scummvm/commit/6fca66f442797dbce5decbb4a0ea82f7b16ba14f
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2024-06-28T14:38:18+02:00

Commit Message:
JANITORIAL: DIRECTOR: XTRAS: indentation fixes

Changed paths:
    engines/director/lingo/xtras/directsound.cpp
    engines/director/lingo/xtras/qtvrxtra.cpp


diff --git a/engines/director/lingo/xtras/directsound.cpp b/engines/director/lingo/xtras/directsound.cpp
index 97f0a7341e2..8f495d734fe 100644
--- a/engines/director/lingo/xtras/directsound.cpp
+++ b/engines/director/lingo/xtras/directsound.cpp
@@ -97,8 +97,8 @@ namespace Director {
 
 const char *DirectsoundXtra::xlibName = "Directsound";
 const XlibFileDesc DirectsoundXtra::fileNames[] = {
-	{ "directsound",   nullptr },
-	{ nullptr,        nullptr },
+	{ "directsound",	nullptr },
+	{ nullptr,			nullptr },
 };
 
 static MethodProto xlibMethods[] = {
diff --git a/engines/director/lingo/xtras/qtvrxtra.cpp b/engines/director/lingo/xtras/qtvrxtra.cpp
index a2af7a832f7..df6b7e686c4 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -155,8 +155,8 @@ namespace Director {
 
 const char *QtvrxtraXtra::xlibName = "Qtvrxtra";
 const XlibFileDesc QtvrxtraXtra::fileNames[] = {
-	{ "qtvrxtra",   nullptr },
-	{ nullptr,        nullptr },
+	{ "qtvrxtra",	nullptr },
+	{ nullptr,		nullptr },
 };
 
 static MethodProto xlibMethods[] = {
@@ -256,9 +256,8 @@ void QtvrxtraXtra::open(ObjectType type, const Common::Path &path) {
 }
 
 void QtvrxtraXtra::close(ObjectType type) {
-    QtvrxtraXtraObject::cleanupMethods();
-    g_lingo->_globalvars[xlibName] = Datum();
-
+	QtvrxtraXtraObject::cleanupMethods();
+	g_lingo->_globalvars[xlibName] = Datum();
 }
 
 void QtvrxtraXtra::m_new(int nargs) {


Commit: 7ef013bde505049295da6690bf81bf01f51c0b81
    https://github.com/scummvm/scummvm/commit/7ef013bde505049295da6690bf81bf01f51c0b81
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2024-06-28T14:38:18+02:00

Commit Message:
DIRECTOR: LINGO: XTRAS: Safecracker can boot intro

Implement enough of the Xtra's to get Safecracker to pass the
initGlobals and continue onto its next movie file.
That is, the introduction movie will now play.

Changes:
- directsound is know as Dsound_r on disk
- Leverage XOBJSTUB to return Datum(1) for dsOpen
- QTVR is known as Qtvrw32 on disk
- Add QTVREnter to the methodProto, it wasn't added automatically by the
  stub generation

Changed paths:
    engines/director/lingo/xtras/directsound.cpp
    engines/director/lingo/xtras/qtvrxtra.cpp


diff --git a/engines/director/lingo/xtras/directsound.cpp b/engines/director/lingo/xtras/directsound.cpp
index 8f495d734fe..f8f85f3b5b5 100644
--- a/engines/director/lingo/xtras/directsound.cpp
+++ b/engines/director/lingo/xtras/directsound.cpp
@@ -98,6 +98,7 @@ namespace Director {
 const char *DirectsoundXtra::xlibName = "Directsound";
 const XlibFileDesc DirectsoundXtra::fileNames[] = {
 	{ "directsound",	nullptr },
+	{ "Dsound_r", 		nullptr },
 	{ nullptr,			nullptr },
 };
 
@@ -191,7 +192,7 @@ void DirectsoundXtra::m_new(int nargs) {
 	g_lingo->push(g_lingo->_state->me);
 }
 
-XOBJSTUB(DirectsoundXtra::m_dsOpen, 0)
+XOBJSTUB(DirectsoundXtra::m_dsOpen, 1)
 XOBJSTUB(DirectsoundXtra::m_dsNewSound, 0)
 XOBJSTUB(DirectsoundXtra::m_dsDelSound, 0)
 XOBJSTUB(DirectsoundXtra::m_dsDupSound, 0)
diff --git a/engines/director/lingo/xtras/qtvrxtra.cpp b/engines/director/lingo/xtras/qtvrxtra.cpp
index df6b7e686c4..6a59aa1aca6 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -152,16 +152,17 @@ IsQTVRMovie object me --> integer (non-zero if the movie is a valid, open QTVR m
  */
 
 namespace Director {
-
-const char *QtvrxtraXtra::xlibName = "Qtvrxtra";
+const char *QtvrxtraXtra::xlibName = "QTVRXtra";
 const XlibFileDesc QtvrxtraXtra::fileNames[] = {
 	{ "qtvrxtra",	nullptr },
+	{ "Qtvrw32",	nullptr },
 	{ nullptr,		nullptr },
 };
 
 static MethodProto xlibMethods[] = {
 	{ "new",				QtvrxtraXtra::m_new,		 0, 0,	500 },
 	{ "forget",				QtvrxtraXtra::m_forget,		 0, 0,	500 },
+	{ "QTVREnter",			QtvrxtraXtra::m_QTVREnter,	 1, 1,	500 },
 	{ "QTVROpen",				QtvrxtraXtra::m_QTVROpen,		 3, 0,	500 },
 	{ "QTVRClose",				QtvrxtraXtra::m_QTVRClose,		 0, 0,	500 },
 	{ "QTVRUpdate",				QtvrxtraXtra::m_QTVRUpdate,		 0, 0,	500 },




More information about the Scummvm-git-logs mailing list