[Scummvm-git-logs] scummvm master -> 65b0edb4f3e212ebb1c29755370ca56fc999f8d9

sev- noreply at scummvm.org
Thu Oct 2 23:01:08 UTC 2025


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

Summary:
65b0edb4f3 DIRECTOR: LINGO: Further work on D5+ keywords, added stubs


Commit: 65b0edb4f3e212ebb1c29755370ca56fc999f8d9
    https://github.com/scummvm/scummvm/commit/65b0edb4f3e212ebb1c29755370ca56fc999f8d9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-10-03T01:00:42+02:00

Commit Message:
DIRECTOR: LINGO: Further work on D5+ keywords, added stubs

Changed paths:
    engines/director/lingo/docs/d4-d5.txt
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-builtins.h
    engines/director/lingo/lingo-object.cpp
    engines/director/lingo/lingo-the.cpp
    engines/director/lingo/lingo-the.h


diff --git a/engines/director/lingo/docs/d4-d5.txt b/engines/director/lingo/docs/d4-d5.txt
index 27a578a427a..859b07da709 100644
--- a/engines/director/lingo/docs/d4-d5.txt
+++ b/engines/director/lingo/docs/d4-d5.txt
@@ -2,23 +2,16 @@
 > adjust
 > antiAlias
 > appFileSpec
-> beginRecording
-> bitmap
-> button
 > case
 > checkMark
-> collectChangeRects
 > cpuHogTicks
 > deleteAll
 > doEffects
 > duration
 > editFocusSprite
-> endRecording
 > enterFrame
 > fileType
-> filmLoop
 > fixed
-> hitTest
 > imageDirect
 > immediate
 > interface
@@ -38,12 +31,6 @@
 > method
 > mEvent
 > mGetText
-> midiBeat
-> midiContinue
-> midiSong
-> midiSongpointer
-> midiStart
-> midiStop
 > mIdle
 > mKeyDown
 > mMouseDown
@@ -54,7 +41,6 @@
 > mouseHitTest
 > mouseSprite
 > mouseStillDown
-> mouseTrack
 > mouseWithin
 > mPerformOther
 > mQuit
@@ -67,23 +53,18 @@
 > noclear
 > object
 > off
-> ole
 > otherwise
 > parent
-> playAccel
-> playCast
 > productName
 > productVersion
 > propList
 > quickTime
 > resource
-> richText
 > scroll
 > searchPaths
 > send
 > sendAncestor
 > setTrackEnabled
-> shape
 > startScript
 > super
 > symbol
@@ -92,7 +73,6 @@
 > timeout
 > track
 > tracks
-> updateRect
 > vga
 > videoForWindows
 > visibility
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index cf93bccd81f..6dd55d0d070 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -260,6 +260,10 @@ static const BuiltinProto builtins[] = {
 	{ "trackStopTime",	LB::b_trackStopTime,1, 1, 500, FBLTIN },	//				D5 f
 	{ "trackType",		LB::b_trackType,	1, 1, 500, FBLTIN },	//				D5 f
 
+	// Save session
+	{ "beginRecording", LB::b_beginRecording,0, 1, 500, CBLTIN },	//				D5 c
+	{ "endRecording",	LB::b_endRecording,	 0, 0, 500, CBLTIN },	//				D5 c
+
 	// ScummVM Asserts: Used for testing ScummVM's Lingo implementation
 	{ "scummvmAssert",	LB::b_scummvmassert,1, 2, 200, HBLTIN },
 	{ "scummvmAssertEqual",	LB::b_scummvmassertequal,2,3,200,HBLTIN },
@@ -401,6 +405,21 @@ static const BuiltinProto builtins[] = {
    script				//	D5
    tempo				//	D5
    transition			//	D5
+
+   Types:
+	bitmap
+	button
+	digitalVideo
+	field
+	filmLoop
+	movie
+	ole
+	palette
+	richText
+	shape
+	script
+	sound
+	transition
 */
 
 void Lingo::initBuiltIns() {
@@ -3027,6 +3046,18 @@ void LB::b_puppetSound(int nargs) {
 		g_lingo->dropStack(nargs - 2);
 	}
 
+	// TODO
+	// Midi variant is similar to playAccel
+	//
+	// and contains these commands:
+	//
+	// midiBeat
+	// midiContinue
+	// midiSong
+	// midiSongpointer
+	// midiStart
+	// midiStop
+
 	DirectorSound *sound = g_director->getCurrentWindow()->getSoundManager();
 	Score *score = g_director->getCurrentMovie()->getScore();
 
@@ -4106,4 +4137,16 @@ void LB::b_getVolumes(int nargs) {
 	g_lingo->push(d);
 }
 
+void LB::b_beginRecording(int nargs) {
+	g_lingo->printSTUBWithArglist("b_beginRecording", nargs);
+
+	g_lingo->dropStack(nargs);
+}
+
+void LB::b_endRecording(int nargs) {
+	g_lingo->printSTUBWithArglist("b_endRecording", nargs);
+
+	g_lingo->dropStack(nargs);
+}
+
 } // End of namespace Director
diff --git a/engines/director/lingo/lingo-builtins.h b/engines/director/lingo/lingo-builtins.h
index f9ea571beea..be4943b247a 100644
--- a/engines/director/lingo/lingo-builtins.h
+++ b/engines/director/lingo/lingo-builtins.h
@@ -223,6 +223,9 @@ void b_trackStartTime(int nargs);
 void b_trackStopTime(int nargs);
 void b_trackType(int nargs);
 
+void b_beginRecording(int nargs);
+void b_endRecording(int nargs);
+
 void b_scummvmassert(int nargs);
 void b_scummvmassertequal(int nargs);
 void b_scummvmNoFatalError(int nargs);
diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index e2faf85fb85..75fc767fe86 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -912,4 +912,19 @@ void LM::m_moveToFront(int nargs) {
 		me->sendWindowEvent(kEventOpenWindow);
 }
 
+// Actor
+/*
+  collectChangeRects
+  getAProp
+  hitTest
+  ilk
+  mouseDown
+  mouseTrack
+  mouseUp
+  setAProp
+  stepFrame
+  updateRect
+*/
+
+
 } // End of namespace Director
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 29225eca2ff..535ac919395 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -134,10 +134,12 @@ TheEntity entities[] = {					//	hasId  ver.	isFunction
 	{ kThePathName,			"pathName",			false, 200, true },	// D2 f
 	{ kThePauseState,		"pauseState",		false, 200, true },	// D2 f
 	{ kThePerFrameHook,		"perFrameHook",		false, 200, false },// D2 p
+	{ kThePi,				"pi",				false, 400, true },	//			D4 f
+	{ kThePlatform,			"platform",			false, 500, false },//				D5 p
 	{ kThePreloadEventAbort,"preloadEventAbort",false, 400, false },//			D4 p
 	{ kThePreLoadRAM,		"preLoadRAM",		false, 400, false },//			D4 p
-	{ kThePlatform,			"platform",			false, 500, false },//				D5 p
-	{ kThePi,				"pi",				false, 400, true },	//			D4 f
+	{ kTheProductName,		"productName",		false, 500, false },//				D5 p, undocumented
+	{ kTheProductVersion,	"productVersion",	false, 500, false },//				D5 p, documented in D8
 	{ kTheQuickTimePresent,	"quickTimePresent",	false, 300, true },	//		D3.1 f
 	{ kTheRandomSeed,		"randomSeed",		false, 400, false },//			D4 p
 	{ kTheResult,			"result",			false, 200, true },	// D2 f
@@ -936,6 +938,13 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 	case kThePi:
 		d = M_PI;
 		break;
+	case kTheProductName:
+		d = Common::String("Director");
+		break;
+	case kTheProductVersion:
+		d = Common::String::format("%d.%d.%d",
+				g_director->getVersion() / 100, (g_director->getVersion() / 10) % 10, g_director->getVersion() % 10);
+		break;
 	case kTheQuickTimePresent:
 		// QuickTime is always present for ScummVM
 		d = 1;
diff --git a/engines/director/lingo/lingo-the.h b/engines/director/lingo/lingo-the.h
index 04747b4a143..e4941d59a33 100644
--- a/engines/director/lingo/lingo-the.h
+++ b/engines/director/lingo/lingo-the.h
@@ -122,6 +122,8 @@ enum TheEntityType {
 	kThePlatform,
 	kThePreloadEventAbort,
 	kThePreLoadRAM,
+	kTheProductName,
+	kTheProductVersion,
 	kTheQuickTimePresent,
 	kTheRandomSeed,
 	kTheResult,




More information about the Scummvm-git-logs mailing list