[Scummvm-git-logs] scummvm master -> 1c5231ec761864b8015158dedaea488bcf41561b

djsrv dservilla at gmail.com
Sun Jul 11 19:24:18 UTC 2021


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

Summary:
18255c56f4 DIRECTOR: LINGO: Update header guards
cff471be22 DIRECTOR: LINGO: Remove parens from BuiltinProto
60c4394e8a DIRECTOR: LINGO: Create function for registering new builtins
b8d39546e4 DIRCTOR: LINGO: Stub FPlayXobj
1c5231ec76 DIRECTOR: LINGO: Fix FileIO type


Commit: 18255c56f4bb91bfcaf5ae8d6e358031189e4ed2
    https://github.com/scummvm/scummvm/commit/18255c56f4bb91bfcaf5ae8d6e358031189e4ed2
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-11T13:44:35-04:00

Commit Message:
DIRECTOR: LINGO: Update header guards

The xobject directory was renamed but the header guards weren't updated.

Changed paths:
    engines/director/lingo/xlibs/fileio.h
    engines/director/lingo/xlibs/flushxobj.h
    engines/director/lingo/xlibs/palxobj.h
    engines/director/lingo/xlibs/winxobj.h


diff --git a/engines/director/lingo/xlibs/fileio.h b/engines/director/lingo/xlibs/fileio.h
index d3b8d469a2..23a4963303 100644
--- a/engines/director/lingo/xlibs/fileio.h
+++ b/engines/director/lingo/xlibs/fileio.h
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef DIRECTOR_LINGO_XOBJECT_FILEIO_H
-#define DIRECTOR_LINGO_XOBJECT_FILEIO_H
+#ifndef DIRECTOR_LINGO_XLIBS_FILEIO_H
+#define DIRECTOR_LINGO_XLIBS_FILEIO_H
 
 namespace Common {
 class SeekableReadStream;
diff --git a/engines/director/lingo/xlibs/flushxobj.h b/engines/director/lingo/xlibs/flushxobj.h
index 4894f04646..a23f36c1c4 100644
--- a/engines/director/lingo/xlibs/flushxobj.h
+++ b/engines/director/lingo/xlibs/flushxobj.h
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef DIRECTOR_LINGO_XOBJECT_FLUSHXOBJ_H
-#define DIRECTOR_LINGO_XOBJECT_FLUSHXOBJ_H
+#ifndef DIRECTOR_LINGO_XLIBS_FLUSHXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_FLUSHXOBJ_H
 
 namespace Director {
 
diff --git a/engines/director/lingo/xlibs/palxobj.h b/engines/director/lingo/xlibs/palxobj.h
index a38d4a0c7f..4da3408320 100644
--- a/engines/director/lingo/xlibs/palxobj.h
+++ b/engines/director/lingo/xlibs/palxobj.h
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef DIRECTOR_LINGO_XOBJECT_PALXOBJ_H
-#define DIRECTOR_LINGO_XOBJECT_PALXOBJ_H
+#ifndef DIRECTOR_LINGO_XLIBS_PALXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_PALXOBJ_H
 
 namespace Director {
 
diff --git a/engines/director/lingo/xlibs/winxobj.h b/engines/director/lingo/xlibs/winxobj.h
index 9d2aee7834..c37de5d881 100644
--- a/engines/director/lingo/xlibs/winxobj.h
+++ b/engines/director/lingo/xlibs/winxobj.h
@@ -21,8 +21,8 @@
  */
 
 
-#ifndef DIRECTOR_LINGO_XOBJECT_WINXOBJ_H
-#define DIRECTOR_LINGO_XOBJECT_WINXOBJ_H
+#ifndef DIRECTOR_LINGO_XLIBS_WINXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_WINXOBJ_H
 
 namespace Director {
 


Commit: cff471be221a958278078f759c3e94f43c02e4ae
    https://github.com/scummvm/scummvm/commit/cff471be221a958278078f759c3e94f43c02e4ae
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-11T14:51:28-04:00

Commit Message:
DIRECTOR: LINGO: Remove parens from BuiltinProto

This field isn't necessary and we don't use it.

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


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index e6f22378f6..a162b36898 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -85,190 +85,189 @@ static struct BuiltinProto {
 	void (*func)(int);
 	int minArgs;	// -1 -- arglist
 	int maxArgs;
-	bool parens;
 	int version;
 	SymbolType type;
 } builtins[] = {
 	// Math
-	{ "abs",			LB::b_abs,			1, 1, true, 200, FBLTIN },	// D2 function
-	{ "atan",			LB::b_atan,			1, 1, true, 400, FBLTIN },	//			D4 f
-	{ "cos",			LB::b_cos,			1, 1, true, 400, FBLTIN },	//			D4 f
-	{ "exp",			LB::b_exp,			1, 1, true, 400, FBLTIN },	//			D4 f
-	{ "float",			LB::b_float,		1, 1, true, 400, FBLTIN },	//			D4 f
-	{ "integer",		LB::b_integer,		1, 1, true, 300, FBLTIN },	//		D3 f
-	{ "log",			LB::b_log,			1, 1, true, 400, FBLTIN },	//			D4 f
-	{ "pi",				LB::b_pi,			0, 0, true, 400, FBLTIN },	//			D4 f
-	{ "power",			LB::b_power,		2, 2, true, 400, FBLTIN },	//			D4 f
-	{ "random",			LB::b_random,		1, 1, true, 200, FBLTIN },	// D2 f
-	{ "sin",			LB::b_sin,			1, 1, true, 400, FBLTIN },	//			D4 f
-	{ "sqrt",			LB::b_sqrt,			1, 1, true, 200, FBLTIN },	// D2 f
-	{ "tan",			LB::b_tan,			1, 1, true, 400, FBLTIN },	//			D4 f
+	{ "abs",			LB::b_abs,			1, 1, 200, FBLTIN },	// D2 function
+	{ "atan",			LB::b_atan,			1, 1, 400, FBLTIN },	//			D4 f
+	{ "cos",			LB::b_cos,			1, 1, 400, FBLTIN },	//			D4 f
+	{ "exp",			LB::b_exp,			1, 1, 400, FBLTIN },	//			D4 f
+	{ "float",			LB::b_float,		1, 1, 400, FBLTIN },	//			D4 f
+	{ "integer",		LB::b_integer,		1, 1, 300, FBLTIN },	//		D3 f
+	{ "log",			LB::b_log,			1, 1, 400, FBLTIN },	//			D4 f
+	{ "pi",				LB::b_pi,			0, 0, 400, FBLTIN },	//			D4 f
+	{ "power",			LB::b_power,		2, 2, 400, FBLTIN },	//			D4 f
+	{ "random",			LB::b_random,		1, 1, 200, FBLTIN },	// D2 f
+	{ "sin",			LB::b_sin,			1, 1, 400, FBLTIN },	//			D4 f
+	{ "sqrt",			LB::b_sqrt,			1, 1, 200, FBLTIN },	// D2 f
+	{ "tan",			LB::b_tan,			1, 1, 400, FBLTIN },	//			D4 f
 	// String
-	{ "chars",			LB::b_chars,		3, 3, true, 200, FBLTIN },	// D2 f
-	{ "charToNum",		LB::b_charToNum,	1, 1, true, 200, FBLTIN },	// D2 f
-	{ "length",			LB::b_length,		1, 1, true, 200, FBLTIN },	// D2 f
-	{ "numToChar",		LB::b_numToChar,	1, 1, true, 200, FBLTIN },	// D2 f
-	{ "offset",			LB::b_offset,		2, 3, true, 200, FBLTIN },	// D2 f
-	{ "string",			LB::b_string,		1, 1, true, 200, FBLTIN },	// D2 f
-	{ "value",		 	LB::b_value,		1, 1, true, 200, FBLTIN },	// D2 f
+	{ "chars",			LB::b_chars,		3, 3, 200, FBLTIN },	// D2 f
+	{ "charToNum",		LB::b_charToNum,	1, 1, 200, FBLTIN },	// D2 f
+	{ "length",			LB::b_length,		1, 1, 200, FBLTIN },	// D2 f
+	{ "numToChar",		LB::b_numToChar,	1, 1, 200, FBLTIN },	// D2 f
+	{ "offset",			LB::b_offset,		2, 3, 200, FBLTIN },	// D2 f
+	{ "string",			LB::b_string,		1, 1, 200, FBLTIN },	// D2 f
+	{ "value",		 	LB::b_value,		1, 1, 200, FBLTIN },	// D2 f
 	// Lists
-	{ "add",			LB::b_add,			2, 2, false, 400, HBLTIN },	//			D4 handler
-	{ "addAt",			LB::b_addAt,		3, 3, false, 400, HBLTIN },	//			D4 h
-	{ "addProp",		LB::b_addProp,		3, 3, false, 400, HBLTIN },	//			D4 h
-	{ "append",			LB::b_append,		2, 2, false, 400, HBLTIN },	//			D4 h
-	{ "count",			LB::b_count,		1, 1, true,  400, FBLTIN },	//			D4 f
-	{ "deleteAt",		LB::b_deleteAt,		2, 2, false, 400, HBLTIN },	//			D4 h
-	{ "deleteProp",		LB::b_deleteProp,	2, 2, false, 400, HBLTIN },	//			D4 h
-	{ "findPos",		LB::b_findPos,		2, 2, true,  400, FBLTIN },	//			D4 f
-	{ "findPosNear",	LB::b_findPosNear,	2, 2, true,  400, FBLTIN },	//			D4 f
-	{ "getaProp",		LB::b_getaProp,		2, 2, true,  400, FBLTIN },	//			D4 f
-	{ "getAt",			LB::b_getAt,		2, 2, true,  400, FBLTIN },	//			D4 f
-	{ "getLast",		LB::b_getLast,		1, 1, true,  400, FBLTIN },	//			D4 f
-	{ "getOne",			LB::b_getOne,		2, 2, true,  400, FBLTIN },	//			D4 f
-	{ "getPos",			LB::b_getPos,		2, 2, true,  400, FBLTIN },	//			D4 f
-	{ "getProp",		LB::b_getProp,		2, 2, true,  400, FBLTIN },	//			D4 f
-	{ "getPropAt",		LB::b_getPropAt,	2, 2, true,  400, FBLTIN },	//			D4 f
-	{ "list",			LB::b_list,			-1, 0, true, 400, FBLTIN },	//			D4 f
-	{ "listP",			LB::b_listP,		1, 1, true,  400, FBLTIN },	//			D4 f
-	{ "max",			LB::b_max,			-1,0, true,  400, FBLTIN },	//			D4 f
-	{ "min",			LB::b_min,			-1,0, true,  400, FBLTIN },	//			D4 f
-	{ "setaProp",		LB::b_setaProp,		3, 3, false, 400, HBLTIN },	//			D4 h
-	{ "setAt",			LB::b_setAt,		3, 3, false, 400, HBLTIN },	//			D4 h
-	{ "setProp",		LB::b_setProp,		3, 3, false, 400, HBLTIN },	//			D4 h
-	{ "sort",			LB::b_sort,			1, 1, false, 400, HBLTIN },	//			D4 h
+	{ "add",			LB::b_add,			2, 2, 400, HBLTIN },	//			D4 handler
+	{ "addAt",			LB::b_addAt,		3, 3, 400, HBLTIN },	//			D4 h
+	{ "addProp",		LB::b_addProp,		3, 3, 400, HBLTIN },	//			D4 h
+	{ "append",			LB::b_append,		2, 2, 400, HBLTIN },	//			D4 h
+	{ "count",			LB::b_count,		1, 1, 400, FBLTIN },	//			D4 f
+	{ "deleteAt",		LB::b_deleteAt,		2, 2, 400, HBLTIN },	//			D4 h
+	{ "deleteProp",		LB::b_deleteProp,	2, 2, 400, HBLTIN },	//			D4 h
+	{ "findPos",		LB::b_findPos,		2, 2, 400, FBLTIN },	//			D4 f
+	{ "findPosNear",	LB::b_findPosNear,	2, 2, 400, FBLTIN },	//			D4 f
+	{ "getaProp",		LB::b_getaProp,		2, 2, 400, FBLTIN },	//			D4 f
+	{ "getAt",			LB::b_getAt,		2, 2, 400, FBLTIN },	//			D4 f
+	{ "getLast",		LB::b_getLast,		1, 1, 400, FBLTIN },	//			D4 f
+	{ "getOne",			LB::b_getOne,		2, 2, 400, FBLTIN },	//			D4 f
+	{ "getPos",			LB::b_getPos,		2, 2, 400, FBLTIN },	//			D4 f
+	{ "getProp",		LB::b_getProp,		2, 2, 400, FBLTIN },	//			D4 f
+	{ "getPropAt",		LB::b_getPropAt,	2, 2, 400, FBLTIN },	//			D4 f
+	{ "list",			LB::b_list,			-1, 0, 400, FBLTIN },	//			D4 f
+	{ "listP",			LB::b_listP,		1, 1, 400, FBLTIN },	//			D4 f
+	{ "max",			LB::b_max,			-1,0, 400, FBLTIN },	//			D4 f
+	{ "min",			LB::b_min,			-1,0, 400, FBLTIN },	//			D4 f
+	{ "setaProp",		LB::b_setaProp,		3, 3, 400, HBLTIN },	//			D4 h
+	{ "setAt",			LB::b_setAt,		3, 3, 400, HBLTIN },	//			D4 h
+	{ "setProp",		LB::b_setProp,		3, 3, 400, HBLTIN },	//			D4 h
+	{ "sort",			LB::b_sort,			1, 1, 400, HBLTIN },	//			D4 h
 	// Files
-	{ "closeDA",	 	LB::b_closeDA, 		0, 0, false, 200, CBLTIN },	// D2 c
-	{ "closeResFile",	LB::b_closeResFile,	0, 1, false, 200, CBLTIN },	// D2 c
-	{ "closeXlib",		LB::b_closeXlib,	0, 1, false, 200, CBLTIN },	// D2 c
-	{ "getNthFileNameInFolder",LB::b_getNthFileNameInFolder,2,2,true,400,FBLTIN }, //D4 f
-	{ "open",			LB::b_open,			1, 2, false, 200, CBLTIN },	// D2 c
-	{ "openDA",	 		LB::b_openDA, 		1, 1, false, 200, CBLTIN },	// D2 c
-	{ "openResFile",	LB::b_openResFile,	1, 1, false, 200, CBLTIN },	// D2 c
-	{ "openXlib",		LB::b_openXlib,		1, 1, false, 200, CBLTIN },	// D2 c
-	{ "saveMovie",		LB::b_saveMovie,	1, 1, false, 400, CBLTIN },	//			D4 c
-	{ "setCallBack",	LB::b_setCallBack,	2, 2, false, 300, CBLTIN },	//		D3 c
-	{ "showResFile",	LB::b_showResFile,	0, 1, false, 200, CBLTIN },	// D2 c
-	{ "showXlib",		LB::b_showXlib,		0, 1, false, 200, CBLTIN },	// D2 c
-	{ "xFactoryList",	LB::b_xFactoryList,	1, 1, true,  300, FBLTIN },	//		D3 f
+	{ "closeDA",	 	LB::b_closeDA, 		0, 0, 200, CBLTIN },	// D2 c
+	{ "closeResFile",	LB::b_closeResFile,	0, 1, 200, CBLTIN },	// D2 c
+	{ "closeXlib",		LB::b_closeXlib,	0, 1, 200, CBLTIN },	// D2 c
+	{ "getNthFileNameInFolder",LB::b_getNthFileNameInFolder,2,2,400,FBLTIN }, //D4 f
+	{ "open",			LB::b_open,			1, 2, 200, CBLTIN },	// D2 c
+	{ "openDA",	 		LB::b_openDA, 		1, 1, 200, CBLTIN },	// D2 c
+	{ "openResFile",	LB::b_openResFile,	1, 1, 200, CBLTIN },	// D2 c
+	{ "openXlib",		LB::b_openXlib,		1, 1, 200, CBLTIN },	// D2 c
+	{ "saveMovie",		LB::b_saveMovie,	1, 1, 400, CBLTIN },	//			D4 c
+	{ "setCallBack",	LB::b_setCallBack,	2, 2, 300, CBLTIN },	//		D3 c
+	{ "showResFile",	LB::b_showResFile,	0, 1, 200, CBLTIN },	// D2 c
+	{ "showXlib",		LB::b_showXlib,		0, 1, 200, CBLTIN },	// D2 c
+	{ "xFactoryList",	LB::b_xFactoryList,	1, 1, 300, FBLTIN },	//		D3 f
 	// Control
-	{ "abort",			LB::b_abort,		0, 0, false, 400, CBLTIN },	//			D4 c
-	{ "continue",		LB::b_continue,		0, 0, false, 200, CBLTIN },	// D2 c
-	{ "dontPassEvent",	LB::b_dontPassEvent,0, 0, false, 200, CBLTIN },	// D2 c
-	{ "delay",	 		LB::b_delay,		1, 1, false, 200, CBLTIN },	// D2 c
-	{ "do",		 		LB::b_do,			1, 1, false, 200, CBLTIN },	// D2 c
-	{ "go",		 		LB::b_go,			1, 2, false, 200, CBLTIN },	// D2 c
-	{ "halt",	 		LB::b_halt,			0, 0, false, 400, CBLTIN },	//			D4 c
-	{ "nothing",		LB::b_nothing,		0, 0, false, 200, CBLTIN },	// D2 c
-	{ "pass",			LB::b_pass,			0, 0, false, 400, CBLTIN },	//			D4 c
-	{ "pause",			LB::b_pause,		0, 0, false, 200, CBLTIN },	// D2 c
-	{ "play",			LB::b_play,			0, 2, false, 200, CBLTIN },	// D2 c
-	{ "playAccel",		LB::b_playAccel,	-1,0, false, 200, CBLTIN },	// D2
-	{"fplay",			LB::b_fplay,		-1,0, false, 200, CBLTIN },                      // D2
+	{ "abort",			LB::b_abort,		0, 0, 400, CBLTIN },	//			D4 c
+	{ "continue",		LB::b_continue,		0, 0, 200, CBLTIN },	// D2 c
+	{ "dontPassEvent",	LB::b_dontPassEvent,0, 0, 200, CBLTIN },	// D2 c
+	{ "delay",	 		LB::b_delay,		1, 1, 200, CBLTIN },	// D2 c
+	{ "do",		 		LB::b_do,			1, 1, 200, CBLTIN },	// D2 c
+	{ "go",		 		LB::b_go,			1, 2, 200, CBLTIN },	// D2 c
+	{ "halt",	 		LB::b_halt,			0, 0, 400, CBLTIN },	//			D4 c
+	{ "nothing",		LB::b_nothing,		0, 0, 200, CBLTIN },	// D2 c
+	{ "pass",			LB::b_pass,			0, 0, 400, CBLTIN },	//			D4 c
+	{ "pause",			LB::b_pause,		0, 0, 200, CBLTIN },	// D2 c
+	{ "play",			LB::b_play,			0, 2, 200, CBLTIN },	// D2 c
+	{ "playAccel",		LB::b_playAccel,	-1,0, 200, CBLTIN },	// D2
+	{"fplay",			LB::b_fplay,		-1,0, 200, CBLTIN },                      // D2
 		// play done													// D2
-	{ "preLoad",		LB::b_preLoad,		-1,0, false, 300, CBLTIN },	//		D3.1 c
-	{ "preLoadCast",	LB::b_preLoadCast,	-1,0, false, 300, CBLTIN },	//		D3.1 c
-	{ "quit",			LB::b_quit,			0, 0, false, 200, CBLTIN },	// D2 c
-	{ "restart",		LB::b_restart,		0, 0, false, 200, CBLTIN },	// D2 c
-	{ "return",			LB::b_return,		0, 1, false, 200, CBLTIN },	// D2 f
-	{ "scummvm_returnNumber", LB::b_returnNumber, 1, 1, false, 200, CBLTIN }, // D2 f
-	{ "shutDown",		LB::b_shutDown,		0, 0, false, 200, CBLTIN },	// D2 c
-	{ "startTimer",		LB::b_startTimer,	0, 0, false, 200, CBLTIN },	// D2 c
+	{ "preLoad",		LB::b_preLoad,		-1,0, 300, CBLTIN },	//		D3.1 c
+	{ "preLoadCast",	LB::b_preLoadCast,	-1,0, 300, CBLTIN },	//		D3.1 c
+	{ "quit",			LB::b_quit,			0, 0, 200, CBLTIN },	// D2 c
+	{ "restart",		LB::b_restart,		0, 0, 200, CBLTIN },	// D2 c
+	{ "return",			LB::b_return,		0, 1, 200, CBLTIN },	// D2 f
+	{ "scummvm_returnNumber", LB::b_returnNumber, 1, 1, 200, CBLTIN }, // D2 f
+	{ "shutDown",		LB::b_shutDown,		0, 0, 200, CBLTIN },	// D2 c
+	{ "startTimer",		LB::b_startTimer,	0, 0, 200, CBLTIN },	// D2 c
 		// when keyDown													// D2
 		// when mouseDown												// D2
 		// when mouseUp													// D2
 		// when timeOut													// D2
 	// Types
-	{ "factory",		LB::b_factory,		1, 1, true,  300, FBLTIN },	//		D3
-	{ "floatP",			LB::b_floatP,		1, 1, true,  300, FBLTIN },	//		D3
-	{ "ilk",	 		LB::b_ilk,			1, 2, false, 400, FBLTIN },	//			D4 f
-	{ "integerp",		LB::b_integerp,		1, 1, true,  200, FBLTIN },	// D2 f
-	{ "objectp",		LB::b_objectp,		1, 1, true,  200, FBLTIN },	// D2 f
-	{ "pictureP",		LB::b_pictureP,		1, 1, true,  400, FBLTIN },	//			D4 f
-	{ "stringp",		LB::b_stringp,		1, 1, true,  200, FBLTIN },	// D2 f
-	{ "symbolp",		LB::b_symbolp,		1, 1, true,  200, FBLTIN },	// D2 f
-	{ "voidP",			LB::b_voidP,		1, 1, true,  400, FBLTIN },	//			D4 f
+	{ "factory",		LB::b_factory,		1, 1, 300, FBLTIN },	//		D3
+	{ "floatP",			LB::b_floatP,		1, 1, 300, FBLTIN },	//		D3
+	{ "ilk",	 		LB::b_ilk,			1, 2, 400, FBLTIN },	//			D4 f
+	{ "integerp",		LB::b_integerp,		1, 1, 200, FBLTIN },	// D2 f
+	{ "objectp",		LB::b_objectp,		1, 1, 200, FBLTIN },	// D2 f
+	{ "pictureP",		LB::b_pictureP,		1, 1, 400, FBLTIN },	//			D4 f
+	{ "stringp",		LB::b_stringp,		1, 1, 200, FBLTIN },	// D2 f
+	{ "symbolp",		LB::b_symbolp,		1, 1, 200, FBLTIN },	// D2 f
+	{ "voidP",			LB::b_voidP,		1, 1, 400, FBLTIN },	//			D4 f
 	// Misc
-	{ "alert",	 		LB::b_alert,		1, 1, false, 200, CBLTIN },	// D2 c
-	{ "clearGlobals",	LB::b_clearGlobals,	0, 0, false, 300, CBLTIN },	//		D3.1 c
-	{ "cursor",	 		LB::b_cursor,		1, 1, false, 200, CBLTIN },	// D2 c
-	{ "framesToHMS",	LB::b_framesToHMS,	4, 4, false, 300, FBLTIN },	//		D3 f
-	{ "HMStoFrames",	LB::b_HMStoFrames,	4, 4, false, 300, FBLTIN },	//		D3 f
-	{ "param",	 		LB::b_param,		1, 1, true,  400, FBLTIN },	//			D4 f
-	{ "printFrom",	 	LB::b_printFrom,	-1,0, false, 200, CBLTIN },	// D2 c
-	{ "put",			LB::b_put,			-1,0, false, 200, CBLTIN },	// D2
+	{ "alert",	 		LB::b_alert,		1, 1, 200, CBLTIN },	// D2 c
+	{ "clearGlobals",	LB::b_clearGlobals,	0, 0, 300, CBLTIN },	//		D3.1 c
+	{ "cursor",	 		LB::b_cursor,		1, 1, 200, CBLTIN },	// D2 c
+	{ "framesToHMS",	LB::b_framesToHMS,	4, 4, 300, FBLTIN },	//		D3 f
+	{ "HMStoFrames",	LB::b_HMStoFrames,	4, 4, 300, FBLTIN },	//		D3 f
+	{ "param",	 		LB::b_param,		1, 1, 400, FBLTIN },	//			D4 f
+	{ "printFrom",	 	LB::b_printFrom,	-1,0, 200, CBLTIN },	// D2 c
+	{ "put",			LB::b_put,			-1,0, 200, CBLTIN },	// D2
 		// set															// D2
-	{ "showGlobals",	LB::b_showGlobals,	0, 0, false, 200, CBLTIN },	// D2 c
-	{ "showLocals",		LB::b_showLocals,	0, 0, false, 200, CBLTIN },	// D2 c
+	{ "showGlobals",	LB::b_showGlobals,	0, 0, 200, CBLTIN },	// D2 c
+	{ "showLocals",		LB::b_showLocals,	0, 0, 200, CBLTIN },	// D2 c
 	// Score
-	{ "constrainH",		LB::b_constrainH,	2, 2, true,  200, FBLTIN },	// D2 f
-	{ "constrainV",		LB::b_constrainV,	2, 2, true,  200, FBLTIN },	// D2 f
-	{ "copyToClipBoard",LB::b_copyToClipBoard,1,1, false, 400, CBLTIN }, //			D4 c
-	{ "duplicate",		LB::b_duplicate,	1, 2, false, 400, CBLTIN },	//			D4 c
-	{ "editableText",	LB::b_editableText,	0, 0, false, 200, CBLTIN },	// D2, FIXME: the field in D4+
-	{ "erase",			LB::b_erase,		1, 1, false, 400, CBLTIN },	//			D4 c
-	{ "findEmpty",		LB::b_findEmpty,	1, 1, true,  400, FBLTIN },	//			D4 f
+	{ "constrainH",		LB::b_constrainH,	2, 2, 200, FBLTIN },	// D2 f
+	{ "constrainV",		LB::b_constrainV,	2, 2, 200, FBLTIN },	// D2 f
+	{ "copyToClipBoard",LB::b_copyToClipBoard,1,1, 400, CBLTIN }, //			D4 c
+	{ "duplicate",		LB::b_duplicate,	1, 2, 400, CBLTIN },	//			D4 c
+	{ "editableText",	LB::b_editableText,	0, 0, 200, CBLTIN },	// D2, FIXME: the field in D4+
+	{ "erase",			LB::b_erase,		1, 1, 400, CBLTIN },	//			D4 c
+	{ "findEmpty",		LB::b_findEmpty,	1, 1, 400, FBLTIN },	//			D4 f
 		// go															// D2
-	{ "importFileInto",	LB::b_importFileInto,2, 2, false, 400, CBLTIN }, //			D4 c
-	{ "installMenu",	LB::b_installMenu,	1, 1, false, 200, CBLTIN },	// D2 c
-	{ "label",			LB::b_label,		1, 1, true,  200, FBLTIN },	// D2 f
-	{ "marker",			LB::b_marker,		1, 1, true,  200, FBLTIN },	// D2 f
-	{ "move",			LB::b_move,			1, 2, false, 400, CBLTIN },	//			D4 c
-	{ "moveableSprite",	LB::b_moveableSprite,0, 0, false, 200, CBLTIN },// D2, FIXME: the field in D4+
-	{ "pasteClipBoardInto",LB::b_pasteClipBoardInto,1,1,false,400,CBLTIN },//		D4 c
-	{ "puppetPalette",	LB::b_puppetPalette, -1,0, false, 200, CBLTIN },// D2 c
-	{ "puppetSound",	LB::b_puppetSound,	-1,0, false, 200, CBLTIN },	// D2 c
-	{ "puppetSprite",	LB::b_puppetSprite,	-1,0, false, 200, CBLTIN },	// D2 c
-	{ "puppetTempo",	LB::b_puppetTempo,	1, 1, false, 200, CBLTIN },	// D2 c
-	{ "puppetTransition",LB::b_puppetTransition,-1,0,false,200, CBLTIN },// D2 c
-	{ "ramNeeded",		LB::b_ramNeeded,	2, 2, true,  300, FBLTIN },	//		D3.1 f
-	{ "rollOver",		LB::b_rollOver,		1, 1, true,  299, FBLTIN },	// D2 f
-	{ "spriteBox",		LB::b_spriteBox,	-1,0, false, 200, CBLTIN },	// D2 c
-	{ "unLoad",			LB::b_unLoad,		0, 2, false, 300, CBLTIN },	//		D3.1 c
-	{ "unLoadCast",		LB::b_unLoadCast,	0, 2, false, 300, CBLTIN },	//		D3.1 c
-	{ "updateStage",	LB::b_updateStage,	0, 0, false, 200, CBLTIN },	// D2 c
-	{ "zoomBox",		LB::b_zoomBox,		-1,0, false, 200, CBLTIN },	// D2 c
-	{"immediateSprite", LB::b_immediateSprite, -1, 0, false, 200, CBLTIN}, // D2 c
+	{ "importFileInto",	LB::b_importFileInto,2, 2, 400, CBLTIN }, //			D4 c
+	{ "installMenu",	LB::b_installMenu,	1, 1, 200, CBLTIN },	// D2 c
+	{ "label",			LB::b_label,		1, 1, 200, FBLTIN },	// D2 f
+	{ "marker",			LB::b_marker,		1, 1, 200, FBLTIN },	// D2 f
+	{ "move",			LB::b_move,			1, 2, 400, CBLTIN },	//			D4 c
+	{ "moveableSprite",	LB::b_moveableSprite,0, 0, 200, CBLTIN },// D2, FIXME: the field in D4+
+	{ "pasteClipBoardInto",LB::b_pasteClipBoardInto,1,1,400,CBLTIN },//		D4 c
+	{ "puppetPalette",	LB::b_puppetPalette, -1,0, 200, CBLTIN },// D2 c
+	{ "puppetSound",	LB::b_puppetSound,	-1,0, 200, CBLTIN },	// D2 c
+	{ "puppetSprite",	LB::b_puppetSprite,	-1,0, 200, CBLTIN },	// D2 c
+	{ "puppetTempo",	LB::b_puppetTempo,	1, 1, 200, CBLTIN },	// D2 c
+	{ "puppetTransition",LB::b_puppetTransition,-1,0,200, CBLTIN },// D2 c
+	{ "ramNeeded",		LB::b_ramNeeded,	2, 2, 300, FBLTIN },	//		D3.1 f
+	{ "rollOver",		LB::b_rollOver,		1, 1, 299, FBLTIN },	// D2 f
+	{ "spriteBox",		LB::b_spriteBox,	-1,0, 200, CBLTIN },	// D2 c
+	{ "unLoad",			LB::b_unLoad,		0, 2, 300, CBLTIN },	//		D3.1 c
+	{ "unLoadCast",		LB::b_unLoadCast,	0, 2, 300, CBLTIN },	//		D3.1 c
+	{ "updateStage",	LB::b_updateStage,	0, 0, 200, CBLTIN },	// D2 c
+	{ "zoomBox",		LB::b_zoomBox,		-1,0, 200, CBLTIN },	// D2 c
+	{"immediateSprite", LB::b_immediateSprite, -1, 0, 200, CBLTIN}, // D2 c
 	// Point
-	{ "point",			LB::b_point,		2, 2, true,  400, FBLTIN },	//			D4 f
-	{ "inside",			LB::b_inside,		2, 2, true,  400, FBLTIN },	//			D4 f
-	{ "intersect",		LB::b_intersect,	2, 2, false, 400, FBLTIN },	//			D4 f
-	{ "map",			LB::b_map,			3, 3, true,  400, FBLTIN },	//			D4 f
-	{ "rect",			LB::b_rect,			4, 4, true,  400, FBLTIN },	//			D4 f
-	{ "union",			LB::b_union,		2, 2, true,  400, FBLTIN },	//			D4 f
+	{ "point",			LB::b_point,		2, 2, 400, FBLTIN },	//			D4 f
+	{ "inside",			LB::b_inside,		2, 2, 400, FBLTIN },	//			D4 f
+	{ "intersect",		LB::b_intersect,	2, 2, 400, FBLTIN },	//			D4 f
+	{ "map",			LB::b_map,			3, 3, 400, FBLTIN },	//			D4 f
+	{ "rect",			LB::b_rect,			4, 4, 400, FBLTIN },	//			D4 f
+	{ "union",			LB::b_union,		2, 2, 400, FBLTIN },	//			D4 f
 	// Sound
-	{ "beep",	 		LB::b_beep,			0, 1, false, 200, CBLTIN },	// D2
-	{ "mci",	 		LB::b_mci,			1, 1, false, 300, CBLTIN },	//		D3.1 c
-	{ "mciwait",		LB::b_mciwait,		1, 1, false, 400, CBLTIN },	//			D4 c
-	{ "sound",			LB::b_sound,		2, 3, false, 300, CBLTIN },	//		D3 c
-	{ "soundBusy",		LB::b_soundBusy,	1, 1, true,  300, FBLTIN },	//		D3 f
+	{ "beep",	 		LB::b_beep,			0, 1, 200, CBLTIN },	// D2
+	{ "mci",	 		LB::b_mci,			1, 1, 300, CBLTIN },	//		D3.1 c
+	{ "mciwait",		LB::b_mciwait,		1, 1, 400, CBLTIN },	//			D4 c
+	{ "sound",			LB::b_sound,		2, 3, 300, CBLTIN },	//		D3 c
+	{ "soundBusy",		LB::b_soundBusy,	1, 1, 300, FBLTIN },	//		D3 f
 	// Constants
-	{ "backspace",		LB::b_backspace,	0, 0, false, 200, KBLTIN },	// D2 konstant
-	{ "empty",			LB::b_empty,		0, 0, false, 200, KBLTIN },	// D2 k
-	{ "enter",			LB::b_enter,		0, 0, false, 200, KBLTIN },	// D2 k
-	{ "false",			LB::b_false,		0, 0, false, 200, KBLTIN },	// D2 k
-	{ "quote",			LB::b_quote,		0, 0, false, 200, KBLTIN },	// D2 k
-	{ "return",			LB::b_returnconst,	0, 0, false, 200, KBLTIN },	// D2 k
-	{ "tab",			LB::b_tab,			0, 0, false, 200, KBLTIN },	// D2 k
-	{ "true",			LB::b_true,			0, 0, false, 200, KBLTIN },	// D2 k
-	{ "version",		LB::b_version,		0, 0, false, 300, KBLTIN },	//		D3 k
+	{ "backspace",		LB::b_backspace,	0, 0, 200, KBLTIN },	// D2 konstant
+	{ "empty",			LB::b_empty,		0, 0, 200, KBLTIN },	// D2 k
+	{ "enter",			LB::b_enter,		0, 0, 200, KBLTIN },	// D2 k
+	{ "false",			LB::b_false,		0, 0, 200, KBLTIN },	// D2 k
+	{ "quote",			LB::b_quote,		0, 0, 200, KBLTIN },	// D2 k
+	{ "return",			LB::b_returnconst,	0, 0, 200, KBLTIN },	// D2 k
+	{ "tab",			LB::b_tab,			0, 0, 200, KBLTIN },	// D2 k
+	{ "true",			LB::b_true,			0, 0, 200, KBLTIN },	// D2 k
+	{ "version",		LB::b_version,		0, 0, 300, KBLTIN },	//		D3 k
 	// References
-	{ "cast",			LB::b_cast,			1, 1, false, 400, FBLTIN },	//			D4 f
-	{ "script",			LB::b_script,		1, 1, false, 400, FBLTIN },	//			D4 f
-	{ "window",			LB::b_window,		1, 1, false, 400, FBLTIN },	//			D4 f
+	{ "cast",			LB::b_cast,			1, 1, 400, FBLTIN },	//			D4 f
+	{ "script",			LB::b_script,		1, 1, 400, FBLTIN },	//			D4 f
+	{ "window",			LB::b_window,		1, 1, 400, FBLTIN },	//			D4 f
 	// Chunk operations
-	{ "numberOfChars",	LB::b_numberofchars,1, 1, false, 300, FBLTIN },	//			D3 f
-	{ "numberOfItems",	LB::b_numberofitems,1, 1, false, 300, FBLTIN },	//			D3 f
-	{ "numberOfLines",	LB::b_numberoflines,1, 1, false, 300, FBLTIN },	//			D3 f
-	{ "numberOfWords",	LB::b_numberofwords,1, 1, false, 300, FBLTIN },	//			D3 f
+	{ "numberOfChars",	LB::b_numberofchars,1, 1, 300, FBLTIN },	//			D3 f
+	{ "numberOfItems",	LB::b_numberofitems,1, 1, 300, FBLTIN },	//			D3 f
+	{ "numberOfLines",	LB::b_numberoflines,1, 1, 300, FBLTIN },	//			D3 f
+	{ "numberOfWords",	LB::b_numberofwords,1, 1, 300, FBLTIN },	//			D3 f
 
 	// ScummVM Asserts: Used for testing ScummVM's Lingo implementation
-	{ "scummvmAssert",	LB::b_scummvmassert,1, 2, true,  200, HBLTIN },
-	{ "scummvmAssertEqual",	LB::b_scummvmassertequal,2,3,true,200,HBLTIN },
+	{ "scummvmAssert",	LB::b_scummvmassert,1, 2, 200, HBLTIN },
+	{ "scummvmAssertEqual",	LB::b_scummvmassertequal,2,3,200,HBLTIN },
 
 	// XCMD/XFCN (HyperCard), normally exposed
-	{ "GetVolumes", LB::b_getVolumes, 0, 0, true, 400, FBLTIN },
+	{ "GetVolumes", LB::b_getVolumes, 0, 0, 400, FBLTIN },
 
-	{ 0, 0, 0, 0, false, 0, VOIDSYM }
+	{ 0, 0, 0, 0, 0, VOIDSYM }
 };
 
 void Lingo::initBuiltIns() {
@@ -282,7 +281,7 @@ void Lingo::initBuiltIns() {
 		sym.type = blt->type;
 		sym.nargs = blt->minArgs;
 		sym.maxArgs = blt->maxArgs;
-		sym.parens = blt->parens;
+
 		sym.u.bltin = blt->func;
 
 		switch (blt->type) {
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index ff4844ba19..755a7a405f 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -63,7 +63,6 @@ Symbol::Symbol() {
 	*refCount = 1;
 	nargs = 0;
 	maxArgs = 0;
-	parens = true;
 	targetType = kNoneObj;
 	argNames = nullptr;
 	varNames = nullptr;
@@ -81,7 +80,6 @@ Symbol::Symbol(const Symbol &s) {
 	*refCount += 1;
 	nargs = s.nargs;
 	maxArgs = s.maxArgs;
-	parens = s.parens;
 	targetType = s.targetType;
 	argNames = s.argNames;
 	varNames = s.varNames;
@@ -103,7 +101,6 @@ Symbol& Symbol::operator=(const Symbol &s) {
 	*refCount += 1;
 	nargs = s.nargs;
 	maxArgs = s.maxArgs;
-	parens = s.parens;
 	targetType = s.targetType;
 	argNames = s.argNames;
 	varNames = s.varNames;
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 89ada9dc2b..4a1b6c5461 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -84,7 +84,6 @@ struct Symbol {	/* symbol table entry */
 
 	int nargs;		/* number of arguments */
 	int maxArgs;	/* maximal number of arguments, for builtins */
-	bool parens;	/* whether parens required or not, for builitins */
 	int targetType;	/* valid target objects, for method builtins */
 
 	Common::Array<Common::String> *argNames;


Commit: 60c4394e8ad7629650d3ffabe7ce9c2a16959fad
    https://github.com/scummvm/scummvm/commit/60c4394e8ad7629650d3ffabe7ce9c2a16959fad
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-11T15:14:17-04:00

Commit Message:
DIRECTOR: LINGO: Create function for registering new builtins

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


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index a162b36898..b68d2325e5 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -80,14 +80,7 @@ namespace Director {
 		return; \
 	}
 
-static struct BuiltinProto {
-	const char *name;
-	void (*func)(int);
-	int minArgs;	// -1 -- arglist
-	int maxArgs;
-	int version;
-	SymbolType type;
-} builtins[] = {
+static BuiltinProto builtins[] = {
 	// Math
 	{ "abs",			LB::b_abs,			1, 1, 200, FBLTIN },	// D2 function
 	{ "atan",			LB::b_atan,			1, 1, 400, FBLTIN },	//			D4 f
@@ -271,7 +264,11 @@ static struct BuiltinProto {
 };
 
 void Lingo::initBuiltIns() {
-	for (BuiltinProto *blt = builtins; blt->name; blt++) {
+	initBuiltIns(builtins);
+}
+
+void Lingo::initBuiltIns(BuiltinProto protos[]) {
+	for (BuiltinProto *blt = protos; blt->name; blt++) {
 		if (blt->version > _vm->getVersion())
 			continue;
 
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 4a1b6c5461..61194f7d63 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -70,6 +70,15 @@ struct FuncDesc {
 
 typedef Common::HashMap<void *, FuncDesc *> FuncHash;
 
+struct BuiltinProto {
+	const char *name;
+	void (*func)(int);
+	int minArgs;	// -1 -- arglist
+	int maxArgs;
+	int version;
+	SymbolType type;
+};
+
 struct Symbol {	/* symbol table entry */
 	Common::String *name;
 	SymbolType type;
@@ -250,6 +259,7 @@ public:
 
 	void reloadBuiltIns();
 	void initBuiltIns();
+	void initBuiltIns(BuiltinProto protos[]);
 	void cleanupBuiltIns();
 	void initFuncs();
 	void cleanupFuncs();


Commit: b8d39546e454131ea0f6bf5521cfac346ad54ed9
    https://github.com/scummvm/scummvm/commit/b8d39546e454131ea0f6bf5521cfac346ad54ed9
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-11T15:17:44-04:00

Commit Message:
DIRCTOR: LINGO: Stub FPlayXobj

Changed paths:
  A engines/director/lingo/xlibs/fplayxobj.cpp
  A engines/director/lingo/xlibs/fplayxobj.h
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-builtins.h
    engines/director/lingo/lingo-object.cpp
    engines/director/module.mk


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index b68d2325e5..9d8007605b 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -155,7 +155,6 @@ static BuiltinProto builtins[] = {
 	{ "pause",			LB::b_pause,		0, 0, 200, CBLTIN },	// D2 c
 	{ "play",			LB::b_play,			0, 2, 200, CBLTIN },	// D2 c
 	{ "playAccel",		LB::b_playAccel,	-1,0, 200, CBLTIN },	// D2
-	{"fplay",			LB::b_fplay,		-1,0, 200, CBLTIN },                      // D2
 		// play done													// D2
 	{ "preLoad",		LB::b_preLoad,		-1,0, 300, CBLTIN },	//		D3.1 c
 	{ "preLoadCast",	LB::b_preLoadCast,	-1,0, 300, CBLTIN },	//		D3.1 c
@@ -2400,12 +2399,6 @@ void LB::b_version(int nargs) {
 	g_lingo->push(res);
 }
 
-void LB::b_fplay(int nargs) {
-	for (int i = 0; i < nargs; i++)
-		g_lingo->pop();
-	warning("STUB: b_fplay");
-}
-
 ///////////////////
 // References
 ///////////////////
diff --git a/engines/director/lingo/lingo-builtins.h b/engines/director/lingo/lingo-builtins.h
index 816b867fd2..4c00207411 100644
--- a/engines/director/lingo/lingo-builtins.h
+++ b/engines/director/lingo/lingo-builtins.h
@@ -188,8 +188,6 @@ void b_version(int nargs);
 void b_cast(int nargs);
 void b_script(int nargs);
 
-void b_fplay(int nargs);
-
 void b_numberofchars(int nargs);
 void b_numberofitems(int nargs);
 void b_numberoflines(int nargs);
diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index cda164e6c9..50121ed69a 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -37,6 +37,7 @@
 
 #include "director/lingo/xlibs/fileio.h"
 #include "director/lingo/xlibs/flushxobj.h"
+#include "director/lingo/xlibs/fplayxobj.h"
 #include "director/lingo/xlibs/labeldrvxobj.h"
 #include "director/lingo/xlibs/palxobj.h"
 #include "director/lingo/xlibs/winxobj.h"
@@ -111,6 +112,7 @@ static struct XLibProto {
 } xlibs[] = {
 	{ "FileIO",					FileIO::initialize,					kXObj | kFactoryObj,	200 },	// D2
 	{ "FlushXObj",				FlushXObj::initialize,				kXObj,					400 },	// D4
+	{ "FPlayXObj",				FPlayXObj::initialize,				kXObj,					200 },	// D2
 	{ "PalXObj",				PalXObj:: initialize,				kXObj,					400 }, 	// D4
 	{ "LabelDrv",				LabelDrvXObj:: initialize,			kXObj,					400 }, 	// D4
 	{ "winXObj",				RearWindowXObj::initialize,			kXObj,					400 },	// D4
diff --git a/engines/director/lingo/xlibs/fplayxobj.cpp b/engines/director/lingo/xlibs/fplayxobj.cpp
new file mode 100644
index 0000000000..3f0e705bc4
--- /dev/null
+++ b/engines/director/lingo/xlibs/fplayxobj.cpp
@@ -0,0 +1,93 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+ /*************************************
+  *
+  * USED IN:
+  * Spaceship Warlock Mac
+  *
+  *************************************/
+
+#include "director/lingo/lingo.h"
+#include "director/lingo/xlibs/fplayxobj.h"
+
+namespace Director {
+
+static BuiltinProto builtins[] = {
+	{ "FPlay",			FPlayXObj::b_fplay,		-1,0, 200, CBLTIN },
+	{ "SndInfo",		FPlayXObj::b_sndinfo,	-1,0, 200, FBLTIN },
+	{ "SndList",		FPlayXObj::b_sndlist,	-1,0, 200, FBLTIN },
+	{ "SndList",		FPlayXObj::b_sndlist,	-1,0, 200, FBLTIN },
+	{ "Volume",			FPlayXObj::b_volume,	-1,0, 200, FBLTIN },
+	{ "FileName",		FPlayXObj::b_filename,	-1,0, 200, FBLTIN },
+	{ "InputLevel",		FPlayXObj::b_inputlevel,-1,0, 200, FBLTIN },
+	{ "FSound",			FPlayXObj::b_fsound,	-1,0, 200, FBLTIN },
+	{ 0, 0, 0, 0, 0, VOIDSYM }
+};
+
+void FPlayXObj::initialize(int type) {
+	g_lingo->initBuiltIns(builtins);
+}
+
+void FPlayXObj::b_fplay(int nargs) {
+	g_lingo->printSTUBWithArglist("b_fplay", nargs);
+	g_lingo->dropStack(nargs);
+}
+
+void FPlayXObj::b_sndinfo(int nargs) {
+	g_lingo->printSTUBWithArglist("b_sndinfo", nargs);
+	g_lingo->dropStack(nargs);
+	g_lingo->push(Datum());
+}
+
+void FPlayXObj::b_sndlist(int nargs) {
+	g_lingo->printSTUBWithArglist("b_sndlist", nargs);
+	g_lingo->dropStack(nargs);
+	g_lingo->push(Datum());
+}
+
+void FPlayXObj::b_volume(int nargs) {
+	g_lingo->printSTUBWithArglist("b_volume", nargs);
+	g_lingo->dropStack(nargs);
+	g_lingo->push(Datum());
+}
+
+void FPlayXObj::b_filename(int nargs) {
+	g_lingo->printSTUBWithArglist("b_filename", nargs);
+	g_lingo->dropStack(nargs);
+	g_lingo->push(Datum());
+}
+
+void FPlayXObj::b_inputlevel(int nargs) {
+	g_lingo->printSTUBWithArglist("b_inputlevel", nargs);
+	g_lingo->dropStack(nargs);
+	g_lingo->push(Datum());
+}
+
+void FPlayXObj::b_fsound(int nargs) {
+	g_lingo->printSTUBWithArglist("b_fsound", nargs);
+	g_lingo->dropStack(nargs);
+	g_lingo->push(Datum());
+}
+
+} // End of namespace Director
+
diff --git a/engines/director/lingo/xlibs/fplayxobj.h b/engines/director/lingo/xlibs/fplayxobj.h
new file mode 100644
index 0000000000..1cc977bbf5
--- /dev/null
+++ b/engines/director/lingo/xlibs/fplayxobj.h
@@ -0,0 +1,44 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_FPLAYXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_FPLAYXOBJ_H
+
+namespace Director {
+
+namespace FPlayXObj {
+
+void initialize(int type);
+
+void b_fplay(int nargs);
+void b_sndinfo(int nargs);
+void b_sndlist(int nargs);
+void b_volume(int nargs);
+void b_filename(int nargs);
+void b_inputlevel(int nargs);
+void b_fsound(int nargs);
+
+} // End of namespace FPlayXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/module.mk b/engines/director/module.mk
index 13788a7726..e220ea98c3 100644
--- a/engines/director/module.mk
+++ b/engines/director/module.mk
@@ -38,6 +38,7 @@ MODULE_OBJS = \
 	lingo/lingo-the.o \
 	lingo/xlibs/fileio.o \
 	lingo/xlibs/flushxobj.o \
+	lingo/xlibs/fplayxobj.o \
 	lingo/xlibs/labeldrvxobj.o \
 	lingo/xlibs/palxobj.o \
 	lingo/xlibs/winxobj.o


Commit: 1c5231ec761864b8015158dedaea488bcf41561b
    https://github.com/scummvm/scummvm/commit/1c5231ec761864b8015158dedaea488bcf41561b
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-11T15:19:33-04:00

Commit Message:
DIRECTOR: LINGO: Fix FileIO type

It's an XObject or an Xtra, not an XObject or a factory.

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


diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index 50121ed69a..58cc3a9d94 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -110,7 +110,7 @@ static struct XLibProto {
 	int type;
 	int version;
 } xlibs[] = {
-	{ "FileIO",					FileIO::initialize,					kXObj | kFactoryObj,	200 },	// D2
+	{ "FileIO",					FileIO::initialize,					kXObj | kXtraObj,		200 },	// D2
 	{ "FlushXObj",				FlushXObj::initialize,				kXObj,					400 },	// D4
 	{ "FPlayXObj",				FPlayXObj::initialize,				kXObj,					200 },	// D2
 	{ "PalXObj",				PalXObj:: initialize,				kXObj,					400 }, 	// D4




More information about the Scummvm-git-logs mailing list