[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