[Scummvm-git-logs] scummvm master -> 47cbae39ca61950135fda840a356a6ea01ceb8e4

sev- noreply at scummvm.org
Mon Dec 18 22:21:50 UTC 2023


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

Summary:
47cbae39ca DIRECTOR: Added stubs for XObjects for Jewels of the Oracle


Commit: 47cbae39ca61950135fda840a356a6ea01ceb8e4
    https://github.com/scummvm/scummvm/commit/47cbae39ca61950135fda840a356a6ea01ceb8e4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-12-18T23:21:40+01:00

Commit Message:
DIRECTOR: Added stubs for XObjects for Jewels of the Oracle

Changed paths:
  A engines/director/lingo/xlibs/colorcursorxobj.cpp
  A engines/director/lingo/xlibs/colorcursorxobj.h
  A engines/director/lingo/xlibs/cursorxobj.cpp
  A engines/director/lingo/xlibs/cursorxobj.h
  A engines/director/lingo/xlibs/mapnavigatorxobj.cpp
  A engines/director/lingo/xlibs/mapnavigatorxobj.h
  A engines/director/lingo/xlibs/memcheckxobj.cpp
  A engines/director/lingo/xlibs/memcheckxobj.h
  A engines/director/lingo/xlibs/mmaskxobj.cpp
  A engines/director/lingo/xlibs/mmaskxobj.h
  A engines/director/lingo/xlibs/movieidxxobj.cpp
  A engines/director/lingo/xlibs/movieidxxobj.h
  A engines/director/lingo/xlibs/qtcatmovieplayerxobj.cpp
  A engines/director/lingo/xlibs/qtcatmovieplayerxobj.h
    engines/director/lingo/lingo-object.cpp
    engines/director/lingo/xlibs/palxobj.cpp
    engines/director/module.mk


diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index f3200935215..7a27ea7c29a 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -37,7 +37,9 @@
 #include "director/lingo/xlibs/blitpict.h"
 #include "director/lingo/xlibs/cdromxobj.h"
 #include "director/lingo/xlibs/colorxobj.h"
+#include "director/lingo/xlibs/colorcursorxobj.h"
 #include "director/lingo/xlibs/consumer.h"
+#include "director/lingo/xlibs/cursorxobj.h"
 #include "director/lingo/xlibs/darkenscreen.h"
 #include "director/lingo/xlibs/developerStack.h"
 #include "director/lingo/xlibs/dialogsxobj.h"
@@ -64,11 +66,15 @@
 #include "director/lingo/xlibs/jitdraw3.h"
 #include "director/lingo/xlibs/labeldrvxobj.h"
 #include "director/lingo/xlibs/maniacbg.h"
+#include "director/lingo/xlibs/mapnavigatorxobj.h"
+#include "director/lingo/xlibs/memcheckxobj.h"
 #include "director/lingo/xlibs/memoryxobj.h"
 #include "director/lingo/xlibs/misc.h"
 #include "director/lingo/xlibs/miscx.h"
+#include "director/lingo/xlibs/mmaskxobj.h"
 #include "director/lingo/xlibs/moovxobj.h"
 #include "director/lingo/xlibs/movemousexobj.h"
+#include "director/lingo/xlibs/movieidxxobj.h"
 #include "director/lingo/xlibs/movutils.h"
 #include "director/lingo/xlibs/orthoplayxobj.h"
 #include "director/lingo/xlibs/palxobj.h"
@@ -77,6 +83,7 @@
 #include "director/lingo/xlibs/prefpath.h"
 #include "director/lingo/xlibs/printomatic.h"
 #include "director/lingo/xlibs/qtmovie.h"
+#include "director/lingo/xlibs/qtcatmovieplayerxobj.h"
 #include "director/lingo/xlibs/qtvr.h"
 #include "director/lingo/xlibs/quicktime.h"
 #include "director/lingo/xlibs/registercomponent.h"
@@ -172,7 +179,9 @@ static struct XLibProto {
 	{ BlitPictXObj::fileNames,			BlitPictXObj::open,			BlitPictXObj::close,		kXObj,					400 },	// D4
 	{ CDROMXObj::fileNames,				CDROMXObj::open,			CDROMXObj::close,			kXObj,					200 },	// D2
 	{ ColorXObj::fileNames,				ColorXObj::open,			ColorXObj::close,			kXObj,					400 },	// D4
+	{ ColorCursorXObj::fileNames,		ColorCursorXObj::open,		ColorCursorXObj::close,		kXObj,					400 },	// D4
 	{ ConsumerXObj::fileNames,			ConsumerXObj::open,			ConsumerXObj::close,		kXObj,					400 },	// D4
+	{ CursorXObj::fileNames,			CursorXObj::open,			CursorXObj::close,			kXObj,					400 },	// D4
 	{ DarkenScreen::fileNames,			DarkenScreen::open,			DarkenScreen::close,		kXObj,					300 },	// D3
 	{ DeveloperStack::fileNames,		DeveloperStack::open,		DeveloperStack::close,		kXObj,					300 },	// D3
 	{ DialogsXObj::fileNames,			DialogsXObj::open,			DialogsXObj::close,			kXObj,					400 },	// D4
@@ -199,11 +208,15 @@ static struct XLibProto {
 	{ JourneyWareXINIXObj::fileNames,	JourneyWareXINIXObj::open,	JourneyWareXINIXObj::close,	kXObj,					400 },	// D4
 	{ LabelDrvXObj::fileNames,			LabelDrvXObj::open,			LabelDrvXObj::close,		kXObj,					400 },	// D4
 	{ ManiacBgXObj::fileNames,			ManiacBgXObj::open,			ManiacBgXObj::close,		kXObj,					300 },	// D3
+	{ MapNavigatorXObj::fileNames,		MapNavigatorXObj::open,		MapNavigatorXObj::close,	kXObj,					400 },	// D4
+	{ MemCheckXObj::fileNames,			MemCheckXObj::open,			MemCheckXObj::close,		kXObj,					400 },	// D4
 	{ MemoryXObj::fileNames,			MemoryXObj::open,			MemoryXObj::close,			kXObj,					300 },	// D3
 	{ Misc::fileNames,					Misc::open,					Misc::close,				kXObj,					400 },	// D4
 	{ MiscX::fileNames,					MiscX::open,				MiscX::close,				kXObj,					400 },	// D4
+	{ MMaskXObj::fileNames,				MMaskXObj::open,			MMaskXObj::close,			kXObj,					400 },	// D4
 	{ MoovXObj::fileNames, 				MoovXObj::open, 			MoovXObj::close,			kXObj,					300 },  // D3
 	{ MoveMouseXObj::fileNames,			MoveMouseXObj::open,		MoveMouseXObj::close,		kXObj,					400 },	// D4
+	{ MovieIdxXObj::fileNames,			MovieIdxXObj::open,			MovieIdxXObj::close,		kXObj,					400 },	// D4
 	{ MovUtilsXObj::fileNames,			MovUtilsXObj::open,			MovUtilsXObj::close,		kXObj,					400 },	// D4
 	{ OrthoPlayXObj::fileNames,			OrthoPlayXObj::open,		OrthoPlayXObj::close,		kXObj,					400 },	// D4
 	{ PalXObj::fileNames,				PalXObj::open,				PalXObj::close,				kXObj,					400 },	// D4
@@ -211,8 +224,9 @@ static struct XLibProto {
 	{ Porta::fileNames,					Porta::open,				Porta::close,				kXObj,					300 },	// D3
 	{ PrefPath::fileNames,				PrefPath::open,				PrefPath::close,			kXObj,					400 },	// D4
 	{ PrintOMaticXObj::fileNames,		PrintOMaticXObj::open,		PrintOMaticXObj::close,		kXObj,					400 },	// D4
-	{ QTVR::fileNames,					QTVR::open,					QTVR::close,				kXObj,					400 },	// D4
+	{ QTCatMoviePlayerXObj::fileNames,	QTCatMoviePlayerXObj::open,	QTCatMoviePlayerXObj::close,kXObj,					400 },	// D4
 	{ QTMovie::fileNames,				QTMovie::open,				QTMovie::close,				kXObj,					400 },	// D4
+	{ QTVR::fileNames,					QTVR::open,					QTVR::close,				kXObj,					400 },	// D4
 	{ Quicktime::fileNames,				Quicktime::open,			Quicktime::close,			kXObj,					300 },	// D3
 	{ RearWindowXObj::fileNames,		RearWindowXObj::open,		RearWindowXObj::close,		kXObj,					400 },	// D4
 	{ RegisterComponent::fileNames,		RegisterComponent::open,	RegisterComponent::close,	kXObj,					400 },	// D4
diff --git a/engines/director/lingo/xlibs/colorcursorxobj.cpp b/engines/director/lingo/xlibs/colorcursorxobj.cpp
new file mode 100644
index 00000000000..c7fe582254c
--- /dev/null
+++ b/engines/director/lingo/xlibs/colorcursorxobj.cpp
@@ -0,0 +1,96 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/colorcursorxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- ColorCursor, and X-Object for using color cursor resources
+--   by Chris Perkins 1993. (CPerkins at aol.com)
+I	mNew
+XI	mGetSetCursor, crsrID -- crsrID is the resource ID number of a 'crsr' type resource
+X	mReleaseCursor -- CALL THIS BEFORE DISPOSING OBJECT or using the lingo <cursor> routine
+*/
+
+namespace Director {
+
+const char *ColorCursorXObj::xlibName = "colorcursorxobj";
+const char *ColorCursorXObj::fileNames[] = {
+	"CCURSOR.XOB",
+	nullptr
+};
+
+static MethodProto xlibMethods[] = {
+	{ "new",				ColorCursorXObj::m_new,		 		0, 0,	400 },
+	{ "dispose",			ColorCursorXObj::m_dispose,		 	0, 0,	400 },
+	{ "getsetcursor",		ColorCursorXObj::m_getSetCursor,	1, 1,	400 },
+	{ "releasecursor",		ColorCursorXObj::m_releaseCursor,	0, 0,	400 },
+	{ nullptr, nullptr, 0, 0, 0 }
+};
+
+ColorCursorXObject::ColorCursorXObject(ObjectType ObjectType) :Object<ColorCursorXObject>("ColorCursorXObj") {
+	_objType = ObjectType;
+}
+
+void ColorCursorXObj::open(int type) {
+	if (type == kXObj) {
+		ColorCursorXObject::initMethods(xlibMethods);
+		ColorCursorXObject *xobj = new ColorCursorXObject(kXObj);
+		g_lingo->exposeXObject(xlibName, xobj);
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void ColorCursorXObj::close(int type) {
+	if (type == kXObj) {
+		ColorCursorXObject::cleanupMethods();
+		g_lingo->_globalvars[xlibName] = Datum();
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void ColorCursorXObj::m_new(int nargs) {
+	if (nargs != 0) {
+		warning("ColorCursorXObj::m_new: expected 0 arguments");
+		g_lingo->dropStack(nargs);
+	}
+	g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(ColorCursorXObj::m_dispose)
+XOBJSTUBNR(ColorCursorXObj::m_getSetCursor)
+XOBJSTUBNR(ColorCursorXObj::m_releaseCursor)
+
+}
diff --git a/engines/director/lingo/xlibs/colorcursorxobj.h b/engines/director/lingo/xlibs/colorcursorxobj.h
new file mode 100644
index 00000000000..6f49dbf5f45
--- /dev/null
+++ b/engines/director/lingo/xlibs/colorcursorxobj.h
@@ -0,0 +1,49 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_COLORCURSORXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_COLORCURSORXOBJ_H
+
+namespace Director {
+
+class ColorCursorXObject : public Object<ColorCursorXObject> {
+public:
+	ColorCursorXObject(ObjectType objType);
+};
+
+namespace ColorCursorXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_getSetCursor(int nargs);
+void m_releaseCursor(int nargs);
+
+} // End of namespace ColorCursorXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/cursorxobj.cpp b/engines/director/lingo/xlibs/cursorxobj.cpp
new file mode 100644
index 00000000000..2193d3eff38
--- /dev/null
+++ b/engines/director/lingo/xlibs/cursorxobj.cpp
@@ -0,0 +1,94 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/cursorxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Win
+ *
+ **************************************************/
+
+/*
+-- Cursor External Factory. 16/03/95 - AAF - Changed to play concatenated movies
+Cursor
+I   mNew --Creates a new instance of the XObject
+X   mDispose --Disposes of XObject instance
+XSS mSetCursor, cursorName, windowName --Sets the window cursor
+ */
+
+namespace Director {
+
+const char *CursorXObj::xlibName = "cursorxobj";
+const char *CursorXObj::fileNames[] = {
+	"CURSOR",
+	nullptr
+};
+
+static MethodProto xlibMethods[] = {
+	{ "new",				CursorXObj::m_new,		 0, 0,	400 },
+	{ "dispose",			CursorXObj::m_dispose,		 0, 0,	400 },
+	{ "setCursor",			CursorXObj::m_setCursor,		 2, 2,	400 },
+	{ nullptr, nullptr, 0, 0, 0 }
+};
+
+CursorXObject::CursorXObject(ObjectType ObjectType) :Object<CursorXObject>("CursorXObj") {
+	_objType = ObjectType;
+}
+
+void CursorXObj::open(int type) {
+	if (type == kXObj) {
+		CursorXObject::initMethods(xlibMethods);
+		CursorXObject *xobj = new CursorXObject(kXObj);
+		g_lingo->exposeXObject(xlibName, xobj);
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void CursorXObj::close(int type) {
+	if (type == kXObj) {
+		CursorXObject::cleanupMethods();
+		g_lingo->_globalvars[xlibName] = Datum();
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void CursorXObj::m_new(int nargs) {
+	if (nargs != 0) {
+		warning("CursorXObj::m_new: expected 0 arguments");
+		g_lingo->dropStack(nargs);
+	}
+	g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(CursorXObj::m_dispose)
+XOBJSTUBNR(CursorXObj::m_setCursor)
+
+}
diff --git a/engines/director/lingo/xlibs/cursorxobj.h b/engines/director/lingo/xlibs/cursorxobj.h
new file mode 100644
index 00000000000..49767c5f455
--- /dev/null
+++ b/engines/director/lingo/xlibs/cursorxobj.h
@@ -0,0 +1,48 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_CURSORXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_CURSORXOBJ_H
+
+namespace Director {
+
+class CursorXObject : public Object<CursorXObject> {
+public:
+	CursorXObject(ObjectType objType);
+};
+
+namespace CursorXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_setCursor(int nargs);
+
+} // End of namespace CursorXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/mapnavigatorxobj.cpp b/engines/director/lingo/xlibs/mapnavigatorxobj.cpp
new file mode 100644
index 00000000000..cd0df48522b
--- /dev/null
+++ b/engines/director/lingo/xlibs/mapnavigatorxobj.cpp
@@ -0,0 +1,161 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/mapnavigatorxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Win
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- MapNav External Factory. 16/03/95 - AAF - New
+MapNav
+IS mNew, fileName -- read map given file name
+X mDispose --  dispose of map
+I mGetFirstNode -- return index of first node
+X mResetHidden --  reset hidden flags to initial values
+SI mGetNodeName, node --  given index, return node name
+IS mGetNodeIndex, name -- given name, return node index
+II mGetBackgroundPicture, node --  return picture number for node
+II mGetHotSpotCount, node --   return no. of hot spots for node
+XIII mSetHidden, node, hotspot, flag -- set/clear hidden flag
+III mGetHidden, node, hotspot --  set/clear hidden flag
+IIIII mPointInside, node, hotspot, x, y -- return true if x,y inside hot spot
+SII mGetHotSpotRect, node, hotspot -- return list of l,t,r,b for hot spot
+III mGetHotSpotCursor, node, hotspot -- return cursor number for node
+SII mGetEvaluationFcn, node, hotspot -- return function name to call to get condition number
+IIII mGetDestinationNode, node, hotspot, condition --  return destination node for hot spot
+IIII mGetInstructionCount, node, hotspot, condition --  return number of instructions
+IIIII mGetInstructionType, node, hotspot, condition, index -- return type of instruction 'Q' or 'L'
+SIIII mGetInstruction, node, hotspot, condition, index --  return ith instruction
+
+-- Navigator, Navigation XObject - aep 95.03.28
+IS mNew, fileName -- read map given file name
+X mDispose --  dispose of map
+I mGetFirstNode -- return index of first node
+X mResetHidden --  reset hidden flags to initial values
+SI mGetNodeName, node --  given index, return node name
+IS mGetNodeIndex, name -- given name, return node index
+II mGetBackgroundPicture, node --  return picture number for node
+II mGetHotSpotCount, node --   return no. of hot spots for node
+XIII mSetHidden, node, hotspot, flag -- set/clear hidden flag
+III mGetHidden, node, hotspot --  set/clear hidden flag
+IIIII mPointInside, node, hotspot, h, v -- return true if h,v inside hot spot
+SII mGetHotSpotRect, node, hotspot -- return list of l,t,r,b for hot spot
+III mGetHotSpotCursor, node, hotspot -- return cursor number for node
+SII mGetEvaluationFcn, node, hotspot -- return function name to call to get condition no.
+IIII mGetDestinationNode, node, hotspot, condition --  return destination node for hot spot
+IIII mGetInstructionCount, node, hotspot, condition --  return number of instructions
+IIIII mGetInstructionType, node, hotspot, condition, i -- return type of instruction 'Q' or 'L'
+SIIII mGetInstruction, node, hotspot, condition, i --  return ith instruction
+ */
+
+namespace Director {
+
+const char *MapNavigatorXObj::xlibName = "mapnavigatorxobj";
+const char *MapNavigatorXObj::fileNames[] = {
+	"MAPNAV",				// Jewels of the Oracle - Win
+	"MapNavigator.XObj",	// Jewels of the Oracle - Mac
+	nullptr
+};
+
+static MethodProto xlibMethods[] = {
+	{ "new",					MapNavigatorXObj::m_new,		 		 1, 1,	400 },
+	{ "dispose",				MapNavigatorXObj::m_dispose,		 	 0, 0,	400 },
+	{ "getFirstNode",			MapNavigatorXObj::m_getFirstNode,		 0, 0,	400 },
+	{ "resetHidden",			MapNavigatorXObj::m_resetHidden,		 0, 0,	400 },
+	{ "getNodeName",			MapNavigatorXObj::m_getNodeName,		 1, 1,	400 },
+	{ "getNodeIndex",			MapNavigatorXObj::m_getNodeIndex,		 1, 1,	400 },
+	{ "getBackgroundPicture",	MapNavigatorXObj::m_getBackgroundPicture,1, 1,	400 },
+	{ "getHotSpotCount",		MapNavigatorXObj::m_getHotSpotCount,	 1, 1,	400 },
+	{ "setHidden",				MapNavigatorXObj::m_setHidden,			 3, 3,	400 },
+	{ "getHidden",				MapNavigatorXObj::m_getHidden,			 2, 2,	400 },
+	{ "pointInside",			MapNavigatorXObj::m_pointInside,		 4, 4,	400 },
+	{ "getHotSpotRect",			MapNavigatorXObj::m_getHotSpotRect,		 2, 2,	400 },
+	{ "getHotSpotCursor",		MapNavigatorXObj::m_getHotSpotCursor,	 2, 2,	400 },
+	{ "getEvaluationFcn",		MapNavigatorXObj::m_getEvaluationFcn,	 2, 2,	400 },
+	{ "getDestinationNode",		MapNavigatorXObj::m_getDestinationNode,	 3, 3,	400 },
+	{ "getInstructionCount",	MapNavigatorXObj::m_getInstructionCount, 3, 3,	400 },
+	{ "getInstructionType",		MapNavigatorXObj::m_getInstructionType,	 4, 4,	400 },
+	{ "getInstruction",			MapNavigatorXObj::m_getInstruction,		 4, 4,	400 },
+	{ nullptr, nullptr, 0, 0, 0 }
+};
+
+MapNavigatorXObject::MapNavigatorXObject(ObjectType ObjectType) :Object<MapNavigatorXObject>("MapNavigatorXObj") {
+	_objType = ObjectType;
+}
+
+void MapNavigatorXObj::open(int type) {
+	if (type == kXObj) {
+		MapNavigatorXObject::initMethods(xlibMethods);
+		MapNavigatorXObject *xobj = new MapNavigatorXObject(kXObj);
+		g_lingo->exposeXObject(xlibName, xobj);
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void MapNavigatorXObj::close(int type) {
+	if (type == kXObj) {
+		MapNavigatorXObject::cleanupMethods();
+		g_lingo->_globalvars[xlibName] = Datum();
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void MapNavigatorXObj::m_new(int nargs) {
+	if (nargs != 0) {
+		warning("MapNavigatorXObj::m_new: expected 0 arguments");
+		g_lingo->dropStack(nargs);
+	}
+	g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(MapNavigatorXObj::m_dispose)
+XOBJSTUB(MapNavigatorXObj::m_getFirstNode, 0)
+XOBJSTUBNR(MapNavigatorXObj::m_resetHidden)
+XOBJSTUB(MapNavigatorXObj::m_getNodeName, "")
+XOBJSTUB(MapNavigatorXObj::m_getNodeIndex, 0)
+XOBJSTUB(MapNavigatorXObj::m_getBackgroundPicture, 0)
+XOBJSTUB(MapNavigatorXObj::m_getHotSpotCount, 0)
+XOBJSTUBNR(MapNavigatorXObj::m_setHidden)
+XOBJSTUB(MapNavigatorXObj::m_getHidden, 0)
+XOBJSTUB(MapNavigatorXObj::m_pointInside, 0)
+XOBJSTUB(MapNavigatorXObj::m_getHotSpotRect, "")
+XOBJSTUB(MapNavigatorXObj::m_getHotSpotCursor, 0)
+XOBJSTUB(MapNavigatorXObj::m_getEvaluationFcn, "")
+XOBJSTUB(MapNavigatorXObj::m_getDestinationNode, 0)
+XOBJSTUB(MapNavigatorXObj::m_getInstructionCount, 0)
+XOBJSTUB(MapNavigatorXObj::m_getInstructionType, 0)
+XOBJSTUB(MapNavigatorXObj::m_getInstruction, "")
+
+}
diff --git a/engines/director/lingo/xlibs/mapnavigatorxobj.h b/engines/director/lingo/xlibs/mapnavigatorxobj.h
new file mode 100644
index 00000000000..792453d9f9e
--- /dev/null
+++ b/engines/director/lingo/xlibs/mapnavigatorxobj.h
@@ -0,0 +1,63 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_MAPNAVIGATORXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_MAPNAVIGATORXOBJ_H
+
+namespace Director {
+
+class MapNavigatorXObject : public Object<MapNavigatorXObject> {
+public:
+	MapNavigatorXObject(ObjectType objType);
+};
+
+namespace MapNavigatorXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_getFirstNode(int nargs);
+void m_resetHidden(int nargs);
+void m_getNodeName(int nargs);
+void m_getNodeIndex(int nargs);
+void m_getBackgroundPicture(int nargs);
+void m_getHotSpotCount(int nargs);
+void m_setHidden(int nargs);
+void m_getHidden(int nargs);
+void m_pointInside(int nargs);
+void m_getHotSpotRect(int nargs);
+void m_getHotSpotCursor(int nargs);
+void m_getEvaluationFcn(int nargs);
+void m_getDestinationNode(int nargs);
+void m_getInstructionCount(int nargs);
+void m_getInstructionType(int nargs);
+void m_getInstruction(int nargs);
+
+} // End of namespace MapNavigatorXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/memcheckxobj.cpp b/engines/director/lingo/xlibs/memcheckxobj.cpp
new file mode 100644
index 00000000000..767a8a72379
--- /dev/null
+++ b/engines/director/lingo/xlibs/memcheckxobj.cpp
@@ -0,0 +1,105 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/memcheckxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Win
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- MemCheck External Factory. 16/03/95 - AAF - New
+MemCheck
+IS    mNew, virtualFile --Creates a new instance of the XObject
+X     mDispose --Disposes of XObject instance
+I     mMemoryCheck --Checks memory status
+X     mMemoryPurge --Purges memory
+
+-- Memory Check XObject - aep 95.06.20
+IS mNew, msg -- Open the XObject
+X mDispose -- Dispose of XObject
+I mMemoryCheck -- Return memory info
+X mMemoryPurge -- Clear chunk o' mem
+ */
+
+namespace Director {
+
+const char *MemCheckXObj::xlibName = "memcheckxobj";
+const char *MemCheckXObj::fileNames[] = {
+	"MemCheck",			// Jewels of the Oracle - Win
+	"MemCheck.XObj",	// Jewels of the Oracle - Mac
+	nullptr
+};
+
+static MethodProto xlibMethods[] = {
+	{ "new",				MemCheckXObj::m_new,		 1, 1,	400 },
+	{ "dispose",				MemCheckXObj::m_dispose,		 0, 0,	400 },
+	{ "memoryCheck",				MemCheckXObj::m_memoryCheck,		 0, 0,	400 },
+	{ "memoryPurge",				MemCheckXObj::m_memoryPurge,		 0, 0,	400 },
+	{ nullptr, nullptr, 0, 0, 0 }
+};
+
+MemCheckXObject::MemCheckXObject(ObjectType ObjectType) :Object<MemCheckXObject>("MemCheckXObj") {
+	_objType = ObjectType;
+}
+
+void MemCheckXObj::open(int type) {
+	if (type == kXObj) {
+		MemCheckXObject::initMethods(xlibMethods);
+		MemCheckXObject *xobj = new MemCheckXObject(kXObj);
+		g_lingo->exposeXObject(xlibName, xobj);
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void MemCheckXObj::close(int type) {
+	if (type == kXObj) {
+		MemCheckXObject::cleanupMethods();
+		g_lingo->_globalvars[xlibName] = Datum();
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void MemCheckXObj::m_new(int nargs) {
+	if (nargs != 0) {
+		warning("MemCheckXObj::m_new: expected 0 arguments");
+		g_lingo->dropStack(nargs);
+	}
+	g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(MemCheckXObj::m_dispose)
+XOBJSTUB(MemCheckXObj::m_memoryCheck, 0)
+XOBJSTUBNR(MemCheckXObj::m_memoryPurge)
+
+}
diff --git a/engines/director/lingo/xlibs/memcheckxobj.h b/engines/director/lingo/xlibs/memcheckxobj.h
new file mode 100644
index 00000000000..9a183117808
--- /dev/null
+++ b/engines/director/lingo/xlibs/memcheckxobj.h
@@ -0,0 +1,49 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_MEMCHECKXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_MEMCHECKXOBJ_H
+
+namespace Director {
+
+class MemCheckXObject : public Object<MemCheckXObject> {
+public:
+	MemCheckXObject(ObjectType objType);
+};
+
+namespace MemCheckXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_memoryCheck(int nargs);
+void m_memoryPurge(int nargs);
+
+} // End of namespace MemCheckXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/mmaskxobj.cpp b/engines/director/lingo/xlibs/mmaskxobj.cpp
new file mode 100644
index 00000000000..c3a1e4320a0
--- /dev/null
+++ b/engines/director/lingo/xlibs/mmaskxobj.cpp
@@ -0,0 +1,92 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/mmaskxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- MMEX Mask
+I	mNew
+II	mMask, state
+ */
+
+namespace Director {
+
+const char *MMaskXObj::xlibName = "mmaskxobj";
+const char *MMaskXObj::fileNames[] = {
+	"MMASK.XOB",
+	nullptr
+};
+
+static MethodProto xlibMethods[] = {
+	{ "new",			MMaskXObj::m_new,		0, 0,	400 },
+	{ "dispose",		MMaskXObj::m_dispose,	0, 0,	400 },
+	{ "mask",			MMaskXObj::m_mask,	 	1, 1,	400 },
+	{ nullptr, nullptr, 0, 0, 0 }
+};
+
+MMaskXObject::MMaskXObject(ObjectType ObjectType) :Object<MMaskXObject>("MMaskXObj") {
+	_objType = ObjectType;
+}
+
+void MMaskXObj::open(int type) {
+	if (type == kXObj) {
+		MMaskXObject::initMethods(xlibMethods);
+		MMaskXObject *xobj = new MMaskXObject(kXObj);
+		g_lingo->exposeXObject(xlibName, xobj);
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void MMaskXObj::close(int type) {
+	if (type == kXObj) {
+		MMaskXObject::cleanupMethods();
+		g_lingo->_globalvars[xlibName] = Datum();
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void MMaskXObj::m_new(int nargs) {
+	if (nargs != 0) {
+		warning("MMaskXObj::m_new: expected 0 arguments");
+		g_lingo->dropStack(nargs);
+	}
+	g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(MMaskXObj::m_dispose)
+XOBJSTUBNR(MMaskXObj::m_mask)
+
+}
diff --git a/engines/director/lingo/xlibs/mmaskxobj.h b/engines/director/lingo/xlibs/mmaskxobj.h
new file mode 100644
index 00000000000..92dbb2ddf89
--- /dev/null
+++ b/engines/director/lingo/xlibs/mmaskxobj.h
@@ -0,0 +1,48 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_MMASKXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_MMASKXOBJ_H
+
+namespace Director {
+
+class MMaskXObject : public Object<MMaskXObject> {
+public:
+	MMaskXObject(ObjectType objType);
+};
+
+namespace MMaskXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_mask(int nargs);
+
+} // End of namespace MMaskXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/movieidxxobj.cpp b/engines/director/lingo/xlibs/movieidxxobj.cpp
new file mode 100644
index 00000000000..af135c27695
--- /dev/null
+++ b/engines/director/lingo/xlibs/movieidxxobj.cpp
@@ -0,0 +1,101 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/movieidxxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Win
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- MovieIdx External Factory. 16/03/95 - AAF - New
+MovieIdx
+I     mNew --Creates a new instance of the XObject
+X     mDispose --Disposes of XObject instance
+SS    mMovieInfo, movieName --Returns movie information for a given name
+
+-- MovieIdx, Movie Index XObject - aep 95.05.01
+I mNew --  read map given file name
+X mDispose --  dispose of map
+SS mMovieInfo -- return info given name
+ */
+
+namespace Director {
+
+const char *MovieIdxXObj::xlibName = "movieidxxobj";
+const char *MovieIdxXObj::fileNames[] = {
+	"MovieIdx",			// Jewels of the Oracle - Win
+	"MovieIdx.XObj",	// Jewels of the Oracle - Mac
+	nullptr
+};
+
+static MethodProto xlibMethods[] = {
+	{ "new",				MovieIdxXObj::m_new,		 0, 0,	400 },
+	{ "dispose",				MovieIdxXObj::m_dispose,		 0, 0,	400 },
+	{ "movieInfo",				MovieIdxXObj::m_movieInfo,		 1, 1,	400 },
+	{ nullptr, nullptr, 0, 0, 0 }
+};
+
+MovieIdxXObject::MovieIdxXObject(ObjectType ObjectType) :Object<MovieIdxXObject>("MovieIdxXObj") {
+	_objType = ObjectType;
+}
+
+void MovieIdxXObj::open(int type) {
+	if (type == kXObj) {
+		MovieIdxXObject::initMethods(xlibMethods);
+		MovieIdxXObject *xobj = new MovieIdxXObject(kXObj);
+		g_lingo->exposeXObject(xlibName, xobj);
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void MovieIdxXObj::close(int type) {
+	if (type == kXObj) {
+		MovieIdxXObject::cleanupMethods();
+		g_lingo->_globalvars[xlibName] = Datum();
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void MovieIdxXObj::m_new(int nargs) {
+	if (nargs != 0) {
+		warning("MovieIdxXObj::m_new: expected 0 arguments");
+		g_lingo->dropStack(nargs);
+	}
+	g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(MovieIdxXObj::m_dispose)
+XOBJSTUB(MovieIdxXObj::m_movieInfo, "")
+
+}
diff --git a/engines/director/lingo/xlibs/movieidxxobj.h b/engines/director/lingo/xlibs/movieidxxobj.h
new file mode 100644
index 00000000000..c719393633b
--- /dev/null
+++ b/engines/director/lingo/xlibs/movieidxxobj.h
@@ -0,0 +1,48 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_MOVIEIDXXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_MOVIEIDXXOBJ_H
+
+namespace Director {
+
+class MovieIdxXObject : public Object<MovieIdxXObject> {
+public:
+	MovieIdxXObject(ObjectType objType);
+};
+
+namespace MovieIdxXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_movieInfo(int nargs);
+
+} // End of namespace MovieIdxXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/palxobj.cpp b/engines/director/lingo/xlibs/palxobj.cpp
index bfc961140e0..29a02bd8d80 100644
--- a/engines/director/lingo/xlibs/palxobj.cpp
+++ b/engines/director/lingo/xlibs/palxobj.cpp
@@ -24,6 +24,7 @@
  * USED IN:
  * Majestic-mac
  * chopsuey-mac
+ * Jewels of the Oracle - Mac
  *
  *************************************/
 
@@ -59,6 +60,7 @@ const char *PalXObj::fileNames[] = {
 	"PalXObj",
 	"FixPalette",
 	"FixPaletteXObj",
+	"PALETTE.XOB",    //  Jewels of the Oracle - Mac
 	nullptr
 };
 
diff --git a/engines/director/lingo/xlibs/qtcatmovieplayerxobj.cpp b/engines/director/lingo/xlibs/qtcatmovieplayerxobj.cpp
new file mode 100644
index 00000000000..cdd3add5a13
--- /dev/null
+++ b/engines/director/lingo/xlibs/qtcatmovieplayerxobj.cpp
@@ -0,0 +1,103 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/qtcatmovieplayerxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Win
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- CatPlayr External Factory. 16/03/95 - AAF - Changed to play concatenated movies
+CatPlayr
+IS         mNew, fileName --Creates a new instance of the XObject
+X          mDispose --Disposes of XObject instance
+IIIIIIIIIS mPlay, movieOffset, startTime, duration, interruptable, horizontal, vertical, hideCursor, everyFrame, siblingWindowName --Plays QT
+
+
+-- QTCatMoviePlayer, QuickTime Player XObject - js 95.05.01
+IS         mNew, fileName, -- Open movie and place at h,v
+X          mDispose -- Dispose of movie and close file
+XIIIIIIIIS mPlay, filesOffset, startTime, duration, interruptable, h, v, hideCursor, playEveryFrame, windowName --  Play movie from start to end
+
+ */
+
+namespace Director {
+
+const char *QTCatMoviePlayerXObj::xlibName = "qtcatmovieplayerxobj";
+const char *QTCatMoviePlayerXObj::fileNames[] = {
+	"CATPLAYR",					// Jewels of the Oracle - Win
+	"QTCatMoviePlayer.XObj",	// Jewels of the Oracle - Mac
+	nullptr
+};
+
+static MethodProto xlibMethods[] = {
+	{ "new",				QTCatMoviePlayerXObj::m_new,		 1, 1,	400 },
+	{ "dispose",			QTCatMoviePlayerXObj::m_dispose,	 0, 0,	400 },
+	{ "play",				QTCatMoviePlayerXObj::m_play,		 9, 9,	400 },
+	{ nullptr, nullptr, 0, 0, 0 }
+};
+
+QTCatMoviePlayerXObject::QTCatMoviePlayerXObject(ObjectType ObjectType) :Object<QTCatMoviePlayerXObject>("QTCatMoviePlayerXObj") {
+	_objType = ObjectType;
+}
+
+void QTCatMoviePlayerXObj::open(int type) {
+	if (type == kXObj) {
+		QTCatMoviePlayerXObject::initMethods(xlibMethods);
+		QTCatMoviePlayerXObject *xobj = new QTCatMoviePlayerXObject(kXObj);
+		g_lingo->exposeXObject(xlibName, xobj);
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void QTCatMoviePlayerXObj::close(int type) {
+	if (type == kXObj) {
+		QTCatMoviePlayerXObject::cleanupMethods();
+		g_lingo->_globalvars[xlibName] = Datum();
+	} else if (type == kXtraObj) {
+		// TODO - Implement Xtra
+	}
+}
+
+void QTCatMoviePlayerXObj::m_new(int nargs) {
+	if (nargs != 0) {
+		warning("QTCatMoviePlayerXObj::m_new: expected 0 arguments");
+		g_lingo->dropStack(nargs);
+	}
+	g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(QTCatMoviePlayerXObj::m_dispose)
+XOBJSTUB(QTCatMoviePlayerXObj::m_play, 0)
+
+}
diff --git a/engines/director/lingo/xlibs/qtcatmovieplayerxobj.h b/engines/director/lingo/xlibs/qtcatmovieplayerxobj.h
new file mode 100644
index 00000000000..5d05a225e0a
--- /dev/null
+++ b/engines/director/lingo/xlibs/qtcatmovieplayerxobj.h
@@ -0,0 +1,48 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_QTCATMOVIEPLAYERXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_QTCATMOVIEPLAYERXOBJ_H
+
+namespace Director {
+
+class QTCatMoviePlayerXObject : public Object<QTCatMoviePlayerXObject> {
+public:
+	QTCatMoviePlayerXObject(ObjectType objType);
+};
+
+namespace QTCatMoviePlayerXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_play(int nargs);
+
+} // End of namespace QTCatMoviePlayerXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/module.mk b/engines/director/module.mk
index 47cc721bd1d..f473b5b6481 100644
--- a/engines/director/module.mk
+++ b/engines/director/module.mk
@@ -60,7 +60,9 @@ MODULE_OBJS = \
 	lingo/xlibs/blitpict.o \
 	lingo/xlibs/cdromxobj.o \
 	lingo/xlibs/colorxobj.o \
+	lingo/xlibs/colorcursorxobj.o \
 	lingo/xlibs/consumer.o \
+	lingo/xlibs/cursorxobj.o \
 	lingo/xlibs/darkenscreen.o \
 	lingo/xlibs/developerStack.o \
 	lingo/xlibs/dialogsxobj.o \
@@ -87,11 +89,15 @@ MODULE_OBJS = \
 	lingo/xlibs/jwxini.o \
 	lingo/xlibs/labeldrvxobj.o \
 	lingo/xlibs/maniacbg.o \
+	lingo/xlibs/mapnavigatorxobj.o \
+	lingo/xlibs/memcheckxobj.o \
 	lingo/xlibs/memoryxobj.o \
 	lingo/xlibs/misc.o \
 	lingo/xlibs/miscx.o \
+	lingo/xlibs/mmaskxobj.o \
 	lingo/xlibs/moovxobj.o \
 	lingo/xlibs/movemousexobj.o \
+	lingo/xlibs/movieidxxobj.o \
 	lingo/xlibs/movutils.o \
 	lingo/xlibs/orthoplayxobj.o \
 	lingo/xlibs/palxobj.o \
@@ -99,6 +105,7 @@ MODULE_OBJS = \
 	lingo/xlibs/porta.o \
 	lingo/xlibs/prefpath.o \
 	lingo/xlibs/printomatic.o \
+	lingo/xlibs/qtcatmovieplayerxobj.o \
 	lingo/xlibs/qtmovie.o \
 	lingo/xlibs/qtvr.o \
 	lingo/xlibs/quicktime.o \




More information about the Scummvm-git-logs mailing list