SPR for Mac
This page provides information about nosamu's SPR for Mac. For information about the standard version of SPR, see its GitHub repository.
Latest Build - 2019-12-13
Download Build: http://bluepload.unstable.life/spr-mac-2019-12-13bin.zip
Download Source: http://bluepload.unstable.life/spr-mac-2019-12-13src.zip
Instructions for Building
- Download and install Adobe Director 11.5.
- Enter a serial number. Ask in the Discord if you're not sure how to obtain one.
- Install the Adobe Director 11.5.9 update.
- Download Valentin's CommandLine Xtra.
/Applications/Adobe Director 11/Configuration/Xtras.
- In Adobe Director, open the file and click File -> Publish.
Supported LeechProtectionRemovalHelp Functions
setTheMachineType: Overrides the
setExternalParam: Generates a Lingo propList of externalParams and overrides the
externalParamValuefunctions to read from this propList.
forceTheExitLock: Sets the
exitLockLingo property after going to the first Director movie. This is usually ineffective because it does not "force" the exitLock, and games are still able to set the property.
forceTheSafePlayer: If it receives a value of 1, it sets the
safePlayerproperty to True. Because the safePlayer cannot be turned off once it is turned on, this accomplishes the same thing as "forcing" the property. However, unlike LeechProtectionRemovalHelp, this cannot force the safePlayer off.
disableGotoNetMovie: Overrides the
gotoNetMoviefunction with a function that does nothing.
disableGotoNetPage: Overrides the
gotoNetPagefunction with a function that does nothing.
Supported Lingo Functions
do: See SPR's GitHub repository.
go: See SPR's GitHub repository.
putScriptText: Adds a line of scriptText to the script that is inserted into each Director movie.
How SPR for Mac works
SPR for Mac is powered by a Lingo script with a function corresponding to every LeechProtectionRemovalHelp function. Because most SPR functions are impossible to accomplish with pure Lingo, most functions in SPR for Mac's Lingo script do nothing. They exist purely to prevent a script error when an attempt is made to call a LeechProtectionRemovalHelp function.
Any built-in Lingo function can be overridden simply by creating a custom Lingo function with the same name. SPR for Mac can create functions to replace, and thus disable,
A few Lingo properties that LeechProtectionRemovalHelp can set have corresponding Lingo getter functions. When the value of a property with a getter function is accessed, that getter function is always called. Since any built-in Lingo function can be overridden, any property with a getter function can be overridden with Lingo alone. Many of SPR for Mac's functions take advantage of this.
SPR for Mac inserts a script into the first movie that it goes to. This script includes dummy functions for each LeechProtectionRemovalHelp function to prevent script errors when LeechProtectionRemovalHelp functions are called. The
putScriptText function allows the user to add lines of scriptText to this default script. This allows the user to define or even override Lingo functions inside of a game.
The script that SPR for Mac inserts includes self-replication functionality. This works by overriding the default Lingo
go function. When
go is called, the script will navigate to the next movie using
_movie.go and copy itself into the new movie. However, if the Director movie itself calls
_movie.go instead of
go, this functionality does not work.