SPR for Mac

From Flashpoint Database
Jump to: navigation, search

This page provides information about nosamu's Shockwave Projector Redirector (SPR) for Mac. Because SPR for Mac does not support most of SPR's features, it is preferable to run SPR through Wine instead. SPR for Mac is unlikely to receive any updates in the future.

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

  1. Download and install Adobe Director 11.5.
  2. Enter a serial number. Ask in the Discord if you're not sure how to obtain one.
  3. Install the Adobe Director 11.5.9 update.
  4. Download Valentin's CommandLine Xtra.
  5. Copy CommandLine.xtra into /Applications/Adobe Director 11/Configuration/Xtras.
  6. In Adobe Director, open the file and click File -> Publish.

Supported LeechProtectionRemovalHelp Functions

  • setTheMachineType: Overrides the machineType() function.
  • setExternalParam: Generates a Lingo propList of externalParams and overrides the externalParamCount, externalParamName, and externalParamValue functions to read from this propList.
  • forceTheExitLock: Sets the exitLock Lingo 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 safePlayer property 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 gotoNetMovie function with a function that does nothing.
  • disableGotoNetPage: Overrides the gotoNetPage function 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, gotoNetMovie and gotoNetPage.

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.