VirtuaTilt Wiki › Zaccaria Pinball: Tuning the Feedback

Zaccaria Pinball: Tuning the Feedback

Zaccaria Pinball has no DOF / DOFLinx support, so the Zaccaria profiles (VTConfig-USB-ZaccariaPinball and VTConfig-BT-STEAM-Zaccaria, v1.2 and later) build all of their table feedback from the game's own controller rumble. Two outputs do the work:

Every number below can be changed. In both lines R stands for max(xboxrumble(1), xboxrumble(2)): the stronger of the game's two rumble motors, on a 0–255 scale. VirtuaTilt has one shaker motor; the two rumble motors are the game's controller rumble channels.

How to change a value

  1. Open the profile in GUIConfigTool's Configuration editor, or in a text editor (Notepad++ or similar). Work on a copy saved under a new name, so the shipped original stays intact.
  2. Find the outputs section, then the output with name: "Bumpers/Slingshots" or name: "Shaker Motor". The name is the last line of each output; its source line is at the top.
  3. Change one number, exactly as in the examples below. Leave everything else in the line alone — the commas and brackets all matter.
  4. In GUIConfigTool use File → Import from File (if you edited a file), then Program Pico. The cabinet restarts with the new value.
  5. Play for a few minutes before changing the next value. Change one thing at a time.

The two lines as shipped

The numbers you can tune are in bold.

Bumpers/Slingshots, both profiles:
source: "if(offset(max(xboxrumble(1), xboxrumble(2)), -15), 240, 0)",
timeLimit: 50,   powerLimit: 0,   coolingTime: 80,

Shaker Motor, USB profile:
source: "kickstart(if(kickstart(if(max(xboxrumble(1), xboxrumble(2)) > 30, 1, 0), 200, 255, 0) == 1, clip(max(xboxrumble(1), xboxrumble(2)), 70, 255), 0), 50)",

Shaker Motor, Bluetooth profile (the same, but capped at 153 = 60%, like the other Bluetooth profiles):
source: "kickstart(if(kickstart(if(max(xboxrumble(1), xboxrumble(2)) > 30, 1, 0), 200, 255, 0) == 1, clip(max(xboxrumble(1, 153), xboxrumble(2, 153)), 70, 153), 0), 50)",

1. Kick threshold

The -15 in the Bumpers/Slingshots source. A burst counts as a hit once R rises above this number (as shipped: above 15 of 255).

Change toEffect
-5Fires on almost any rumble. The most responsive setting, but it can also kick on faint background rumble.
-30Only clear hits. Also try this if two quick hits give a single kick: with a higher threshold the rumble is more likely to drop below it between hits, which is what re-arms the kick.
-60Only strong hits. Noticeably fewer kicks.

2. Kick strength

The 240 in the Bumpers/Slingshots source: the power of the kick, 0–255. 240 is the same strength the flipper solenoids use.

Change toEffect
255Full power, the hardest kick.
200Softer and a little quieter.
160Gentle. Check that the solenoid still moves on every hit; if it starts to miss, go back up.

3. Kick length

timeLimit: 50 on the Bumpers/Slingshots output: how many milliseconds each kick lasts. The power is cut after this time, even if the rumble continues.

Change toEffect
timeLimit: 30,A shorter, crisper tap.
timeLimit: 70,A heavier thump.
timeLimit: 100,The longest recommended value. Do not go higher.

NOTE: Never remove timeLimit, and keep powerLimit: 0. Together they are what switch the solenoid off after each kick.

4. Minimum gap between kicks

coolingTime: 80 on the Bumpers/Slingshots output. After each kick the solenoid ignores new hits for this many milliseconds. Hits that arrive in that gap are dropped, not delayed, so a long gap loses fast sequences such as a ball bouncing between the slingshots.

Change toEffect
coolingTime: 60,The fastest recommended setting (about 9 kicks per second at most). Do not go lower.
coolingTime: 150,Calmer. Very fast hits start to be skipped.
coolingTime: 250,About 3 kicks per second at most. Clearly misses rapid sequences.

5. Which rumble motor drives the kick

The max(xboxrumble(1), xboxrumble(2)) part of the Bumpers/Slingshots source. Many games use one motor for hits and the other for bigger effects. If the kicks feel random, try using one motor only:

Change toEffect
if(offset(xboxrumble(2), -15), 240, 0)Kick only from motor 2 (the right, high-frequency motor).
if(offset(xboxrumble(1), -15), 240, 0)Kick only from motor 1 (the left, low-frequency motor).

6. When the shaker joins in

The 200 in the Shaker Motor source. The shaker runs only once a rumble has lasted this many milliseconds, and then until it ends. Shorter rumbles get the solenoid kick only. The trade-off: for long events the shaker always starts this much late.

Change toEffect
150More shaker: medium-length events start to shake too.
500Less shaker: only clearly long events.
1000Only very long events (at least 1 second). The maximum is 5000.

7. How strong a rumble must be to shake

The > 30 in the Shaker Motor source. This threshold is independent of the kick threshold in step 1.

Change toEffect
> 120Only strong and long rumbles shake.
> 150 with the window (step 6) set to 0Shake on every strong rumble, starting instantly with no delay. Usually the best way to keep the shaker for the big moments only.
> 200 with the window set to 0Only the very strongest rumbles shake.

8. Shaker strength

USB profileBluetooth profile (all three numbers)Effect
clip(…, 70, 255)255Full power (the USB default).
clip(…, 70, 200)200About 80%: a gentler cabinet.
clip(…, 70, 153)15360% (the Bluetooth default).
clip(…, 90, 255)clip(…, 90, 153)Raises the floor, so weak rumbles still shake noticeably.

NOTE: Keep the lowest power at 70 or above. Below about 64 the VirtuaTilt shaker motor stalls and buzzes: it draws current and heats up without turning.

9. Shaker fully off, or back to the old behaviour

Shaker Motor sourceEffect
source: "0",Shaker completely off. The solenoid kick keeps working.
source: "kickstart(if(xboxrumble(1), clip(xboxrumble(1), 70, 255), 0), 50)",The v1.1 behaviour (USB): the shaker follows every rumble from motor 1, together with the kick.
source: "kickstart(if(xboxrumble(1, 153), clip(xboxrumble(1, 153), 70, 153), 0), 50)",The v1.1 behaviour (Bluetooth).

Good to know

See also Adjusting Shaker Motor Strength and Feedback Devices by Profile.

The interactive VirtuaTilt wiki adds a 3D model, a theme gallery and a built-in AI assistant — open the wiki.

Last updated: 2026-10-28

VirtuaTilt is designed and manufactured by 3DPTronics — see the Wireless VirtuaTilt controller. Diagnose your own cabinet with the free VirtuaTilt extension for Claude.