Skip to content

Screens and layout

You tell vPinOps where your playfield, backglass and DMD live. It writes the settings Visual Pinball reads — per table, immediately before it launches — so every table in your library comes up the same way.

All three work today. Pick the one that matches your room, not the one that sounds like the default.

Cabinet

Playfield, backglass and DMD on three physical displays, in a cab. The boxes you drag map onto the real machine.

Multi-screen desktop

Two or three monitors on a desk. Same idea as a cab, without the woodwork — the backglass takes a second monitor and the DMD a strip of it, or its own.

Single screen

One monitor. The playfield fills it, and the backglass and DMD are either off or composited. A first-class setup, not a fallback.

There are two ways, and most cabinets only ever need the first.

Open Screens in OpsLink. Each surface — playfield, backglass, DMD, topper — has its own card, and each card asks which monitor it lives on. Choose one and that surface fills that screen.

That is the whole job for the common case: one surface per monitor, each filling it. You can do it from your phone, standing at the cabinet or sitting somewhere else, which matters because a cab has no keyboard and its own screen may be sideways or showing a broken layout when you most need to fix it.

Some layouts need an exact rectangle rather than a whole screen: a DMD strip along the top of the backglass monitor, or a scaled-down cabinet on one desktop display. For those, open the screen designer on the machine itself and drag real windows to where you want them.

It has to be done there, and that is not a limitation we chose — you cannot drag a box onto a display you are not looking at. Everything else about screens can be done remotely.

A global layout covers the whole library, and most tables need nothing more. But some tables want a different arrangement, and Visual Pinball supports per-table settings — so vPinOps writes the keys for the table you are launching, at the moment you launch it, rather than making you keep one global compromise.

Visual Pinball’s own settings — which are yours, and which are ours

Section titled “Visual Pinball’s own settings — which are yours, and which are ours”

A few things live in Visual Pinball’s VPinballX.ini rather than in vPinOps, and the split matters: hand-set one of ours and you will watch it change back.

Turn the plugins on — this is the one that costs you a backglass

Section titled “Turn the plugins on — this is the one that costs you a backglass”

Visual Pinball ships its plugins switched off. Nothing warns you. The table plays, and the backglass and DMD simply never appear — which reads like a vPinOps fault and is not one.

you wantturn on
A backglassB2SLegacy
A DMDScoreView, plus FlexDMD or AlphaDMD depending on the table
A ROM to load at allPinMAME

Turn them on in Visual Pinball’s own Live UI, or set Enable = 1 under each [Plugin.*] section of VPinballX.ini.

Put your display’s real rate in [Player] RefreshRate60, or whatever your screen runs at.

Blank is not “use the default”. Visual Pinball asks the driver for rate 0, fails to find a display mode, fails to build its sync device, and raises an error dialog you cannot see, because the full-screen shields are drawn over it. What you get is a black screen or an app that looks frozen, and nothing anywhere says why.

Leave these alone in the ini. vPinOps writes them immediately before a table launches, so an edit you make by hand is overwritten with nothing said.

  • Where each surface goes, how big it is, and which display it is on — the boxes you drag
  • PlayfieldFullScreen, BackglassFullScreen, ScoreViewFullScreen and TopperFullScreen — always 0, so the box you drew is the one Visual Pinball honours
  • BGSet, the cabinet-versus-desktop view mode — that follows the mode you pick in Settings
  • Table and music volume, the backglass and DMD overlay settings under [Plugin.B2SLegacy], and whether the grill is hidden — these are written only when you have set them; leave them alone in vPinOps and whatever you chose in Visual Pinball’s own F12 stays put

The run log says whether vPinOps configured that launch at all:

layout -> Guns N' Roses: Written (1 global, 0 per-table, dmd=Unknown)

Written means it configured this launch; UpToDate means what it wanted was already correct. ⚠ Neither the positions nor your DMD choice are loggeddmd= is which kind of DMD window this table has been seen to open before, not a setting. So this tells you whether we wrote at all, and not where anything was sent. Read last-run.log first; the path is on your platform’s install page.

More, including what to check in what order: the backglass or DMD is in the wrong place.