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>