P3 Base Platform (Module) Definition

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>