Plunger lanes with no ball switch

Modern pinball machines have a switch in the plunger lane that tells the software that a ball is sitting in the plunger lane waiting to be plunged.

This document describes how you configure MPF to work with plunger lanes when the plunger lane has no switch which is active when a ball is sitting at the plunger. (This is common is older single-ball machines, including many EM and early solid state machines.)

Here’s an example from a Gottlieb Big Shot

../../_images/plunger_no_switch.jpg
#config_version=5

playfields:
    playfield:
        default_source_device: trough
        tags: default

coils:
    trough_eject:
        number:

switches:
    s_trough_1:
        number:
    s_trough_2:
        number:
    s_trough_3:
        number:
    s_trough_4:
        number:
    s_trough_jam:
        number:
    s_playfield:
        number:
        tags: playfield_active

ball_devices:
    trough:
        eject_coil: trough_eject
        ball_switches: s_trough_1, s_trough_2, s_trough_3, s_trough_4
        debug: true
        tags: trough, drain, home

1. Configure your trough / ball drain

MPF’s plunger lanes work hand-in-hand with the trough / ball drain devices. So if you haven’t configured that yet, go back and do that now, then come back here and configure your plunger.

2. Understand that your plunger is not a ball device

Most pinball machines have a switch in the plunger lane which is used to tell MPF that there’s a ball in the plunger waiting to be plunged.

However, this How To guide is for plunger lanes with no ball switch. (If your plunger lane has a ball switch, then follow the Mechanical (spring) plungers guide instead.)

In machines where the plunger lane does not have a ball switch, that means that MPF has no idea whether a ball is in the plunger lane. That’s totally fine, and MPF can support that no problem. However, in this case, you do not configure your plunger lane as a ball device!

Instead the plunger lane area is considered part playfield, so a ball in the plunger lane that’s not sitting on a switch is just like any other area of the playfield where the ball might be rolling around while it’s not on a switch.

3. Add the trough als default_source_device

Normally you would use your plunger device as source device for your playfield. But since your plunger lane with no switch is not a ball device, that means we have to go back to the trough ball device and use it as source device. Therefore, you need to add your trough ball device as default_source_device to your playfield to tell MPF that this ball device is used to add a new ball into play.

To do that, add your trough device as default_source_device in the default playfield, like this:

playfields:
    playfield:
        default_source_device: bd_trough
        tags: default

Then when MPF needs to add a live ball into play, it will eject a ball from the trough and you’re all set!

4. What happens if MPF starts with a ball in the plunger?

One of the downsides to not having a switch in the plunger lane is that MPF has no way of knowing if there’s a ball in there. Throughout the ordinary course of operation, this is fine, because MPF “knows” that the trough ejected a ball, and it “knows” when the ball is on the playfield, so if the trough has ejected a ball and that ball hasn’t yet entered the playfield, MPF can “assume” that ball is in the plunger lane.

However, what happens if MPF boots up from scratch and there’s a ball in the plunger lane? In that case, the ball is not activating any switches, so MPF really has no idea if the ball is in the plunger line (which is fine) or if the ball is stuck somewhere on the playfield (which is not fine).

Todo

This does not work yet. Let us know in the forum if you need it.

5. Configuring the ball save timer

Be sure to set your ball save start event based on a tag from your switches tagged with playfield_active rather than ball_starting or your trough eject confirmation, since you don’t want the timer to start running when the ball is sitting in the plunger lane.

See the Ball Saves documentation for details.