P3 Base Platform (Module) Definition

The module definition file describes some physical features of the upper playfield.

For example, we can learn a lot about the physical features of CCR by opening the file

%HOMEDRIVE%%HOMEPATH%\.multimorphic\P3\ModuleDrivers\CCR\2.3.1.0\CCR.json

The same concept equally applies for the P3 Base Platform except the SDK does not come

with an external file describing the base platform physical features.

The module definition file is used by the SDK to populate these properties of the P3Controller:

Switches, Coils, LEDs, Servos and Steppers.

There is no LEDStrings property because the LED string is expanded into individual LEDs.

We can assume the base platform has no TroughLaunchers, Bumpers, or BallPaths.

Within a Mode, the P3Controller is accessible as the p3 member inherited from a base class.

If you inspect the content of the p3 members, you realize the information about the

P3 Base Platform is there, merged with the module definition file.

This gives us enough information to reconstruct a list of the physical features of the P3 Base Platform.

For example:

Using System.linq;

System.Text.StringBuilder sb = new System.Text.StringBuilder();

sb.AppendLine("Switches:");

foreach (Switch sw in p3.Switches.Values.OrderBy(x => x.Name))

{

sb.AppendLine("  " + sw.Name);

       }

Multimorphic.P3App.Logging.Logger.LogError(sb.ToString());

The output will contain the features from the CCR playfield but these can be easily removed by hand.

Notice the list contains many LEDs that are not normally present on the P3 Base Platform.

It is believed those LEDs are part of LEDStrings that decorate the prototype built

for Dave&Busters that now sits in the Multimorphic showroom.

This prototype had extra illumination on the cabinet to attract attention.

To shorten the list, I used the syntax name0 .. nameNN to mean name0, name1, … nameNN.

The P3 Base Platform has these physical features:

Switches:

  buttonLeft0 .. buttonLeft7

  buttonRight0 .. buttonRight7

  coinDoor

  down

  drain

  drain0

  drainStack

  enter

  eosL

  eosR

  exit

  launch

  moatExit

  moatExit2

  moatInA

  moatInB

  money0 .. money2

  scoop0 .. scoop5

  servoWS

  slingL

  slingR

  start

  sw20 .. sw23

  ticketNotch

  tilt

  trough0 .. trough14  (even only)

  up

  vukPresent0

  vukTube1 .. vukTube7

Coils:

  auxLeft0 .. auxLeft3

  auxRight0 .. auxRight3

  dbaEnable

  flipperLwLHold

  flipperLwLMain

  flipperLwRHold

  flipperLwRMain

  launch

  powerRelay

  scoop0Hold .. scoop5Hold

  scoop0Up .. scoop5Up

  slingL

  slingR

  start

  ticketMotor

  vuk0 .. vuk7

  vukDrain

  wall0Hold .. wall5Hold

  wall0Up .. wall5Up

LEDs:

  backbox

  backboxBack0 .. backboxBack82

  backboxBottom0 .. backboxBottom17

  backboxFront0 .. backboxFront89

  backboxP3

  backboxTop0 .. backboxTop27

  cabinetBack0 .. cabinetBack82

  cabinetBottom0 .. cabinetBottom171

  cabinetFront0 .. cabinetFront20

  cabinetTop0 .. cabinetTop155

  flasherSideModuleLeft0 .. flasherSideModuleLeft3

  flasherSideModuleRight0 .. flasherSideModuleRight3

  playfield

  scoop0 .. scoop5

  speakerLeft0 .. speakerLeft60

  speakerRight0 .. speakerRight60

  wall0 .. wall5

Servos:

  scoop0 .. scoop5

  wall0 .. wall5

Steppers:

  <none>