VPinball Ini - dekay/vpinball-wiki GitHub Wiki
Warning
This page is very much a work in progress! Much more is not documented than documented, but ya gotta start somewhere.
VPinballX.ini
is the Visual Pinball X settings file introduced in Version 10.8. Previous to 10.8, the settings were stored in the Windows registry. If you are upgrading from a pre-10.8 version on Windows, this file will be automatically created and initialized from existing settings in the registry. On Windows, the file is in the standard Windows location for application data: %AppData%/VPinballX/
. On Linux, it is located in ~/.vpinball
. The location can be changed in the INI/Editor/UI preferences to be located in the same folder as the executable if you wish.
The old method of storing the settings in the registry created a number of issues. The new approach
- allows per table settings,
- allows easier editing (manually or by a third party application),
- allows the use different settings by specifying a custom ini file on the command line for the app or table settings (see CommandLineParameters.txt),
- provides settings that are the same and can be shared between Windows version of VPX and the standalone version (Linux, Mac, Android, iOS, Raspberry Pi,...),
- allows one to see all the available settings at once
- allows easier collaboration by being able to share the setting file with bug reports.
If you need to reset all settings to their default, just delete the file and it will be recreated the next time it runs. When a property is not defined (nothing after the =
sign, VPX will use a default value for it. Related settings are grouped together in sections with names surrounded by square brackets e.g. [Standalone]
.
If a file with the exact same name as the one of the table file but with an '.ini' extension is found along the table file, it will be used as a settings override for that table. This is extremely useful for adjusting things like Volume on a per-table basis. Note that when used in this way, only those lines that you want to override need to be contained within the table specific ini file. For example, this single line in a file SpongeBob's Bikini Bottom Pinball VPW 2.1.ini
placed next to the
SpongeBob's Bikini Bottom Pinball VPW 2.1.vpx
table would set its Sound Effects volume to 75%.
SoundVolume = 75
One of the primary reasons for digging into the ini file is to set the positions and dimensions of the windows generated by VPinball onto one or more physical displays. Windows users have tools like the B2S Resolution Identifier but users on other platforms will have to take a more manual approach. VPinball can generate many different types of windows but the idea behind positioning each one is the same. This section will detail how all of this works and will be referred to multiple times in the detailed description of the ini parameters.
Let's use the scenario where three physical screens are connected with this setup in mind.
- a 4K display providing 3840x2160 resolution for the main playfield window
- a 4:3 monitor providing 2560x1600 resolution for the backglass window
- a 1080p panel providing 1920x1080 resolution for the DMD window
The plan is to put this setup in a pincab, so we'll want each VPinball window displayed fullscreen on each of the physical screens.
First thing to do is get all of the displays connected to the PC. Next, we'll get VPinball to tell us how it sees these physical displays. Determine this by running VPinball with the -listres
parameter. Doing so will generate a list of all the supported resolutions, screen depths and render rates supported by your display. That isn't the useful part. The useful part will be near the end where VPinball will have listed the supported fullscreen destop resolutions
. On Linux for example...
[dk@ryzen build]$ ./VPinballX_BGFX -listres
2025-03-03 08:30:09.196 INFO [5326] [VPApp::InitInstance@851] Starting VPX - v10.8.1 Beta (Rev. 9999 (unknown), linux BGFX 64bits)
2025-03-03 08:30:09.197 INFO [5326] [VPApp::InitInstance@852] Setting file is: /home/dk/.vpinball/VPinballX.ini
2025-03-03 08:30:09.197 INFO [5326] [VPApp::InitInstance@855] Settings file was loaded from /home/dk/.vpinball/VPinballX.ini
2025-03-03 08:30:09.197 INFO [5326] [VPApp::InitInstance@856] m_logicalNumberOfProcessors=24
2025-03-03 08:30:09.197 INFO [5326] [VPApp::InitInstance@857] m_szMyPath=/home/dk/build/vpinball/build/
2025-03-03 08:30:09.197 INFO [5326] [VPApp::InitInstance@858] m_szMyPrefPath=/home/dk/.vpinball/
2025-03-03 08:30:09.197 INFO [5326] [VPApp::InitInstance@864] Available fullscreen resolutions:
<snip - don't care about these>
2025-03-03 08:30:09.197 INFO [216870] [VPApp::InitInstance@953] Available window fullscreen desktop resolutions:
2025-03-03 08:30:09.197 INFO [216870] [VPApp::InitInstance@959] display 1: 3840x2160 (refreshRate=120)
2025-03-03 08:30:09.197 INFO [216870] [VPApp::InitInstance@959] display 2: 2560x1600+3840,0 (refreshRate=60)
2025-03-03 08:30:09.197 INFO [216870] [VPApp::InitInstance@959] display 3: 1920x1080+6400,0 (refreshRate=60)
<snip>
Note
As of 2025-03-07, the "master" branch of VPinball has a -displayid
parameter courtesy of @superhac that you should use instead of the -listres
parameter above. The -displayid
parameter should work more reliably than -listres
, and it also displays its results visually on each connected screen. See it in action in this pull request.
VPinball thinks of your physical screens as all merged into one big virtual screen. You place windows by their coordinates and dimensions within this screen. The 4K display will be at the top left of our virtual screen, the 4:3 backglass monitor will be in the middle of our virtual screen, and the 1080p panel will be farthest to the right. That could translate into settings in the ini file that look like this:
TODO: A picture would be very useful here. TODO: Adjust the DMD size.
Important
macOS users need to specify Fullscreen
parameters as 0
to get full screen windows on multiple monitors (e.g. ) Reference. Use ...FullScreen = 1
on other OS's.
Caution
Don't make up the names of ini entries! VPinball doesn't have any kind of fuzzy find for these names. They are also case sensitive. You want to search for a parameter and enter its value.
Note
Parameter names have been known to change during development. For example, playfield associated parameters were updated in version 10.8.1 to prepend Playfield
to the name, so Fullscreen
became PlayfieldFullScreen
, etc. The default VPinballX.ini
for the Master version can be found here on GitHub
PlayfieldDisplay = 1
PlayfieldFullScreen = 1
PlayfieldWndX = 0
PlayfieldWndX = 0
PlayfieldWidth = 3840
PlayfieldHeight = 2160
...
TODO THESE AREN'T DONE YET
...
Display = 2
FullScreen = 1
WindowPosX = 3840
WindowPosY = 0
Width = 2560
Height = 1600
...
TODO THESE AREN'T DONE YET
...
Display = 3
FullScreen = 1
WindowPosX = 6400
WindowPosY = 0
Width = 1920
Height = 1080
...
Important
The handling of HiDPI screens differs by operating system!
With HiDPI screens on macOS, you have the native panel resolution and the "logical" resolution. The logical resolution is the native resolution divided by the scale. For the example of a 2x HiDPI display, the backglass width and height of 640x480 phyical pixels would be configured on macOS with logical pixels like this:
B2SBackglassWidth = 320
B2SBackglassHeight = 240
Think Different indeed. Linux and Windows make actual sense and use actual physical pixel values. For the example above, you would use this:
B2SBackglassWidth = 640
B2SBackglassHeight = 480
Time to get into the nitty gritty of each setting.
Tip
Every setting documented below has an associated html anchor attached to it. The anchor name is the setting name in all lower case. So a link of https://github.com/dekay/vpinball-wiki/wiki/VPinball-Ini#syncmode
will take you directly to a description of the SyncMode
parameter. This can be handy when passing on a direct link to help somebody out.
The settings in this section are specific to the Standalone version of VPinball that runs on Linux, Mac, and mobile phones.
LaunchTable: Fill in this value with the path to the table you would like to run by default. It will otherwise default to VPinball's example table assets/exampleTable.vpx
if left blank. This setting will automatically revert to the default value when running under iOS, tvOS, and Android if another value is filled in here and the table fails to launch for some reason.
TODO Show an example
VPRegPath: This can be used to override the VPinball table settings directory location. If set to ./
, the current table path will be used.
PinMAMEPath: Defines the path to the PinMAME folder. It is only used if no pinmame
folder exists in the current table directory. The default is ~/.pinmame)
.
Caution
@jsm174 is considering getting rid of pinmame and flexdmd ini's completely now that 10.8.1 has the ability to have its own dmd window rendering. Some of the setting below might disappear in the future.
PinMAMEWindow: 0 turns DMD window off, 1 turns DMD window on (Default is 1)
PinMAMEWindowX, PinMAMEWindowY, PinMAMEWindowWidth, PinMAMEWindowHeight: The x, y, width, height screen coordinates of the window used by PinMAME.
AltColor: A value of 1
(the default) enables Serum alternate color DMD support, while 0
disables this support. Altcolor files are distinguished by their .cRZ
extension. Standalone will look for this <rom.cRZ>
file in the table's pinmame/altcolor/<romname>
directory. If that directory does not exist, it will also look for it in $HOME/.pinmame/altcolor/<romname>
.
FlexDMDWindowX, FlexDMDWindowY, FlexDMDWindowWidth, FlexDMDWindowHeight:
B2SHideGrill: 0 to show grill (if it exists), 1 to hide grill
B2SHideB2SDMD: 0 to show extra DMD frame (if it exists), 1 to hide extra DMD frame
B2SHideB2SBackglass: 0 to show backglass, 1 to hide backglass
B2SWindows: 0 to hide all the B2S windows (grill, DMD frame, backglass), 1 to show them according to the other settings
B2SBackglassX, B2SBackglassY, B2SBackglassWidth, B2SBackglassHeight:
B2SDMDX,B2SDMDY, B2SDMDWidth, B2SDMDHeight:
B2SDMDFlipY: A value of 1
tells VPinball Standalone to flip the B2S DMD image upside down: that is, the bottom of the image is displayed at the top of the window and vice versa. The default value of 0
displays it right-side up.
B2SPlugins: A value of 1
tells VPinball Standalone to load the plugin that enables B2S Server support. The default value of 0
disables this support. You'll want to enable this if you are running VPinball on an actual pincab so it will make use of any <tablename>.directb2s
files that simulate lamps behind the backglass.
PUPCapture: From the PinUP Pinball System Wiki, PUPCapture "...when dealing with ROM based games... will scan the DMD in real time and find matching 'boxes' that can trigger video plays with PuPlayer! You simply create a set of 'trigger' screens that then translate to events that PinUP Player will react to." If you are playing ROM-based tables with PUP-Packs, you'll want to enable this feature by setting the value to 1
. Otherwise leave it blank or set it to 0
, the default.
PUPPlugin: A value of 1
(the default) tells VPinball Standalone to load the plugin that enables PUP Pack support, while a value of 0
disables it. You'll want this enabled along with PUPWindows if you are playing any tables that use PUP.
PUPWindows: A value of 1
(the default) enables PUP window support, while a value of 0
disables it. You'll want this enabled along with PUPPlugin if you are playing any tables that use PUP.
PUPTopperScreen: This Standalone-specific .ini
values is simply a placeholder at time of writing and is not referenced within the code. Putting a value in for this setting will have no effect.
PUPTopperWindow, PUPTopperWindowX, PUPTopperWindowY, PUPTopperWindowWidth, PUPTopperWindowHeight, PUPTopperWindowRotation: These Standalone-specific .ini
values are simply placeholders at time of writing and are not referenced within the code. Putting values in for these settings will have no effect.
PUPBackglassScreen: This Standalone-specific .ini
values is simply a placeholder at time of writing and is not referenced within the code. Putting a value in for this setting will have no effect.
PUPBackglassWindow, PUPBackglassWindowX, PUPBackglassWindowY, PUPBackglassWindowWidth, PUPBackglassWindowHeight, PUPBackglassWindowRotation: These Standalone-specific .ini
values are simply placeholders at time of writing and are not referenced within the code. Putting values in for these settings will have no effect.
PUPDMDScreen: This Standalone-specific .ini
values is simply a placeholder at time of writing and is not referenced within the code. Putting a value in for this setting will have no effect.
PUPDMDWindow, PUPDMDWindowX, PUPDMDWindowY, PUPDMDWindowWidth, PUPDMDWindowHeight:, PUPDMDWindowRotation: These Standalone-specific .ini
values are simply placeholders at time of writing and are not referenced within the code. Putting values in for these settings will have no effect.
PUPPlayfieldScreen: This Standalone-specific .ini
values is simply a placeholder at time of writing and is not referenced within the code. Putting a value in for this setting will have no effect.
PUPPlayfieldWindow, PUPPlayfieldWindowX, PUPPlayfieldWindowY, PUPPlayfieldWindowWidth, PUPPlayfieldWindowHeight, PUPPlayfieldWindowRotation: These Standalone-specific .ini
values are simply placeholders at time of writing and are not referenced within the code. Putting values in for these settings will have no effect.
PUPFullDMDScreen: This Standalone-specific .ini
values is simply a placeholder at time of writing and is not referenced within the code. Putting a value in for this setting will have no effect.
PUPFullDMDWindow, PUPFullDMDWindowX, PUPFullDMDWindowY, PUPFullDMDWindowWidth, PUPFullDMDWindowHeight, PUPFullDMDWindowRotation: These Standalone-specific .ini
values are simply placeholders at time of writing and are not referenced within the code. Putting values in for these settings will have no effect.
ZeDMDDebug: 0 to disable debug messages for an attached ZeDMD (the default), 1 to enable.
Default value is zedmd-wifi.local
.
DMDServerAddr: Default value is localhost
.
DMDServerPort: Default value is 6789
.
RenderingModeOverride:
Note
The next seven values are used to save the state of the user interface between runs on the iOS and Android versions of VPinball. You won't need to mess with these values in the .ini
file directly.
TableListMode: This setting stores how the list of tables are displayed to the user. A value of 0
represents a two column grid, 1
represents a three column grid, and 2
represents a list view.
TableListSort: This setting stores how the list of tables are sorted when displayed to the user. A value of 1
sorts the tables in alphabetical order while 0
sorts them in reverse alphabetical.
Haptics:
LiveUIOverride:
TouchOverlay:
TouchInstructions:
ResetLogOnPlay:
Note
Following the release of VPX 10.8, VPinball moved to a plugin-based system for components that were either separate from the main Windows version or had to be lumped in together with the Standalone version. The plugin system improves VPinball's cross-platform support and development. This section is likely to grow as more components are ported to the plugin system.
Enable:
PinMAMEPath:
Enable:
Enable:
CRZFolder: VPinball's first place to look for .cRZ
Serum DMD colorizations is within the pinmame\altcolor\<romname>
directory. If that path is not found, it will look in the directory specified here as a fallback. This setting is useful if you want to save all of your Serum colorizations to their own directory and keep them all in one place. This setting is blank by default.
Enable:
LumTintR:
LumTintG:
LumTintB:
DMDFullScreen:
; Output mode
; 0 - Disabled
; 1 - Embedded in another output
; 2 - Native system window (maybe a window, exclusive fullscreen, VR headset,...)
DMDOutput:
DMDWndX:
DMDWndY:
DMDWidth:
DMDHeight:
Sound3D: This is an integer value that selects how VPinball generates its audio. Six options are available.
- 0 - Standard 2 channel (default)
- 1 - Surround (All effects to rear channels)
- 2 - Surround (Front is rear of cab)
- 3 - Surround (Front is front of cab)
- 4 - 7.1 Surround (Front is rear, back is side, backbox is front)
- 5 - 7.1 Surround Sound Feedback (SSF) This exaggerates the positional feel of the playfield sound effects when played in a cabinet with exciter pairs positioned at each end of the cabinet
SoundDevice: This is the text name of the main sound device that will be used by VPinball for Table mechanical sounds like flippers and bumpers (Music and backglass sounds are handled according to the SoundDeviceBG
parameter discussed next). Determine this name by running VPinball with the -listsnd
parameter. On Linux for example...
[dk@ryzen build]$ ./VPinballX_BGFX -listsnd
2025-02-11 08:45:29.270 INFO [54718] [VPApp::InitInstance@891] Available sound devices:
2025-02-11 08:45:29.273 INFO [54718] [VPApp::InitInstance@896] id 15: name=USB Audio S/PDIF Output, channels=2
2025-02-11 08:45:29.273 INFO [54718] [VPApp::InitInstance@896] id 19: name=USB Audio Front Headphones, channels=2
2025-02-11 08:45:29.273 INFO [54718] [VPApp::InitInstance@896] id 23: name=USB Audio Speakers, channels=2
2025-02-11 08:45:29.273 INFO [54718] [VPApp::InitInstance@896] id 35: name=Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X] Digital Stereo (HDMI 3), channels=2
2025-02-11 08:45:29.273 INFO [54718] [VPApp::InitInstance@896] id 39: name=CM106 Like Sound Device Analog Surround 7.1, channels=8
The popular StarTech 7.1 USB External Sound card is the last item in the list. To get VPinball to use it as its sound device...
SoundDevice = CM106 Like Sound Device Analog Surround 7.1
Note the following:
- the name of the sound device is case sensitive. Paste it in exactly as shown by the
-listsnd
command - the comma and any other text following the name of the device (e.g.
, channels=8
) should not be pasted into the ini file. Doing so will render VPinball unable to find your sound card - the ability to switch VPinball between multiple sound devices that are exactly the same (e.g. two StarTech's) is not supported. This is a limitation in the SDL Mixer code used by VPinball.
- in the event that VPinball cannot find your sound device, you'll see a message like
No sound device by that name found in VPinball.ini. Using Default
in yourvpinball.log
file. - if the name is left blank, VPinball will use whatever the default audio device is on your system.
Note
Some onboard audio (e.g. HDA Intel PCH - Realtek ALC897) may not be recognized as 7.1 capable on some Linux distributions, including Batocera. If you have this problem, try running alsamixer
. You might find that by default only 2 channels are enabled. Manually setting the audio to six channels with alsamixer
may solve the problem.
SoundDeviceBG: This is the text name of the main sound device that will be used by VPinball for Music and Backglass sounds, including those from PUP packs and PinMAME (Table sounds are handled according to the SoundDevice
parameter discussed previously). The ini file documents this setting with "Optional secondary sound device for backglass. Use "VPinballX -listsnd" to get the id's."
However at time of writing, only one audio device is supported because of mixer limitations. If you set SoundDevice
to a non-default value and leave this setting blank (to use the default), that effectively tells VPinball to use two different devices and that isn't supported. So either both SoundDevice
and SoundDeviceBG
should both be left blank to use your system's default, or they should both be set to exactly the same value. To go with the example for SoundDevice
above:
SoundDeviceBG = CM106 Like Sound Device Analog Surround 7.1
PlayMusic: Setting this to 0 disables Music from being played, 1 enables Music (the default). Music sounds are those routed through SoundDeviceBG
and includes not only music but backglass sounds plus PinMAME and PUP audio.
MusicVolume: an integer number in the range of 0 - 100 for those sounds defined as Music above. The default value is 100 (maximum volume).
This is a good use case for per-table ini settings. The Music volume across different tables is not standardized so some tables will be too quiet or too loud in comparison to the rest. Setting the global value to something less than 100 in VPinballX.ini
gives some range to tweak the volume of individual tables higher or lower as you prefer.
PlaySound: Setting this to 0 disables Table sounds from being played, 1 enables Table sounds (the default). Table sounds are those sounds routed through SoundDevice
like those from flipper and bumpers.
SoundVolume: an integer number in the range of 0 - 100 for the Table mechanical sounds as defined above. The default value is 100 (full volume)
; Nudge
PBWEnabled: This enables analog nudging from hardware acceleration sensors, both from purpose-built controllers like the KL25Z-based Pinscape or from video game console controllers like the Playstation 4 Dualshock. Setting this to 0 disables the acceleration sensor, 1 enables it (the default).
Warning
VPinball will also map a joystick to this function for some controllers like the XBox 360's that does not have a built-in accelerometer. This can break the table physics if your controller has some amount of vertical drift to it: the ball will either act floaty as if the table were near horizontal or slam downward as if the table was very steep. If you are experiencing strange table physics and are using a console controller, try setting PBWEnabled = 0
. This will disable analog nudging on both X and Y. Alternatively, you can set one of the PBWAccelGain
settings documented a little further down to 0
to disable analog nudge on just one axis to retain it on the other.
Historical note: PBW is apparently an abbreviation for the Pinball Wizard controller that dates back to at least 2009 and is still available for sale today. It was likely one of the first controllers with a built-in accelerometer to sense nudging
PBWNormalMount:
PBWDefaultLayout:
PBWRotationCB:
PBWRotationvalue:
PBWAccelGainX: This adjusts the accelerometer sensitivity on the X-axis representing left & right nudging expressed as a percentage in the range of 0 - 150%. The default value is the maximum of 150% (or multiply the value by 1.5x). Set this value to 0
to disable the accelerometer along the X-axis entirely. The accelerometer reading may come from a purpose-built device like mjr's Pinscape or that built into a connected console controller like the PS4 Dualshock. Remember from the discussion of PBWEnabled
that VPinball will by default map a console controller's analog joystick to the hardware accelerometer function for controllers like the XBox360's that don't have an accelerometer built in.
PBWAccelGainY: The accelerometer sensitivy on the Y-axis representing forward nudging / pushing. It is otherwise analogous to PBWAccelGainX
. Setting this value to 0
will disable forward nudging.
PBWAccelMaxX: This value sets the maximum acceleration on the X axis corresponding to left & right nudging. It effectively sets the maximum strength of the nudge on this axis. Setting this value to greater than the default value of 100
will allow stronger nudges and vice versa. Setting this value to 0
effectively disables left & right nudging.
PBWAccelMaxY: This value sets the maximum acceleration on the Y axis corresponding to forward nudging / pushing. It is otherwise analogous to PBWAccelMaxX
. Setting this value to 0
effectively disables forward nudging / pushing.
EnableNudgeFilter:
EnableLegacyNudge:
LegacyNudgeStrength:
AccelVelocityInput:
Note
The three values that follow pertain to a "virtual" tilt bob - one whose function is derived from an accelerometer like that on the KL25Z-based Pinscape controller or from readings taken from game console joysticks whether they have an accelerometer built in to them or not TBC. These settings are unrelated to a mechanical tilt bob which is essentially a weighted on-off switch built into some pincabs. "mjr" goes into great detail on the setup and differences between the two in the Pinscape v2 Build Guide
TiltSensCB: Referring to the note above, setting this value to 1
tells VPinball to simulate a mechanical tilt bob based on readings from a pincab controller accelerometer or connected game console joystick. The default setting of 0
disables this simulation.
TiltSensValue: This represents how sensitive the simulated tilt bob is before a nudge is interpreted as a tilt. Think of it as the space between the free-swinging pendulum and the the surrounding metal ring on a real tilt bob. Higher values than the default of 400
increase the sensitivity and vice versa. This setting is clamped within the range of 0
to 1000
.
TiltInertia: This represents how much force is required to get the simulated tilt bob to move. Think of it as the weight of the pendulum on a real tilt bob. Higher values than the default of 100
are interpreted as a heavier pendulum and vice versa. This setting is also clamped within the range of 0
to 1000
.
PlungerAxis:
ReversePlungerAxis:
DeadZone:
PlungerRetract:
; Behavior while playing
EnableMouseInPlayer:
EnableCameraModeFlyAround:
; Main Input API
InputApi:
; Keyboard input mappings
DisableESC:
VPinball supports key remapping by specifying a new keycode for a given action. The settings are based on DirectInput DIK_
values as defined here. The VPX Standalone documentation provides a much more readable version of these values that you can use directly.
Note
VPinball may switch to SDL3 Keycodes at some point in the future to improve cross-platform support.
JoyCustom1Key, JoyCustom2Key, JoyCustom3Key, JoyCustom4Key:
; Joystick input mappings
JoyLFlipKey:
JoyRFlipKey:
JoyStagedLFlipKey:
JoyStagedRFlipKey:
JoyPlungerKey:
JoyAddCreditKey:
JoyAddCredit2Key:
JoyLMagnaSave:
JoyRMagnaSave:
JoyStartGameKey:
JoyExitGameKey:
JoyFrameCount:
JoyVolumeUp:
JoyVolumeDown:
JoyLTiltKey:
JoyCTiltKey:
JoyRTiltKey:
JoyMechTiltKey:
JoyDebugKey:
JoyDebuggerKey:
JoyCustom1:
JoyCustom2:
JoyCustom3:
JoyCustom4:
JoyPMBuyIn:
JoyPMCoin3:
JoyPMCoin4:
JoyPMCoinDoor:
JoyPMCancel:
JoyPMDown:
JoyPMUp:
JoyPMEnter:
JoyLockbarKey:
JoyTableRecenterKey:
JoyTableUpKey:
JoyTableDownKey:
JoyPauseKey:
JoyTweakKey:
; Rumble feedback
RumbleMode:
; Video options
; Playfield window
PlayfieldDisplay:
PlayfieldFullScreen:
PlayfieldWndX:, PlayfieldWndY, PlayfieldWidth, PlayfieldHeight:
PlayfieldAspectRatio:
PlayfieldRender10Bit:
PlayfieldColorDepth:
PlayfieldRefreshRate:
; VR Preview window
PreviewDisplay:
PreviewFullScreen:
PreviewWndX:
PreviewWndY:
PreviewAspectRatio:
PreviewWidth:
PreviewHeight:
PreviewRender10Bit:
PreviewColorDepth:
PreviewRefreshRate:
BGSet: Defines the view mode used when running a table
- 0 - Desktop (default)
- 1 - Fullscreen: Gives you a top-down view on the playfield when playing on an actual virtual pinball cabinet. You can also use Fullscreen in a multi-window setup on your desktop.
- 2 - Full Single Screen (FSS): Tries to show the whole machine including backglass if set up by the table designer. Otherwise it falls back to Desktop view.
SyncMode: Syncs the frame rate with the refresh rate of your monitor. This is specified as an integer value, the range of which depends on the VPinball version you are using.
Warning
The BGFX
version of VPinball (e.g. VPinballX_BGFX
) only supports syncmode
values of 0
(None) and 1
(VSync). All other versions support a range between 0
and 3
.
BGFX Version
- 0 - None: Use this if your display supports variable refresh rate or if you are experiencing stutters.
- 1 - Vertical Sync: Synchronize on display sync. This avoids video tearing but has higher input latency.
Non-BGFX Version
- 0 - None: No synchronization. VPX just runs as fast as possible. Unless you are playing on a very powerful system, this will lead to some input latency (due to lack of input syncing) and render latency (due to flooding the GPU frame queue)
- 1 - Vertical Sync (VSync): Synchronize on video sync which avoids video tearing, but has higher input latency.
- 2 - Adaptive VSync is the same as 'VSync', but when a frame is late (=missing the refresh rate), it is displayed immediately. This should reduce stutter but features the same input latency.
- 3 - Frame Pacing (default): VPX will try to run the input & physics simulation continuously in real time instead of only once per frame. This lowers the input latency, especially if the computer is powerful enough to run at the monitor refresh rate. This also allows to have the input synchronized to PinMAME when enabling it, fixing some synchronization bugs seen in earlier version of VPinball.
MaxFramerate: Sets the target rate that VPinball will generate video frames. This will influence input latency unless frame pacing is configured. The default is the playfield display refresh rate, which corresponds to a setting of 1
. Use 0
for an unbound frame rate (which also requires setting SyncMode to 0).
Whatever the value set here, the SyncMode
setting still applies. Therefore, selecting a frame rate that is higher than the monitor refresh rate requires the use of 'None' for SyncMode
. Note that VPinball will apply a minimum frame rate of 24fps to keep the game playable and prevent the physics from breaking.
VisualLatencyCorrection: Correction expressed in milliseconds applied to ball rendering to account for visual latency. Setting this value to 0
disables this correction, while 1
(the default) derives an appropriate value from the target FPS rate.
MaxPrerenderedFrames: Pre-rendering frames is a technique used to help reduce lag in games. Leave this value at the default of 0
if you have enabled "Low Latency" or "Anti Lag" settings in your graphics driver. Otherwise experiment with a value of 1
or 2
for a chance of lag reduction at the cost of a small framerate reduction.
FXAA: Specify the type and quality of the anti-aliasing (AA) algorithms used to smooth jagged visual edges at the cost of slight blurring. Pick from one of the seven values below. "Quality FXAA" and "Quality SMAA" are recommended and lead to less artifacts but will harm performance on low-end graphics cards.
- 0 - Disabled. This turns off anti-aliasing and is the default. This is the least demanding on your system but delivers the lowest image quality.
- 1 - Fast FXAA (Fast approximate anti-aliasing works by selectively reducing the contrast of the image to smooth out visually obvious jaggies and isolated pixels. It's advantage is that it does not require large amounts of computing power.
- 2 - Standard FXAA
- 3 - Quality FXAA
- 4 - Fast NFAA (Normal Filter Anti Aliasing). Both FXAA and NFAA are very efficient and considered to be the best trade-off of processing vs. artifacts. FXAA tends to be blurrier because of how it operates on contrast values, while NFAA more noticeably has grainy salt-and-pepper texture artifacts (Source).
- 5 - Standard DLLA ([Deep Learning Anti Aliasing) offers a high degree of aliasing removal but can introduce large amounts of blur. It requires an Nvidia RTX card for the Tensor cores it depends on. (Source)
- 6 - Quality SMAA (Subpixel Morphological Antialiasing) has much more intelligent edge detection and is far better at reducing AA without blur. However, it is about a magnitude of order more processing-intensive and doesn't work well with transparent textures. It's particularly effective at retaining sharp corners and fine text. While being less blurry than other algorithms, it is known to struggle with images that have repetitive closely spaced patterns (e.g. leaves, chain linked fences) (Source).
Experiment to find a setting that works well for your setup. The higher the anti-alias setting, the higher the demand on your CPU and GPU. This is a good use case for per-table ini settings: if your system struggles to run a demanding table smoothly, specify a lower value / lower quality setting for this parameter in a per-table ini file and use a higher value / higher quality setting in your global VPinballX.ini
for the rest of your tables where your system is up to the task.
Sharpen: enables post-processed Contrast Adaptive Sharpening (CAS) of the playfield image. Designed by AMD, the algorithm adjusts the amount of sharpening per pixel to target an even level of sharpness across the playfield. Areas that are already sharp are sharpened less and vice versa, allowing for higher overall natural visual sharpness with fewer artifacts. This setting is an integer value with three possible values:
- 0 - Disabled. The default value. No sharpening.
- 1 - CAS. A less agressive but faster algorithm with results that are rather subtle.
- 2 - Bilateral CAS is recommended but will harm performance on low-end graphics cards.
ScaleFXDMD:
DisableAO, DynamicAO:: AO stands for "Ambient Occlusions", which adds shadows around the edges of objects. These two settings are combined as a pair in the Windows configuration GUI and work as follows:
-
DisableAO = 1
,DynamicAO = 0
: This combination disables AO altogether. See below. -
DisableAO = 0
,DynamicAO = 0
: This combination enables "Static AO", limiting its quality for better performance. -
DisableAO = 0
,DynamicAO = 1
: This combination enables "Dynamic AO", a higher quality version of AO with contact shadows for dynamic objects that imposes higher performance requirements. -
DisableAO = 1
,DynamicAO = 1
: Not supported.
Ambient occlusions are not rendered at a very high resolution in VPinball and many newer tables will bake in the shadows AO would generate anyway. Disabling AO with DisableAO = 1
, DynamicAO = 0
is a common optimization that improves performance with little impact on visual quality.
SSRefl: ; Screen Space Reflections
- 0 - Disable screen space reflections (default)
- 1 - Enable screen space reflections
PFReflection: Adjusts the quality of playfield reflections vs performance. The "Dynamic" setting is recommended and will give the best visual results but may harm performance. "Static Only" has no performance cost except for VR rendering. Other options feature different trade-offs between quality and performance. This setting is an integer value with six possible values:
- 0: Disable reflections (default?)
- 1: Ball reflections only
- 2: Static (prerendered) reflections only
- 3: Static reflections and balls without depth sync. Static or dynamic reflections may be rendered when they should instead be occluded.
- 4: Static and dynamic reflections without depth sync. Again, static or dynamic reflections may be rendered when they should instead be occluded.
- 5: Dynamic. All reflections are dynamic, allowing for correct occlusion between them at the cost of performance (static reflections are still prerendered)
MaxTexDimension: ; Max Texture Dimension
- 0 - Unlimited (default)
AAFactor: sets the parameters for Supersampling anti-aliasing. Supersampling is similar to NVidia's Dynamic Super Resolution technique, which renders the game at a different resolution from your display. The default value of 1 means VPinball will render at your displays resolution, essentially disabling this feature. A value less than one will have it render at a lower resolution and then upsample to the resolution of your display. A value greater than one does the opposite, rendering at a higher resolution from your display and then downsampling. Values greater than one deliver very good quality but have a significant performance impact.
VPinball uses values within the range of 0.5
to 2.0
, corresponding to a range of 50% upsampling to 200% downsampling. Set AAFactor
to one of the values below: VPinball will otherwise pick the closest value to one of these numbers anyway.
- 0.5, 0.75: VPinball will render at less than your display resolution and upscale
- 1.0: Disable Supersampling anti-aliasing (Default)
- 1.25, 1.33, 1.5, 1.75, 2.0: VPinball will render at greater than your display resolution and downscale to improve image quality.
The aafactor is applied both to width and height, so a value of 2.0 increases pixel count by 4.
MSAASamples: Set the number of samples used for Multi-Sample Anti-Aliasing (MSAA). MSAA can help reduce geometry aliasing at the cost of performance and GPU memory. This can improve image quality if supersampling is not being used. The following four values are supported:
- 0 - No MSAA
- 4 - 4 samples
- 6 - 6 samples
- 8 - 8 samples
DisableDWM:
UseNVidiaAPI:
HDRDisableToneMapper:
HDRGlobalExposure:
ForceBloomOff: ; Bloom Effects ; 0 - Enabled ; 1 - Disabled
ForceMotionBlurOff: This option would be better named as "ForceBallMotionBlurOff" as it operates only on the motion of the ball on the playfield. This method is considered the preferred one for helping follow the motion of the ball on the table now that BallTrail is considered a legacy feature by the developers that is likely to be disabled by default in future version of VPinball. The default value of 0 keeps ball motion blur enabled, 1 disables it.
ForceAnisotropicFiltering: ; Anisotropic Texture Filtering ; 0 - Disabled ; 1 - Enabled
CompressTextures:
SoftwareVertexProcessing:
GfxBackend: This setting is only applicable for the BGFX rendering backend introduced in VPinball 10.8.1. BGFX provides a cross-platform abstraction to modern rendering API's without having to code directly to those API's. The differences between some of the different backends are documented in the VPinball docs.
- Valid values for
GfxBackend
are:Noop
,Agc
,Direct3D11
,Direct3D12
,Gnm
,Metal
,Nvn
,OpenGLES
,OpenGL
,Vulkan
,Default
- Don't worry if you don't know what some of these values are. Some like
Gnm
andNvn
are console specific and supported by BGFX backend but not by VPinball itself.
- Don't worry if you don't know what some of these values are. Some like
- The
Default
value by platform is as follows:-
OpenGLES
on Android -
Metal
on Apple devices -
Vulkan
for all other platforms
-
; Stereo rendering (VR have its own dedicated section)
Stereo3D:
Stereo3DEnabled:
Stereo3DFake:
; Anaglyph settings
Stereo3DBrightness:
Stereo3DSaturation:
Stereo3DDefocus:
; True stereo settings
Stereo3DEyeSeparation:
; Parallax stereo settings
Stereo3DYAxis:
Stereo3DOffset:
Stereo3DMaxSeparation:
Stereo3DZPD:
; Ball options
DisableLightingForBalls:
BallAntiStretch:
OverwriteBallImage:
BallImage:
DecalImage:
BallTrail: Determines whether the ball is drawn with a trail behind it to more easily follow its motion. A setting of 0 disables ball trails, 1 turns them on (the default). The developers now consider this a legacy feature with the introduction of ball motion blur that is likely to be disabled by default in future versions of VPinball.
Note
At time of writing, there are several issues with this setting leaving random artifacts or streaks of light across the table on the BFGX version of VPinball. Try setting BallTrail = 0
in your VPinballX.ini
file if you run into something like this.
BallTrailStrength: Determines the length and intensity of the trail drawn behind the ball's path. It is a floating point value between 0.0 and 1.0, with a default of 0.5. The higher the value, the more intensely the ball's trail is drawn and the easier it is to follow. It only has an effect if BallTrail is enabled.
; Replace table's scene lighting emission scale setup, eventually based on automatic Day/Night computed from geographic position
OverrideTableEmissionScale:
EmissionScale:
DynamicDayNight: Activate this to switch the table brightness automatically based on your PC's clock and your geographic location. 0 disables this feature (the default), 1 enables it. You will need to fill in the latitude and longitude for your location for this to work correctly. You may use openstreetmap.org or Google Maps to get these values in the correct format. More below...
Latitude: The latitude of your location. Specify only if you have DynamicDayNight enabled. Use a negative value if you are in the southern hemisphere. For example, -33.856109
is the latitude of the Sydney Opera House.
Longitude: The longitude of your location. Specify only if you have DynamicDayNight enabled. Use a negative value if you are in the western hemisphere. For example, -87.655818
is the longitude of Wrigley Field in Chicago.
NudgeStrength: Changes the visual effect / screen shaking when nudging the table. This does not change the actual strength of the nudge. The default setting is 0.02.
; Level of detail for ball and ramps
AlphaRampAccuracy:
; External application capture options
CaptureExternalDMD:
DMDSource:
CapturePUP:
BGSource:
; Counters decremented after each run
NumberOfTimesToShowTouchMessage:
; Show the touch overlay
TouchOverlay:
; Use cache to limit stutters and speedup loading
CacheMode:
; Display physical setup
The Screen...
settings that follow are used by VPinball to more realistically render the playfield as if there is actually a real playfield inside the monitor or TV used to display it. Read the Window Projection writeup in Visual Pinball's View Setup guide for more information.
Tip
You really want to set these values if you are playing on an actual virtual pinball cab. If they are not set, VPinball doesn't even try to calculate good default Point of View settings that can signficantly improve immersion.
ScreenWidth, ScreenHeight: Screen width and height are the physical dimensions of the visible display area of your playfield monitor. There are no default values for these parameters.
Important
The width and height are in centimeters.
The width is always the longest edge of the screen and not the measurement of the playfield from left to right. It follows that ScreenWidth
is always greater than ScreenHeight
.
ScreenInclination: Screen inclination is the angle in degrees between horizontal and the screen. A typical value will be around seven degrees. There is no default value for this parameter.
ScreenPlayerX:
ScreenPlayerY:
ScreenPlayerZ:
In the image below, the window projection (green) is displayed on the screen (blue). The projection is parallel to the screen.
BAMHeadTracking:
; # Camera default layout
; Desktop default (desktop in landscape)
DesktopMode:
DesktopFov:
DesktopLookAt:
DesktopViewVOfs:
DesktopCamX:
DesktopCamY:
DesktopCamZ:
DesktopScaleX:
DesktopScaleY:
DesktopScaleZ:
; Full Single Screen defaults (desktop in portrait with backglass at top)
FSSMode:
FSSFov:
FSSLookAt:
FSSViewVOfs:
FSSCamX:
FSSCamY:
FSSCamZ:
FSSScaleX:
FSSScaleY:
FSSScaleZ:
; Override of table properties
Difficulty:
ToneMapper:
**Exposure =
; Desktop POV
ViewDTMode:
ViewDTScaleX:
ViewDTScaleY:
ViewDTScaleZ:
ViewDTPlayerX:
ViewDTPlayerY:
ViewDTPlayerZ:
ViewDTLookAt:
ViewDTRotation:
ViewDTFOV:
ViewDTLayback:
ViewDTHOfs:
ViewDTVOfs:
ViewDTWindowTop:
ViewDTWindowBot:
; Cabinet POV
ViewCabMode:
ViewCabScaleX:
ViewCabScaleY:
ViewCabScaleZ:
ViewCabPlayerX:
ViewCabPlayerY:
ViewCabPlayerZ:
ViewCabLookAt:
ViewCabRotation:
ViewCabFOV:
ViewCabLayback:
ViewCabHOfs:
ViewCabVOfs:
ViewCabWindowTop:
ViewCabWindowBot:
; Full Single Screen POV
ViewFSSMode:
ViewFSSScaleX:
ViewFSSScaleY:
ViewFSSScaleZ:
ViewFSSPlayerX:
ViewFSSPlayerY:
ViewFSSPlayerZ:
ViewFSSLookAt:
ViewFSSRotation:
ViewFSSFOV:
ViewFSSLayback:
ViewFSSHOfs:
ViewFSSVOfs:
ViewFSSWindowTop:
ViewFSSWindowBot:
; # VR Player preferences
; VR device setting
AskToTurnOn:
; OpenXR settings
ResFactor:
; OpenVR settings
ScaleToFixedWidth:
ScaleAbsolute:
ScaleRelative:
NearPlane:
EyeFBFormat:
; Table position
Slope:
Orientation:
TableX:
TableY:
TableZ:
; Preview
VRPreviewDisabled:
VRPreview:
ShrinkPreview:
WindowPosX:
WindowPosY:
PreviewWidth:
PreviewHeight:
; Controller preferences
ForceDisableB2S:
DOFContactors:
DOFKnocker:
DOFChimes:
DOFBell:
DOFGear:
DOFShaker:
DOFFlippers:
DOFTargets:
DOFDroptargets:
; Behavior
SelectTableOnStart:
SelectTableOnPlayerClose:
; Viewport settings
ShowDragPoints:
DrawLightCenters:
GridSize:
RenderSolid:
BackgroundColor:
FillColor:
ElementSelectColor:
ElementSelectLockedColor:
DefaultMaterialColor:
GroupElementsInCollection:
Units:
; Auto save
AutoSaveOn:
AutoSaveTime:
; Debug tools
ThrowBallsAlwaysOn:
ThrowBallSize:
ThrowBallMass:
BallControlAlwaysOn:
EnableLog:
LogScriptOutput:
; Main window
WindowMaximized:
WindowLeft:
WindowTop:
WindowRight:
WindowBottom:
; Properties window
PropertiesVisible:
PropertiesFloating:
; Script window
AlwaysViewScript:
CodeViewPosX:
CodeViewPosY:
CodeViewPosWidth:
CodeViewPosHeight:
**; Search/Select window
SearchSelectPosX:
SearchSelectPosY:
SearchSelectWidth:
SearchSelectHeight:
; Image manager
ImageMngPosX:
ImageMngPosY:
ImageMngWidth:
ImageMngHeight:
; Debugger
DebuggerPosX:
DebuggerPosY:
DebuggerWidth:
DebuggerHeight:
; Collection manager
CollectionMngPosX:
CollectionMngPosY:
; Material manager
MaterialMngPosX:
MaterialMngPosY:
MaterialMngWidth:
MaterialMngHeight:
; Sound manager
SoundMngPosX:
SoundMngPosY:
; Renderprobe manager
RenderProbeMngPosX:
RenderProbeMngPosY:
RenderProbeMngWidth:
RenderProbeMngHeight:
; Script Editor preferences
BackGroundColor:
BackGroundSelectionColor:
DisplayAutoComplete:
DisplayAutoCompleteAfter:
DwellDisplay:
DwellHelp:
DwellDisplayTime:
Default:
Default_color:
Default_FontPointSize:
Default_Font:
Default_FontWeight:
Default_FontItalic:
Default_FontUnderline:
Default_FontStrike:
ShowVBS:
ShowVBS_color:
ShowVBS_FontPointSize:
ShowVBS_Font:
ShowVBS_FontWeight:
ShowVBS_FontItalic:
ShowVBS_FontUnderline:
ShowVBS_FontStrike:
ShowComponents:
ShowComponents_color:
ShowComponents_FontPointSize:
ShowComponents_Font:
ShowComponents_FontWeight:
ShowComponents_FontItalic:
ShowComponents_FontUnderline:
ShowComponents_FontStrike:
ShowSubs:
ShowSubs_color:
ShowSubs_FontPointSize:
ShowSubs_Font:
ShowSubs_FontWeight:
ShowSubs_FontItalic:
ShowSubs_FontUnderline:
ShowSubs_FontStrike:
ShowRemarks:
ShowRemarks_color:
ShowRemarks_FontPointSize:
ShowRemarks_Font:
ShowRemarks_FontWeight:
ShowRemarks_FontItalic:
ShowRemarks_FontUnderline:
ShowRemarks_FontStrike:
ShowLiterals:
ShowLiterals_color:
ShowLiterals_FontPointSize:
ShowLiterals_Font:
ShowLiterals_FontWeight:
ShowLiterals_FontItalic:
ShowLiterals_FontUnderline:
ShowLiterals_FontStrike:
ShowVPcore:
ShowVPcore_color:
ShowVPcore_FontPointSize:
ShowVPcore_Font:
ShowVPcore_FontWeight:
ShowVPcore_FontItalic:
ShowVPcore_FontUnderline:
ShowVPcore_FontStrike:
EverythingElse:
EverythingElse_color:
EverythingElse_FontPointSize:
EverythingElse_Font:
EverythingElse_FontWeight:
EverythingElse_FontItalic:
EverythingElse_FontUnderline:
EverythingElse_FontStrike:
; # Recent directory
LoadDir:
ImageDir:
ImportDir:
SoundDir:
MaterialDir:
POVDir:
PhysicsDir:
TableFileName0:
TableFileName1:
TableFileName2:
TableFileName3:
TableFileName4:
TableFileName5:
TableFileName6:
TableFileName7:
**; # User custom defaults for parts
Force:
Scatter:
HeightScale:
RingSpeed:
Orientation:
Threshold:
Surface:
TimerEnabled:
TimerInterval:
CapVisible:
BaseVisible:
RingVisible:
SkirtVisible:
ReflectionEnabled:
HasHitEvent:
Collidable:
Width:
Height:
Rotation:
Image:
Surface:
DecalType:
Text:
Sizing:
Color:
VerticalText:
FontSize:
FontName:
FontWeight:
FontCharSet:
FontItalic:
FontUnderline:
FontStrikeThrough:
Image:
Sound:
UseImageGrid:
Visible:
ImagesPerRow:
Transparent:
ReelCount:
Width:
Height:
ReelSpacing:
MotorSteps:
DigitRange:
UpdateInterval:
BackColor:
TimerEnabled:
TimerInterval:
Height:
RotX:
RotY:
RotZ:
Color:
TimerEnabled:
TimerInterval:
ImageA:
ImageB:
Opacity:
ModulateVsAdd:
FilterAmount:
Visible:
AddBlend:
DMD:
DisplayTexture:
ImageMode:
Filter:
; Physics
Scatter:
Strength:
EOSTorque:
EOSTorqueAngle:
ReturnStrength:
Mass:
Speed:
Elasticity:
ElasticityFalloff:
Friction:
RampUp:
; Geometry and visuals
StartAngle:
EndAngle:
BaseRadius:
EndRadius:
Length:
MaxDifLength:
TimerEnabled:
TimerInterval:
Color:
RubberColor:
Surface:
Height:
RubberThickness:
RubberHeight:
RubberWidth:
Visible:
Enabled:
ReflectionEnabled:
Elasticity:
Friction:
AntiFriction:
Scatter:
GravityFactor:
Length:
Height:
Rotation:
ShowBracket:
Collidable:
AngleMin:
AngleMax:
Visible:
TimerEnabled:
TimerInterval:
Surface:
TwoWay:
ReflectionEnabled:
GateType:
; Phsyics
Elasticity:
ElasticityFalloff:
Friction:
Scatter:
; Visuals
LegacyMode:
TimerEnabled:
TimerInterval:
Visible:
IsDropped:
Position_Z:
DropSpeed:
ScaleX:
ScaleY:
ScaleZ:
Orientation:
Image:
HitEvent:
HitThreshold:
TargetType:
Collidable:
DisableLighting:
DisableLightingBelow:
ReflectionEnabled:
RaiseDelay:
TimerEnabled:
TimerInterval:
Enabled:
HitAccuracy:
HitHeight:
Orientation:
Radius:
Scatter:
KickerType:
Surface:
FallThrough:
Legacy:
Falloff:
FalloffPower:
LightState:
TimerEnabled:
TimerInterval:
Color:
ColorFull:
OffImage:
BlinkPattern:
BlinkInterval:
Intensity:
TransmissionScale:
Surface:
FadeSpeedUp:
FadeSpeedDown:
Bulb:
ImageMode:
ShowBulbMesh:
StaticBulbMesh:
ShowReflectionOnBall:
ScaleBulbMesh:
BulbModulateVsAdd:
BulbHaloHeight:
UpdateInterval:
Collection:
CenterX:
CenterY:
TimerEnabled:
TimerInterval:
Height:
Width:
ZAdjust:
Stroke:
PullSpeed:
ReleaseSpeed:
PlungerType:
AnimFrames:
Color:
Image:
TimerEnabled:
TimerInterval:
Surface:
MechPlunger:
AutoPlunger:
MechStrength:
ParkPosition:
Visible:
ScatterVelocity:
MomentumXfer:
CustomTipShape:
CustomRodDiam:
CustomRingGap:
CustomRingDiam:
CustomRingWidth:
CustomSpringDiam:
CustomSpringGauge:
CustomSpringLoops:
CustomSpringEndLoops:
ReflectionEnabled:
Elasticity:
ElasticityFalloff:
Friction:
Scatter:
SideColor:
Visible:
StaticRendering:
DrawTexturesInside:
Position_Z:
Size_X:
Size_Y:
Size_Z:
RotAndTra0:
RotAndTra1:
RotAndTra2:
RotAndTra3:
RotAndTra4:
RotAndTra5:
RotAndTra6:
RotAndTra7:
RotAndTra8:
Image:
NormalMap:
HitEvent:
HitThreshold:
AddBlend:
Opacity:
Color:
EdgeFactorUI:
CollisionReductionFactor:
Collidable:
IsToy:
DisableLighting:
DisableLightingBelow:
ReflectionEnabled:
BackfacesEnabled:
DisplayTexture:
ObjectSpaceNormalMap:
HeightBottom:
HeightTop:
WidthBottom:
WidthTop:
RampType:
TimerEnabled:
TimerInterval:
Image:
ImageMode:
ImageWalls:
LeftWallHeight:
RightWallHeight:
LeftWallHeightVisible:
RightWallHeightVisible:
HitEvent:
HitThreshold:
Elasticity:
Friction:
Scatter:
Collidable:
Visible:
ReflectionEnabled:
WireDiameter:
WireDistanceX:
WireDistanceY:
Height:
HitHeight:
Thickness:
HitEvent:
TimerEnabled:
TimerInterval:
Image:
Elasticity:
ElasticityFalloff:
Friction:
Scatter:
Collidable:
Visible:
EnableStaticRendering:
EnableShowInEditor:
RotX:
RotY:
RotZ:
ReflectionEnabled:
Length:
Rotation:
ShowBracket:
Height:
AngleMax:
AngleMin:
Elasticity:
AntiFriction:
Scatter:
Visible:
TimerEnabled:
TimerInterval:
Image:
Surface:
ReflectionEnabled:
Elasticity:
ElasticityFallOff:
Friction:
Scatter:
Width:
Length:
TimerEnabled:
TimerInterval:
HitEvent:
HitThreshold:
SlingshotThreshold:
TopImage:
SideImage:
Droppable:
Flipbook:
IsBottomSolid:
HeightBottom:
HeightTop:
DisplayTexture:
SlingshotForce:
SlingshotAnimation:
Visible:
SideVisible:
Collidable:
DisableLighting:
DisableLightingBelow:
ReflectionEnabled:
Width:
Height:
BackColor:
FontColor:
TimerEnabled:
TimerInterval:
Transparent:
DMD:
TimerEnabled:
TimerInterval:
TimerEnabled:
TimerInterval:
Enabled:
Visible:
HitHeight:
Radius:
Rotation:
WireThickness:
ScaleX:
ScaleY:
Shape:
Surface:
AnimSpeed:
ReflectionEnabled:
; # Version of tables and application used
VPinball: