The module definition file describes some of the 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.1\CCR.json
The same concept also applies to the P3 Base Platform, except that the SDK does not come
with an external file describing the physical features of the base platform.
The module definition file is used by the SDK to populate the following P3Controller properties: Switches, Coils, LEDs, Servos, Steppers, and BallPaths.
There is no LEDStrings property because LEDStrings are expanded into individual LEDs.
TroughLaunchers and Bumpers are stored elsewhere. We can ignore them for now because the P3 Base Platform does not have any TroughLaunchers or Bumpers.
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’ll notice the information about the
P3 Base Platform is there, merged with the module definition file.
This gives us enough information to reconstruct the list of 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 features from the CCR playfield, but these can easily be removed manually.
The list contains many backbox and cabinet LEDs that are not present on the production version of the P3 machine. These LEDs belong to LEDStrings that were used to decorate the two prototypes built for Dave & Buster’s. You can see these LEDs in this video of the unreleased “Heads Up” game.
The backbox LED illuminates the translite from behind on machines without a backbox LCD.
The backboxP3 LED illuminates the P3 logo between the speakers on the speaker panel.
To shorten the list, I used the syntax name0 .. nameN to mean name0, name1, …, nameN.
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>
BallPaths:
<none>