[Scummvm-git-logs] scummvm master -> 54338098066a264d5a83e0e462eb8bc16a9858be

moralrecordings noreply at scummvm.org
Tue May 28 03:49:59 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:
1a67f0e114 DIRECTOR: XOBJ: Disable gzip on MMovie saves
81196fbced DIRECTOR: Add patch to skip VNC loading times
60a15d17f8 DIRECTOR: Add debugger guardrail for missing frame data
524303e122 DIRECTOR: Move frame timing debug messages to events channel
1ba201960b DIRECTOR: XOBJ: Add Backdrop XObj
5433809806 DIRECTOR: Add detection table entry for Die Hexenakademie


Commit: 1a67f0e1149012a12b45d0c946f0c5ae7c686ed3
    https://github.com/scummvm/scummvm/commit/1a67f0e1149012a12b45d0c946f0c5ae7c686ed3
Author: Scott Percival (code at moral.net.au)
Date: 2024-05-28T11:49:14+08:00

Commit Message:
DIRECTOR: XOBJ: Disable gzip on MMovie saves

Changed paths:
    engines/director/lingo/xlibs/mmovie.cpp


diff --git a/engines/director/lingo/xlibs/mmovie.cpp b/engines/director/lingo/xlibs/mmovie.cpp
index dc845b6be96..4b955d69bd7 100644
--- a/engines/director/lingo/xlibs/mmovie.cpp
+++ b/engines/director/lingo/xlibs/mmovie.cpp
@@ -660,7 +660,7 @@ void MMovieXObj::m_writeFile(int nargs) {
 		path = prefix + path;
 	}
 
-	Common::SeekableWriteStream *stream = saves->openForSaving(path);
+	Common::SeekableWriteStream *stream = saves->openForSaving(path, false);
 
 	if (stream) {
 		debugC(5, kDebugXObj, "MMovieXObj::m_writeFile(): opening file %s as %s from the saves dir", origPath.c_str(), path.c_str());


Commit: 81196fbced6e8f28fee6747ed50f16d9f2630c74
    https://github.com/scummvm/scummvm/commit/81196fbced6e8f28fee6747ed50f16d9f2630c74
Author: Scott Percival (code at moral.net.au)
Date: 2024-05-28T11:49:14+08:00

Commit Message:
DIRECTOR: Add patch to skip VNC loading times

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


diff --git a/engines/director/lingo/lingo-patcher.cpp b/engines/director/lingo/lingo-patcher.cpp
index 0bbe9bf0478..17c5bd00a19 100644
--- a/engines/director/lingo/lingo-patcher.cpp
+++ b/engines/director/lingo/lingo-patcher.cpp
@@ -320,6 +320,20 @@ on checkkaiwa kaiwatrue, kaiwafalse \r\
 end \r\
 ";
 
+/*
+ * Virtual Nightclub will try and list all the files from all 26 drive letters
+ * to determine which has the CD. This works, but takes forever.
+ */
+
+const char *vncSkipDetection = " \
+global cdDriveLetter, gMultiDisk \r\
+on findVNCVolume \r\
+  set cdDriveLetter to \"D\" \r\
+  set gMultiDisk to 1 \r\
+  return 1 \r\
+end \r\
+";
+
 /*
  * Virtual Nightclub has a number of cheat codes for debugging.
  * These are normally enabled by pressing Option + 0, however the
@@ -378,6 +392,7 @@ struct ScriptHandlerPatch {
 	{"kyoto", nullptr, kPlatformWindows, "ck_data\\opening\\shared.dxr", kMovieScript, 802, DEFAULT_CAST_LIB, &kyotoTextEntryFix},
 	{"kyoto", nullptr, kPlatformWindows, "ck_data\\rajoumon\\shared.dxr", kMovieScript, 840, DEFAULT_CAST_LIB, &kyotoTextEntryFix},
 	{"kyoto", nullptr, kPlatformWindows, "ck_data\\rokudou\\shared.dxr", kMovieScript, 846, DEFAULT_CAST_LIB, &kyotoTextEntryFix},
+	{"vnc", nullptr, kPlatformWindows, "VNC\\VNC.EXE", kMovieScript, 57, DEFAULT_CAST_LIB, &vncSkipDetection},
 	{"vnc", nullptr, kPlatformWindows, "VNC2\\SHARED.DXR", kMovieScript, 1248, DEFAULT_CAST_LIB, &vncEnableCheats},
 	{"amber", nullptr, kPlatformWindows, "AMBER_F\\AMBER_JB.EXE", kMovieScript, 7, DEFAULT_CAST_LIB, &amberDriveDetectionFix},
 	{nullptr, nullptr, kPlatformUnknown, nullptr, kNoneScript, 0, 0, nullptr},
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 79e2a51ce84..8a17269e925 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -362,6 +362,9 @@ void LingoArchive::patchCode(const Common::U32String &code, ScriptType type, uin
 			it._value.ctx = scriptContexts[type][id];
 			scriptContexts[type][id]->_functionHandlers[it._key] = it._value;
 			functionHandlers[it._key] = it._value;
+			if (g_lingo->_eventHandlerTypeIds.contains(it._key)) {
+				scriptContexts[type][id]->_eventHandlers[g_lingo->_eventHandlerTypeIds[it._key]] = it._value;
+			}
 		}
 		sc->_functionHandlers.clear();
 		delete sc;


Commit: 60a15d17f83a2126c0a7d438dde5627da4528b35
    https://github.com/scummvm/scummvm/commit/60a15d17f83a2126c0a7d438dde5627da4528b35
Author: Scott Percival (code at moral.net.au)
Date: 2024-05-28T11:49:14+08:00

Commit Message:
DIRECTOR: Add debugger guardrail for missing frame data

Changed paths:
    engines/director/debugger.cpp


diff --git a/engines/director/debugger.cpp b/engines/director/debugger.cpp
index 5ef1d5ddc4b..d4489a0a3a6 100644
--- a/engines/director/debugger.cpp
+++ b/engines/director/debugger.cpp
@@ -339,8 +339,12 @@ bool Debugger::cmdChannels(int argc, const char **argv) {
 	if (frameId >= 1 && frameId <= maxSize) {
 		debugPrintf("Channel info for frame %d of %d\n", frameId, maxSize);
 		Frame *frame = score->getFrameData(frameId);
-		debugPrintf("%s\n", frame->formatChannelInfo().c_str());
-		delete frame;
+		if (frame) {
+			debugPrintf("%s\n", frame->formatChannelInfo().c_str());
+			delete frame;
+		} else {
+			debugPrintf("  not found\n");
+		}
 	} else {
 		debugPrintf("Must specify a frame number between 1 and %d.\n", maxSize);
 	}


Commit: 524303e122f5e74b62a4b3c488e0597ff9a6886c
    https://github.com/scummvm/scummvm/commit/524303e122f5e74b62a4b3c488e0597ff9a6886c
Author: Scott Percival (code at moral.net.au)
Date: 2024-05-28T11:49:14+08:00

Commit Message:
DIRECTOR: Move frame timing debug messages to events channel

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 5d0ee32ee98..e5c087b9ea3 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -346,7 +346,7 @@ void Score::setDelay(uint32 ticks) {
 	// will be acknowledged.
 	if (!_nextFrameDelay) {
 		_nextFrameDelay = g_system->getMillis() + (ticks * 1000 / 60);
-		debugC(5, kDebugLoading, "Score::setDelay(): delaying %d ticks, next frame time at %d", ticks, _nextFrameDelay);
+		debugC(5, kDebugEvents, "Score::setDelay(): delaying %d ticks, next frame time at %d", ticks, _nextFrameDelay);
 	}
 }
 
@@ -356,7 +356,7 @@ void Score::setCurrentFrame(uint16 frameId) {
 
 bool Score::isWaitingForNextFrame() {
 	bool keepWaiting = false;
-	debugC(8, kDebugLoading, "Score::isWaitingForNextFrame(): nextFrameTime: %d, time: %d, sound: %d, click: %d, video: %d", _nextFrameTime, g_system->getMillis(false), _waitForChannel, _waitForClick, _waitForVideoChannel);
+	debugC(8, kDebugEvents, "Score::isWaitingForNextFrame(): nextFrameTime: %d, time: %d, sound: %d, click: %d, video: %d", _nextFrameTime, g_system->getMillis(false), _waitForChannel, _waitForClick, _waitForVideoChannel);
 
 	if (_waitForChannel) {
 		if (_soundManager->isChannelActive(_waitForChannel)) {
@@ -383,7 +383,7 @@ bool Score::isWaitingForNextFrame() {
 	}
 
 	if (!keepWaiting) {
-		debugC(8, kDebugLoading, "Score::isWaitingForNextFrame(): end of wait cycle");
+		debugC(8, kDebugEvents, "Score::isWaitingForNextFrame(): end of wait cycle");
 	}
 	return keepWaiting;
 }
@@ -473,32 +473,32 @@ void Score::updateNextFrameTime() {
 		if (tempo >= 256 - maxDelay) {
 			// Delay
 			_nextFrameTime = g_system->getMillis() + (256 - tempo) * 1000;
-			debugC(5, kDebugLoading, "Score::updateNextFrameTime(): setting _nextFrameTime to %d based on a delay of %d", _nextFrameTime, 256 - tempo);
+			debugC(5, kDebugEvents, "Score::updateNextFrameTime(): setting _nextFrameTime to %d based on a delay of %d", _nextFrameTime, 256 - tempo);
 		} else if (tempo <= 120) {
 			// FPS
 			_currentFrameRate = tempo;
 			if (g_director->_fpsLimit)
 				_currentFrameRate = MIN(g_director->_fpsLimit, _currentFrameRate);
 			_nextFrameTime = g_system->getMillis() + 1000.0 / (float)_currentFrameRate;
-			debugC(5, kDebugLoading, "Score::updateNextFrameTime(): setting _nextFrameTime to %d based on a framerate of %d", _nextFrameTime, _currentFrameRate);
+			debugC(5, kDebugEvents, "Score::updateNextFrameTime(): setting _nextFrameTime to %d based on a framerate of %d", _nextFrameTime, _currentFrameRate);
 		} else {
 			if (tempo == 128) {
 				_waitForClick = true;
 				_waitForClickCursor = false;
 				renderCursor(_movie->getWindow()->getMousePos());
-				debugC(5, kDebugLoading, "Score::updateNextFrameTime(): waiting for mouse click before next frame");
+				debugC(5, kDebugEvents, "Score::updateNextFrameTime(): waiting for mouse click before next frame");
 			} else if (!waitForClickOnly && tempo == 135) {
 				// Wait for sound channel 1
 				_waitForChannel = 1;
-				debugC(5, kDebugLoading, "Score::updateNextFrameTime(): waiting for sound channel 1 before next frame");
+				debugC(5, kDebugEvents, "Score::updateNextFrameTime(): waiting for sound channel 1 before next frame");
 			} else if (!waitForClickOnly && tempo == 134) {
 				// Wait for sound channel 2
 				_waitForChannel = 2;
-				debugC(5, kDebugLoading, "Score::updateNextFrameTime(): waiting for sound channel 2 before next frame");
+				debugC(5, kDebugEvents, "Score::updateNextFrameTime(): waiting for sound channel 2 before next frame");
 			} else if (!waitForClickOnly && tempo >= 136 && tempo <= 135 + _numChannelsDisplayed) {
 				// Wait for a digital video in a channel to finish playing
 				_waitForVideoChannel = tempo - 135;
-				debugC(5, kDebugLoading, "Score::updateNextFrameTime(): waiting for video in channel %d before next frame", _waitForVideoChannel);
+				debugC(5, kDebugEvents, "Score::updateNextFrameTime(): waiting for video in channel %d before next frame", _waitForVideoChannel);
 			} else {
 				warning("Score::updateNextFrameTime(): Unhandled tempo instruction: %d", tempo);
 			}
@@ -578,7 +578,7 @@ void Score::update() {
 	// set the delay time/condition until the next frame
 	updateNextFrameTime();
 
-	debugC(1, kDebugLoading, "******************************  Current frame: %d, time: %d", _curFrameNumber, g_system->getMillis(false));
+	debugC(1, kDebugEvents, "******************************  Current frame: %d, time: %d", _curFrameNumber, g_system->getMillis(false));
 	g_debugger->frameHook();
 
 	// movie could have been stopped by a window switch or a debug flag
@@ -603,7 +603,7 @@ void Score::update() {
 
 	// check to see if we've hit the recursion limit
 	if (_vm->getVersion() >= 400 && _window->frozenLingoStateCount() >= 2) {
-		debugC(1, kDebugLoading, "Score::update(): hitting depth limit for D4 scripts, defrosting");
+		debugC(1, kDebugEvents, "Score::update(): hitting depth limit for D4 scripts, defrosting");
 		processFrozenScripts();
 		return;
 	} else if (_window->frozenLingoStateCount() >= 64) {
@@ -700,7 +700,7 @@ void Score::renderFrame(uint16 frameId, RenderMode mode) {
 		_cursorDirty = false;
 	}
 	uint32 end = g_system->getMillis(false);
-	debugC(5, kDebugLoading, "Score::renderFrame() finished in %d millis", end - start);
+	debugC(5, kDebugEvents, "Score::renderFrame() finished in %d millis", end - start);
 }
 
 bool Score::renderTransition(uint16 frameId, RenderMode mode) {


Commit: 1ba201960b05b2368a092cff4b8ff36dcf57bb3a
    https://github.com/scummvm/scummvm/commit/1ba201960b05b2368a092cff4b8ff36dcf57bb3a
Author: Scott Percival (code at moral.net.au)
Date: 2024-05-28T11:49:14+08:00

Commit Message:
DIRECTOR: XOBJ: Add Backdrop XObj

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


diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index 3a5655df88f..490099b4634 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -32,6 +32,7 @@
 #include "director/lingo/xlibs/aiff.h"
 #include "director/lingo/xlibs/applecdxobj.h"
 #include "director/lingo/xlibs/askuser.h"
+#include "director/lingo/xlibs/backdrop.h"
 #include "director/lingo/xlibs/barakeobj.h"
 #include "director/lingo/xlibs/batqt.h"
 #include "director/lingo/xlibs/blitpict.h"
@@ -197,6 +198,7 @@ static struct XLibProto {
 	{ AiffXObj::fileNames,				AiffXObj::open,				AiffXObj::close,			kXObj,					400 },	// D4
 	{ AppleCDXObj::fileNames,			AppleCDXObj::open,			AppleCDXObj::close,			kXObj,					300 },	// D3
 	{ AskUser::fileNames,				AskUser::open,				AskUser::close,				kXObj,					400 },	// D4
+	{ BackdropXObj::fileNames,			BackdropXObj::open,			BackdropXObj::close,		kXObj,					400 },	// D4
 	{ BarakeObj::fileNames,				BarakeObj::open,			BarakeObj::close,			kXObj,					400 },	// D4
 	{ BatQT::fileNames,					BatQT::open,				BatQT::close,				kXObj,					400 },	// D4
 	{ BlitPictXObj::fileNames,			BlitPictXObj::open,			BlitPictXObj::close,		kXObj,					400 },	// D4
diff --git a/engines/director/lingo/xlibs/backdrop.cpp b/engines/director/lingo/xlibs/backdrop.cpp
new file mode 100644
index 00000000000..d8392d95a27
--- /dev/null
+++ b/engines/director/lingo/xlibs/backdrop.cpp
@@ -0,0 +1,125 @@
+/* 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/backdrop.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * A Trip To The Sky
+ * Die Hexenakademie
+ *
+ **************************************************/
+
+/*
+--  Backdrop XObject
+--  Draws a backdrop behind the Director stage
+--  Version 2.0.1, September 27, 1994
+--  ©1993-94 Electronic Ink
+I      mNew
+X      mDispose
+X      mShow
+X      mHide
+X      mPaint
+V      mSetColor, index [or] r,g,b
+V      mSetBgColor, index [or] r,g,b
+V      mSetPattern, patNum [or] patName
+XI     mSetPPat, ppatID
+V      mSetPicture, castPict [or] pictID [or] pictFile
+XI     mHideInBack, trueOrFalse
+XI     mHideMessages, trueOrFalse
+XS     mRegister, serialNumber
+ */
+
+namespace Director {
+
+const char *BackdropXObj::xlibName = "Backdrop";
+const char *BackdropXObj::fileNames[] = {
+	"Backdrop",
+	"backdrop.obj",
+	"Backdrop XObj",
+	nullptr
+};
+
+static MethodProto xlibMethods[] = {
+	{ "new",				BackdropXObj::m_new,		 0, 0,	400 },
+	{ "dispose",				BackdropXObj::m_dispose,		 0, 0,	400 },
+	{ "show",				BackdropXObj::m_show,		 0, 0,	400 },
+	{ "hide",				BackdropXObj::m_hide,		 0, 0,	400 },
+	{ "paint",				BackdropXObj::m_paint,		 0, 0,	400 },
+	{ "setColor",				BackdropXObj::m_setColor,		 0, 0,	400 },
+	{ "setBgColor",				BackdropXObj::m_setBgColor,		 0, 0,	400 },
+	{ "setPattern",				BackdropXObj::m_setPattern,		 0, 0,	400 },
+	{ "setPPat",				BackdropXObj::m_setPPat,		 1, 1,	400 },
+	{ "setPicture",				BackdropXObj::m_setPicture,		 0, 0,	400 },
+	{ "hideInBack",				BackdropXObj::m_hideInBack,		 1, 1,	400 },
+	{ "hideMessages",				BackdropXObj::m_hideMessages,		 1, 1,	400 },
+	{ "register",				BackdropXObj::m_register,		 1, 1,	400 },
+	{ nullptr, nullptr, 0, 0, 0 }
+};
+
+static BuiltinProto xlibBuiltins[] = {
+	{ nullptr, nullptr, 0, 0, 0, VOIDSYM }
+};
+
+BackdropXObject::BackdropXObject(ObjectType ObjectType) :Object<BackdropXObject>("Backdrop") {
+	_objType = ObjectType;
+}
+
+void BackdropXObj::open(ObjectType type, const Common::Path &path) {
+    BackdropXObject::initMethods(xlibMethods);
+    BackdropXObject *xobj = new BackdropXObject(type);
+    g_lingo->exposeXObject(xlibName, xobj);
+    g_lingo->initBuiltIns(xlibBuiltins);
+}
+
+void BackdropXObj::close(ObjectType type) {
+    BackdropXObject::cleanupMethods();
+    g_lingo->_globalvars[xlibName] = Datum();
+
+}
+
+void BackdropXObj::m_new(int nargs) {
+	g_lingo->printSTUBWithArglist("BackdropXObj::m_new", nargs);
+	g_lingo->dropStack(nargs);
+	g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(BackdropXObj::m_dispose)
+XOBJSTUBNR(BackdropXObj::m_show)
+XOBJSTUBNR(BackdropXObj::m_hide)
+XOBJSTUBNR(BackdropXObj::m_paint)
+XOBJSTUB(BackdropXObj::m_setColor, 0)
+XOBJSTUB(BackdropXObj::m_setBgColor, 0)
+XOBJSTUB(BackdropXObj::m_setPattern, 0)
+XOBJSTUBNR(BackdropXObj::m_setPPat)
+XOBJSTUB(BackdropXObj::m_setPicture, 0)
+XOBJSTUBNR(BackdropXObj::m_hideInBack)
+XOBJSTUBNR(BackdropXObj::m_hideMessages)
+XOBJSTUBNR(BackdropXObj::m_register)
+
+}
diff --git a/engines/director/lingo/xlibs/backdrop.h b/engines/director/lingo/xlibs/backdrop.h
new file mode 100644
index 00000000000..fcfc87edef4
--- /dev/null
+++ b/engines/director/lingo/xlibs/backdrop.h
@@ -0,0 +1,58 @@
+/* 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_BACKDROP_H
+#define DIRECTOR_LINGO_XLIBS_BACKDROP_H
+
+namespace Director {
+
+class BackdropXObject : public Object<BackdropXObject> {
+public:
+	BackdropXObject(ObjectType objType);
+};
+
+namespace BackdropXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(ObjectType type, const Common::Path &path);
+void close(ObjectType type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_show(int nargs);
+void m_hide(int nargs);
+void m_paint(int nargs);
+void m_setColor(int nargs);
+void m_setBgColor(int nargs);
+void m_setPattern(int nargs);
+void m_setPPat(int nargs);
+void m_setPicture(int nargs);
+void m_hideInBack(int nargs);
+void m_hideMessages(int nargs);
+void m_register(int nargs);
+
+} // End of namespace BackdropXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/winxobj.cpp b/engines/director/lingo/xlibs/winxobj.cpp
index 099335ae5ea..74bbd026ca3 100644
--- a/engines/director/lingo/xlibs/winxobj.cpp
+++ b/engines/director/lingo/xlibs/winxobj.cpp
@@ -46,7 +46,6 @@ namespace Director {
 
 const char *RearWindowXObj::xlibName = "RearWindow";
 const char *RearWindowXObj::fileNames[] = {
-	"Backdrop",
 	"RearWindow",
 	"RearWindow.Xobj",
 	"RearWindow XObj",
diff --git a/engines/director/module.mk b/engines/director/module.mk
index 6f8d817928d..e7d45b58de5 100644
--- a/engines/director/module.mk
+++ b/engines/director/module.mk
@@ -62,6 +62,7 @@ MODULE_OBJS = \
 	lingo/xlibs/aiff.o \
 	lingo/xlibs/applecdxobj.o \
 	lingo/xlibs/askuser.o \
+	lingo/xlibs/backdrop.o \
 	lingo/xlibs/barakeobj.o \
 	lingo/xlibs/batqt.o \
 	lingo/xlibs/blitpict.o \


Commit: 54338098066a264d5a83e0e462eb8bc16a9858be
    https://github.com/scummvm/scummvm/commit/54338098066a264d5a83e0e462eb8bc16a9858be
Author: Scott Percival (code at moral.net.au)
Date: 2024-05-28T11:49:14+08:00

Commit Message:
DIRECTOR: Add detection table entry for Die Hexenakademie

Changed paths:
    engines/director/detection_tables.h


diff --git a/engines/director/detection_tables.h b/engines/director/detection_tables.h
index 956b502e7e7..4d30aabb4fa 100644
--- a/engines/director/detection_tables.h
+++ b/engines/director/detection_tables.h
@@ -907,6 +907,7 @@ static const PlainGameDescriptor directorGames[] = {
 	{ "braingames",			"Brain Games" },
 	{ "chemicus2",			"Chemicus 2: Die versunkene Stadt" },
 	{ "cklasse",			"Mercedes-Benz C-Class Information Booth" },
+	{ "diehexenakademie",	"Die Hexenakademie" },
 	{ "dieveteranen",		"Die Veteranen: So nutzlos wie eine Fuge von Bach" },
 	{ "dudenmeyer",			"Duden/Meyer Multimedia sampler" },
 	{ "flaschenfahrrad",	"Das Verkehrs-Lernspiel: Fred und das Flaschenfahrrad" },
@@ -3878,6 +3879,9 @@ static const DirectorGameDescription gameDescriptions[] = {
 	MACGAME1_l("digby", "", "Start Digby's Adventures", "a8e65a2268226bd59f12ebdc58a221f3", 481482, Common::ZH_CHN, 404),
 	WINGAME1_l("digby", "", "DIGBY.EXE", "adc126fbc4387e5d8e84dcd5abd33653", 684269, Common::ZH_CHN, 400),
 
+	MACGAME1_l("diehexenakademie", "", "Hexen", "tr:5c56c32ab21e85b20845584c4a2c0965", 482610, Common::DE_DEU, 404),
+	WINGAME1_l("diehexenakademie", "", "HEXEN.EXE", "t:5f44d2c1e58d0044081134c0dd045139", 741106, Common::DE_DEU, 404),
+
 	MACGAME1_l("dieveteranen", "", "Die Veteranen", "a33b948ad52edc74a4439e176a3ba8bf", 1929826, Common::DE_DEU, 403),
 	WINGAME1_l("dieveteranen", "", "VETERANS.EXE", "t:a00b43e9262390ecf5028e057e6e0633", 692689, Common::DE_DEU, 400),
 




More information about the Scummvm-git-logs mailing list