Resource icon

VP9 Support File Visual Pinball 9.95b (EXE only) 9.95b

No permission to download
This is the final, standalone version of the VP9 series.

If running older versions, drop the contents of the ZIP in to your main VP folder and overwrite existing files when asked. If you're running newer VP versions, do the same, but do not overwrite files. In either case, it's suggested that you manually rename the executable with the version number. ("VP 9.95b")

VP 9.9.5b changelog

- fix "all sounds to rear channels" bug

VP 9.9.5 Changelog

- add surround sound options/configurations:
1) Basic 2CH audio - this should operate exactly as it did before. Forward/rear panning is ignored.
2) All effects to rear - Moves the table sounds to the back audio channels. This allows one to move the sounds into the cab like one was able before, but without needing a second sound card.
3) Surround, front is front - This is the best setting when using a dedicated card for the surround sound table sounds. It makes the front channels the front of the cab (closest to the player). This way if one uses older versions of VP, the old legacy output still works well.
4) Surround, front is rear - This is a pretty "vanilla" surround setup. If you were to play on a home theater or with virtual 3D headphones, it's the most appropriate. The "front" speakers are in the rear of the cab (furthest from you). If VPinmame also uses the same soundcard, it will share the audio with these front channels.
5) 7.1 surround (aka 6ch audio) - If one wants to drive the backglass, and 4 channel table sounds all off of one card, this is the setting to use. It shifts all of the table audio to the side and rear channels, leaving the fronts available for VPM and backglass sounds. This might also be a good setting to try if you are using just 2 speakers in the cab and 2 in the backbox, the table sounds will pan partially towards the front in 4 speaker mode, letting the backbox provide some of the surround effect.

Please note that these modes are used in conjunction with the Windows speaker configurations. You can use any mode on any speaker system.
Some sound cards even have virtual surround options that would work with this setup. You could set up a full 7.1 setup and dedicate it to just the playfield if you wanted with option #3 or #4, and use a separate card for VPM.

VP 9.9.4 Changelog

- fix UI issue with the layer buttons for high desktop resolutions

- fix an issue with Mot-Ion / Pinball Wizard controllers that suffer from calibration drift as they warm up

- backport CPU affinity setting

VP 9.9.3 Changelog

- disable visual touch/pen feedback to save one frame of input latency/lag

- fix timers that dis/enable themselves in the script

VP 9.9.2 Changelog

- new plunger code (see Plunger pdf)

- fix text selection if in previous selected text box a change was made

- extend right click behavior for multi-select to hidden items

- fix EMReel crash when image is missing and reel value is nonzero

- updated to latest FreeImage.dll (3.17.0)
- script editor updated to use latest scintilla (3.6.2)

VP 9.9.1 Changelog

- fixed some memory leaks

- fixed rendering of overlapping balls

- include optional nudge filtering (selectable in the keys dialog)
and remove implicit dead zone handling (if you have the dead zone setting at 0% and now experience problems, set it to at least 1%)

- native support for the Pinscape Controller

- script editor updated to use latest scintilla (3.5.1)

VP 9.9.0 Changelog

- rendering engine has been ported to DirectX 9 and now takes much better advantage of 3D hardware

- Region Updates, Region Optimization, Alternate Render are not needed anymore due to the new graphics pipeline and have been removed

- true fullscreen setting has been removed due to incompatibility with VPinMAME. Instead, a windowed fullscreen option has been added to the list of video modes

- add options for wire ramps (define diameter and distance x/y of wires)
- add sphere mapping to wired ramps if an image was assigned to a wired ramp

- add CurrentAngle function to spinner

- add depth bias option to flasher, light, primitive and ramp to fine tune depth sorting

- enable NVIDIA Optimus cards by default

- new video setting: Force anisotropic texture filtering. This results in higher quality results, but can affect performance on lower end cards

- stereo 3D AA is now basically for free and can always be enabled if stereo 3D output is used (currently stereo 3D is limited to NVIDIA only though)
Note that the depth/parameters of stereo had to be changed. As a positive side effect, the two stereo parameters are the same for most tables now,
so there is now a global setting in the video preferences. These can still be overwritten per table though.

- FXAA now has two modes: Fast (similar to old setting) and Quality

- new FPS limiter field in Video Options:
0: disable frame limiting
1: enable vsync
If set to anything higher than the monitor refresh rate, the engine will limit the FPS to this rate (but of course without using real hardware vsync).
Adaptive vsync had to be disabled for now for compatibility with Windows XP.

- new field "Maximum prerendered frames" in Video Options:
Lowering this value will reduce input lag and sometimes also stutter, but may come at a performance cost.

- running as administrator is no longer required (except for tables which write high scores to system directories). UAC setting removed from executable.

- updated to latest FreeImage.dll (3.16.0)
- script editor updated to use latest scintilla (3.4.1)

- technical note: the minimum version to compile VP is now visual studio 2008 (incl. feature pack)

- take a look at for some additional help with problematic VP 9.2.1 (or lower) tables (and more)

VP 9.2.1 Changelog

- this is the final release to be based on DirectX 7

- add "To Collection" to the context menu to assign a selected element to a collection
- add moving of single selected collection in the collection manager

- add CurrentAngle() function to the gate object

- add "Is Toy" checkbox to disable collision handling on mesh primitives completely.

- add collision detection to mesh primitives together with hit threshold and hit event

- add Z offset to the backdrop options. With this settings you're able to zoom in/out the table without changing FOV/Inclination/Layback settings
- add Z scale option to the backdrop options. With this setting you're able to reduce/increase the overall depth of a table.

- add table dimension manager for an easy way to calculate real table dimensions into VP table units and vice versa

- add a ball throwing feature to VP. To use it check "Throw Balls in Player" in the debug window (ESC -> "Debug Window") and by left clicking and holding the left mouse
button you create a new ball and it throws the balls in that direction you move the mouse cursor when you release the left mouse button. If you click on a non
moving ball you can reuse that ball and no new calls will be created. A right click on a ball will remove that ball from the table.

- add touch support for tablets (windows 8 and upwards)
current mapping:
upper left - add credit
middle upper left - left magna save/2nd button
middle lower left - left flipper
lower left - start
upper right - quit (press for 2 seconds to exit VP completely)
middle upper right - right magna save/2nd button
middle lower right - right flipper
lower right - plunger

- add Alpha-Flasher element. Use this element to add (additive) alpha flashers instead of abusing the alpha ramp element. The flasher is a 'dynamic' element, that means it is not pre-rendered
and it'll be updated every frame.
If 'Display Image In Editor' option is selected and the flasher is rotated the image won't rotate due to a DX7 limitation.
If the flasher is not an additive alpha flasher you can colorize the image with 'Color' if you don't want that effect set the color to blank white (RGB 255,255,255).

- add height offset to bumper element

- add additional (optional) parameters to PlaySound to increase/decrease the frequency, apply all the settings to an already playing sample and choose if to restart this sample from the beginning or not
all parameters are now: PlaySound "name",loopcount,volume,pan,randompitch,pitch,useexisting,restart
pitch can be positive or negative and directly adds onto the standard sample frequency
useexisting is 0 or 1 (if no existing/playing copy of the sound is found, then a new one is created)
restart is 0 or 1 (only useful if useexisting is 1)

- per table setting of adaptive vsync (-1 = default, 0 = off, 1 = automatic detection, anything else: refresh rate in Hz)
- change per table settings for AA, FXAA and ball reflection (-1 takes the default from the video preferences, 0 forces off, 1 forces on)

- tweak key input code to save one frame (or more?) of lag

- change the old 'Physics Max.Looptime' setting to 'Physics Max. Loops'
it allows to specify the maximum number of iterations spent in the physics update.
by setting it f.e. to 1, the rendered frame updates will -always- match the physics updates, everything above 1 allows for multiple physics updates per frame
(2, 3 or 4 can be good values for this, as it slows down the physics temporarily if the FPS drop below 50, 33 or 25 in these cases).

- import/export of global physics options sets
- import/export of local/table physics options sets (that could then be reused globally of course and the other way round)
Note that for local/table export the first found flipper is used to export the flipper physics settings (and for import all flippers will be assigned with the same settings)

- add optional ball trails/motion blur (also adjustable per-table)
- add script option 'DisableLighting' for balls to disable lighting. This also allows to change the color of the ball via 'Color' directly

- add enabled flag to flippers

- separate/new texture maps for the lighting of lights (more details) and bumpers (brighter)

- fix problem with DMD/VPinMAME window being hidden behind VP window

- secondary/backglass sound output (by DJRobX)
if a sound effect contains 'bgout_' in the name or '* Backglass Output *' in its path then it is played via the secondary sound output (music always)
this can also be done with existing tables by using the new 'To BG Out' button in the sound manager

- script editor updated to use latest scintilla (3.3.9)

VP 9.2.0 Changelog

- alpha ramps can now select to trigger region updates (also via script: Toggle via UpdateRegions or a single one via TriggerSingleUpdate) to avoid having to use the refresh-light trick
- primitives can now select to trigger region updates (also via script: Toggle via UpdateRegions or a single one via TriggerSingleUpdate) to avoid having to use the refresh-light trick

- add 'real' 3D mesh primitives, these can be loaded via .obj files (for example exported out of Blender)
- add lighting option for primitives
- add sphere mapping to 3D mesh primitives (useful to fake reflections)
- add static rendering feature to primitives: if you set the 'Static Rendering' option, the primitive will be pre-rendered and you can't change any parameters from within the script. This is
helpful if you want to use 3D meshes for posts or toys which won't be animated at all.
- add static rotation for primitives (ObjRotX, ObjRotY, ObjRotZ) to change the basic orientation of a primitive. The old rotation/translation settings animate the primitive.
all rotation/translation settings can be used out of the script.
- rotation/translation of primitives can be changed from within the script with the properties .RotX, .RotY, .RotZ, .TransX, .TransY, .TransZ, .ObjRotX, .ObjRotY, .ObjRotZ
or for backwards compatibility you can use .rotandtrans0-8

- add configurable lightsources: point, directional, spot; these share the same coordinate system as the table geometry (angle/rotation/scale independent! setting the direction of a directional light to 0,0,0 restores the old behavior though)
note that DX7 is still vertex lighting based, thus all lit objects MUST feature reasonable triangulation, like f.e. huge walls (the playfield itself is triangulated 100x100)
look at the built-in default table to get a feeling for the setup of these lightsources
- add exact lighting option to table (if you experience lighting problems with dynamic ramps, primitives or the ball, please enable this)
- add shadow orientation. In the table options under Lightsources you can change the shadow orientation by adding a factor to X and Y. Doing that you can change the projection of the shadow on the table.
This is needed if you use the extra light sources to create a more real lighting/shadowing.
- add flag to walls and gates to disable lighting and shadows (to assist in using fully artist driven lighting)
- add flag to light objects to disable the lighting calculations when the 'On Image' is set (so that behavior is the same as when only using a color)
- add lightmap for light objects: If option "'On Image' Is Lightmap" is checked you can define a lightmap for the on image. If the light is switched on the lightmap is rendered together with the off image.

- add flag for alpha ramps to optionally use additive blending (to cope with 2D-lighting-hacks like halos/flashers)
note that in order to implement fake GI/lighting or flashers via alpha ramps you should follow the following guidelines:
1) if multiple alpha ramps overlap, then the drawing order (see below) and the height level of these ramps have to match, so that the lowest ramp gets drawn first, etc (make sure to move same height alpha ramps to slightly different heights first!)
2) uncheck the 'normal 3D stereo' to not have each 3D user have to do this on his/her own (please do this only for lighting or flashers!)
3) to go for maximum performance disable visibility or the alpha flag for turned off lights/flashers via the script

- add modern plunger texture mapping support and correct coloring

- add per-table sound & music volume settings (0..100% scaling of the global VP settings)
- add per-table software FXAA setting (only works if also enabled in the video settings)
- add per-table alpha ramp accuracy
- add per-table region updates and region optimization (-1 takes the default from the video preferences, 0 forces off, 1 forces on)

- add layering of table elements
- add selection dialog where you can select one or more elements out of a list of all elements in the table
- add easy selection mode if you right-click on an element in the context menu you can select those elements which are stacked under the mouse cursor
- add drawing order (via 2 modes: Hit and Select), you can move elements up/down in a list to change the drawing order
Hit: If you click on an element all elements which are over/under that clicked element are shown in the list box
Select: If you select a bunch of elements, then the selected elements are shown in the list box
- add editor panning feature. In the editor hold ALT and move the mouse and the view will change in the direction the mouse was moved.
It just reacts on mouse movements if you don't move the mouse nothing will happen.

- add reflection option for balls (configurable per table). If you enable this option the ball is mirrored on the table. With reflection strength you can define how much the ball will reflect.
If the value is too high the mirror effect will look odd.
- add fake antialiasing(AA) as a global option in the video settings and a per table setting
- add 8 sets of global physics options to tweak some of the table and flipper settings that can then optionally override the table settings (when enabled in the table physics options and/or the flipper physics options)
this enables quick changes to flipper and physics settings for a whole bunch of tables (for example to tweak for less input lag or adapt the ball simulation/'speed')
the 8 different sets can be used f.e. to tweak for different hardware generations or the manufacturer

- add additional (optional) parameters to PlaySound to set the pan and/or randomize the pitch of the played sound effect: Instead of PlaySound "name",loopcount,volume one can now use PlaySound "name",loopcount,volume,pan,randompitch
pan ranges from -1.0 (left) over 0.0 (both) to 1.0 (right)
randompitch ranges from 0.0 (no randomization) to 1.0 (vary between half speed to double speed)
so f.e. PlaySound "FlipperUp",0,0.5,-1.0,1.0 would play the sound not looped (0), at half the volume (0.5), only on left speaker (-1.0), with varying pitch (1.0)
look at the built-in default table to get a feeling for the setup of these parameters

- script editor updated to use latest scintilla (3.3.6)
- add multi comment/uncomment feature to the script editor
- add function list to the script editor

VP 9.1.5 Changelog

- add flag for ramps to optionally make them not influence the 3D stereo rendering (to cope with 2D-hacks like halos/flashers/GI)
- expose new 'Region Updates' in Video Options (disabling this can be faster on some graphicsboards, especially NVIDIA Optimus Laptops)
- expose new 'Region Optimization' in Video Options (disabling this can help issues with NVIDIA AA, enabling this can help performance and fixes issues with NVIDIA FXAA)
- optimize alpha ramps a bit
- enable some caching for DirectX functions to help performance
- fix more problems with primitive rendering
- correct issue with adaptive vsync
- fix some micro stuttering on multi-CPU systems
- add purely software/CPU-based FXAA workaround (please do -not- enable FXAA in the NVIDIA driver then if you need to use this!)
- cleanup some of the UI
- add correct UAC setting (no more 'Run as Administrator' necessary)
- add large address handling (no more '4GB patching' necessary)
- replace default ball/lamp images and some of the default table settings (mainly physics related)
- correct stylized table rendering in backdrop editor view
- fix command line parser (problems with running tables like playboy from hyperpin, etc)
- optimizations/small fixes
- updated to latest FreeImage.dll (3.15.4)

VP 9.1.4 Changelog

- corrected primitive rendering - thanks Toxie!
- optimizations/fixes
- Added support for different sound device output

VP 9.1.3 Changelog

- Added controller button support to key options for all controllers - Koadic!
- Added single wire ramp object type - thanks Rascal!
- Added modern plunger type - thanks Rascal!
- Added plunger color options
- Added support for 3D TV rendering - Toxie!!!

VP 9.1.2 Changelog

Fixed bugs:
- Set as Defaults is ensured safe - loading a table will ignore the stored defaults to ensure the table is loaded how it was saved
- Deadzone slider is modified to reflect how deadzone worked in previous revisions
- SSE was going to be utilized, but magnets reacted sluggish, so reverted to 'fast' code without SSE again.

VP 9.1.1 Changelog

Fixed bugs:
- Copy and Paste Decals
- Layback causing Graphic glitches with ball decals
- Radio buttons in Video Options Dialog
- Tabstops in Backlass Options
- unhandled exception with script errors
- Text Decals not showing
- Kickers and Triggers that are in the same position caused lockups
- transparency issue with 32bpp bmp Files
- bumpers and slingshots were disabled at start of the game when not visible
- Textures were cropped at MaxTexDim at very special conditions
- Alpha Ramps were not showing with Balls created from script.
- Textures near screen border were distorted on some tables
- Scale Dialog default field was checkbox - changed to scaleX-value

New features:
- Added slider for Alpharamps Accuracy. If Alpharamps are causing performance problems (and they will likely do!), try setting this slider to the left. Ramps are displayed with less surfaces then.
- New experimental feature: Ball stretching against table and monitor stretching. Three options: 1st: like before, 2nd: don't stretch ball, 3rd: don't stretch ball and take Pixel aspect ratio of monitor into consideration. Choose ( R) Monitors only if you have a rotated Windows desktop.
- Implemented right click 'Set as Default'. This options sets the current properties of an object as the new defaults for that object type.
- little optimizations

Tables made with 9.1.x may be incompatible with older versions due to the new features, but tables made with 9.0.x can be loaded and played in 9.1.x.

VP 9.0.10 Changelog

Thanks to Scrooby's help, I think we have an appropriate deadzone interface now. It is a global setting for all tables and doesn't affect the keyboard for X and Y axis.
HD Render and Reorder has been moved to video options

You can now set maximum texture dimensions for lower powered graphic hardware without exporting images (BMPs will still need to be exported and resized if they are too big)
*Added Kicker.CreateSizedBall (float radius) - Returns Ball
*Added Video Option for Chipset graphics that cannot create big textures (only non BMPs supported). Redesigned dialog.
*Added Layback feature (Should we rename this feature? I don't know a better name. Does anybody have a better description?).
Layback is located under the field of view field on the backdrop options for the table.
Basically it appears to change the vertical orientation of the final rendered table. It is an alternate version of Field of View rendering, and will only be available from 9.10 and newer.
Field of View must be greater than 0 for Layback values to be used to render a table.

Items on table are now displayed in a non-kartesian world to give the viewer the imagination to stand more in front of the table instead of flying over it, when using FOV.

*Fixed Near-Plane Bug with inclination set to 0.
*Added Support for various Picture formats (*.jpg;*.jpeg;*.png;*.gif;*.ico;*.IFF;*.PCX;*.PICT;*.psd;*.tga;*.tiff;*.tif)
*Added Alpha Support for Ramps

More optimizations and testing by Toxie

Cupid added PNG support using FreeImage. VP 910 will require freeimage.dll to be located in the directory VP is being loaded from - perhaps someday we'll have PNG built into VP to eliminate this dependency

As required by the FreeImage Public License:
If it is not possible to put such notice in a particular Source Code file due to its structure, then you must include such notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. (such as this changelog file)
"The contents of this file are subject to the FreeImage Public License Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License."
No modifications were made to the freeimage.dll file, or internal freeimage source code, so that covers our use of the dll in a free capacity.

VP 9.0.8 Changelog

Corrected keyboard handler for message boxes
implemented 10% dead zone to motion/slope/analog axis controls

VP 9.0.7 Changelog -- 9.0.6 skipped

emreel lock not loaded after save (noah)
ball needs to be allowed outside playfield area (scapino)
removed remaining minimum black masks for ramps, reels, images, lights, kickers, and top and side surfaces
Corrected volume control

Plunger scatter velocity requires global table difficulty to be >0
Global table difficulty valid values from 0.0 to 1.0 - affects amount of scatter on walls as well as plunger variance

VP 9.0.5 Changelog

December 27, 2009 - updated VP9 for your playing amusement. Approved by Nanotech Entertainment.

1) Finalized PinballWizard and ushock motion controls - should be accurate for X/Y/Z axis and no more changes should need to be made to it again

2) added Plunger.MotionDevice scriptable property - 0=nothing connected, 1=PinballWizard, 2=uShock Board

3) Plunger.Position now returns a value from 0-25. No scripted math calculations are required.

4) Export Sound now works for all supported sound formats

5) EMReels now have overlapping transparency compatible with Randy's vp8.1 implementation

6) added Plunger.Visible property - this is not scriptable, but allows the plunger to not be rendered

7) Corrected key mapping for Add Credit 2 - you can now remap that key

8) Key Preferences screen is now properly fixed for accepting new keycodes - before if you clicked a bunch of buttons without pressing a key it looked messy with ???? in each clicked button field, now it is neater.

9) corrected crash to desktop error when table name was deleted from properties window - this error had existed since the inception of visual pinball

10) Reordering of table elements added - this will increase compatibility with ATI cards. This changes the rendering order of all table objects.
/RAMPS - needs more work

Textboxes are drawn first, EMReels are drawn second, Decals, Kickers, Acryllic Ramps are drawn last

11) Corrected issue with control points - left mouse button held down followed by right mouse button was not firing the left button release code routine, causing the undo buffer to skip all subsequent events.

12) Restored 16-bit display modes. Windowed mode uses your desktop color depth.

13) Translate now works for Textboxes and EmReels - select more than 1 item to get the option.

14) Updated compiler to VS Net 2008

VP 9.0.4 Changelog

December 6, 2009 - updated VP9 for your playing amusement. Approved by Nanotech Entertainment.

1) worked some more on the pinball wizard plunger "Z" axis
2) corrected attached joystick/gamepad interference with the player - For those game controllers please use software like Joy2Key
3) removed ball blurs, as well as frame updates from spinners, gates, and moving objects will be smoother with increased framerate.
4) restored functionality of RGB 0/0/0 for invisible gates, spinners, flippers, and bumpers
5) Corrected unitialized/unvalidated info for loaded flipper and textbox settings.
6) Removed requirement for msvcr71.dll

VP 9.0.3 Changelog

October 12 2009 - updated VP9 for your playing amusement. Approved by Nanotech Entertainment.

1) Edit Properties Pane status is now corrected. It has been broken since tech beta 5. It is persistent, meaning if it was visible last time vp was open, it will be visible next time you open vp. Edit/Options now works again.
2) VP8 Colored slingshots are now available. This is fully compatible with Randy's vp8 implementation
3) PlungerName.Position is now available to the script. This will provide a raw value of the mechanical plunger for Pinball Wizard and Cabinet users. Divide the returned value by .04 to get a number from 0-25. You can then base an emreel, wall animation, or other graphical representation on that number to custom animate the plunger object. You could also use the mechanical pinball wizard plunger as an entirely separate type of interface, with accurate pull strength - ie pool cues, balloon/rubber band/spring tension, I'm sure you can come up with more.
4) Nudge has been reversed. A right nudge - moving the machine to the left, moves the ball to the right. A left nudge, moving the machine to the right, pushes the ball to the left.
5) Ball decals work again.

VP 9.0.2 Changelog

1) Fixed command line options
2) Fixed windowed mode
3) Fixed checkboxes
4) Corrected reversed pinball wizard plunger
5) fixed crash bug on exiting unsaved tables
6) corrected version display
7) remapped ball diagnostic key from "B" to "O"

VP 9.0.1 Changelog

updated VP9 for your playing amusement. Approved by Nanotech Entertainment.
1) Fixed Crash on exit
2) enabled blinking lights
3) EMReels & Decals enabled by default

VP 9.0.0 Changelog

December 2 2008 - VP9 for your playing amusement. Brought to you by Nanotech Entertainment.
* Optimized for vpm.
* LOTR runs close to full speed with emulated sound.
* Ball blurring/stutters/etc have been greatly reduced.
* This still has lag/issues with 26 balls in play on Johnny Mnemonic.
* Translate locked triggers.
* Plunger and all other objects can be locked in the editor.
* Sound/graphic exporter/table unlocker.
* Dual display span mode support so vp has full control over the backbox display as well as table.
* Table rotation - 360 degrees possible.
* Full physics options for slope, oblique correction, flipper settings, ball dampening, scatter angle, friction, gravity.
* Table scaling support X+Y.
* Table bottom height - set the bottom of the table lower than the playfield surface for realistic holes.
* Scriptable exit table to desktop method.
* Reduced engine crashes.
* Support for Pinball Wizard Input Controller.
General chit-chat
Help Users
You can interact with the ChatGPT Bot in any Chat Room and there is a dedicated room. The command is /ai followed by a space and then your ? or inquiry.
ie: /ai What is a EM Pinball Machine?
  • No one is chatting at the moment.
      Chat Bot Mibs Chat Bot Mibs: roachie has left the room.