Skip to content

Radical!

A VPW mod of JP Salas' original Bally System 11 table (1990), developed with his permission. The mod added Fleep sounds, nFozzy physics, 3D inserts, new ramp textures, lighting updates, Flupper flasher domes and bumpers, and an integrated VR room by sixtoe. Only ~1,300 production units of the real machine were made. The VPW release shipped the prototype version (with VUK and extra slingshot), considered the "better" gameplay version.

Build Notes

Prototype vs Production Differences

  • Prototype: Hole in the Snake Run, VUK at top left, extra slingshot under bumpers
  • Production: VUK replaced with a single target in the Snake Run

The VPW release includes a script option to disable the upper sling (SlingshotThreshold set to 1000).

Disabling Upper Slingshot

No clean way to disable via script. Workaround: set SlingshotThreshold to 1000 on the wall object, effectively preventing it from ever triggering. Added as user option: DisableUpperSling.

Plunger Lane Fix

MetalGuide2 shape was corrected in RC1 to match the playfield art (previously ignored the PF entirely). After correction, the plunger can properly launch balls to the ramp.

Version History

  • v005: Initial physics and ramp work (benji)
  • v008: VR room (sixtoe)
  • v009-012: Insert work (iaakki)
  • v013: Flupper flasher domes
  • v014: Flupper bumpers
  • v015-016: Fleep sounds, lighting fixes
  • v017: Desktop POV, drop sounds, DisableUpperSling option
  • RC1-RC3: Final polish
  • v1.0: Release (Dec 2020)
  • v1.0.1: VPUniverse release (Jan 2024)

Performance Profile

On GTX 1080 at 2440x1440 with AO and SSR: 143-144 fps, CPU 13-15%, GPU 36-39%. Transparent elements consistently have the biggest proportional performance impact.

3D & Art

Flupper Bumper Scaling

Flupper bumpers (radius 45, height scale 90) were larger than Radical's original bumpers (radius 42, height scale 75), causing collision with a ramp. Fix: scale all elements in the 10-layer bumper by 0.94x.

Flupper Flasher Domes

8 domes were added but without full-screen flasher bloom images (too many flashers). The white flasher dome was challenging due to differences between the VPX model and the original plastic shape. Flasher elements should be on Layer 7.

VR-Compatible Ramp Textures

Refraction-based ramp textures don't work well in VR. Use simpler textures that look acceptable without being "over the top." Pizza Time's ramp texture was referenced as a good VR-compatible example.

Sideblade Materials

Sideblades looked like matte blue paint instead of reflective blue-shaded wood. Fixed by adjusting material reflectivity and changing color balance.

Drop Target Material

Changed from #000000 to #010101. VPX uses perfect black as a mask in some rendering contexts -- even a slight departure improves appearance.

GI Dynamics with DisableLighting

Added DL control to sideblades and ramps tied to GI state changes. Radical has GI events mid-game that create lighting dynamics. Reflections enabled on flipper bats look particularly good when lit by nearby colored flashers.

Scripting

VBScript Function Parameters

When Sub RandomSoundBallBouncePlayfieldHard(aBall) is defined, aBall becomes a local variable populated by whatever is passed. For hit event subs, pass the trigger object itself for audio spatial positioning:

Sub REnd3_Hit: RandomSoundBallBouncePlayfieldSoft REnd3: End Sub

Ball Drop Sounds (Modern Method)

Ball drop sounds integrated into the RollingSound() sub using Z-height detection:

BOT(b).VelZ < -1 and BOT(b).z < 55 and BOT(b).z > 27

Ball radius is 25, so sound plays when ball is >2 units above playfield. For VUK drops at higher elevations, extend the condition for the higher Z range.

Fleep Ball Rolling Sound

Ball rolling distinguishes playfield vs ramp based on ball Z height (threshold at z=10). Ramp rolling uses +50000 pitch offset and 10x volume.

Troubleshooting

"Variable Undefined PI" Error

When using nFozzy physics code, add Const PI = 3.14159 to the script (specifically in the flipper nudge code section).

Flasher Dome Black Halo in VR (Z-Fighting)

Flasher domes show a black halo/line in VR when the lit primitive becomes visible. Caused by two faces sharing exactly the same coordinates. No fix found -- considered a long-outstanding VR engine bug.

VPX Debugger Doesn't Work in VR

The VPX script debugger does not function in VR mode. Issues that only appear in VR cannot be easily tested without VR hardware.

Static Rendering Floating Lights in VR

Primitives with static rendering enabled cause floating lights in VR. Fix: untick "static rendering" on affected primitives.

B2S Backglass Performance

B2S causing frame spikes and stuttering. Fix: enable "Start this backglass in Exe mode" in B2S settings. Also increase skip frames from default (1 3 1) to higher values (995) if needed.

DOF Registry Causing Freezes

Table freezing at GI-on was caused by DOF-related registry entries. Fix: clean up DOF entries in Windows registry.

Backglass Lights Floating Over Table

Lights li57-li62 were floating over the playfield. These are backglass lights that should only appear in VR mode.

Ball Stuck Near Upper Flipper

Related to the ramp height/geometry issue -- the real machine has metal walls above the upper flipper to prevent this. The entire table is vertically squashed, a fundamental geometry issue.

Bumper Ring Drop Offset

Bumper plate was kicking past the playfield surface on activation. Fix: adjust the ring drop offset parameter.

VR Backglass Missing Material

Backglass primitive missing a material assignment, visible in VR competition corner.

Resources

AltSound Creation

Tutorial for creating AltSound from scratch: YouTube Tutorial. Use pinmame32.exe for automatic sound recording. Script can mute ROM sounds during recording.

ROM Text Editing

Radical's ROM has a checksum calculation -- editing characters causes failure to start. Pinball Browser doesn't work with this era of Bally ROMs. Need a custom patcher to fix checksum after text edits.

Test Automation

Automation played v017 for 2 hours, achieving 75 million with the first ball. Survives multiball. Only requires occasional manual plunger pull after ball locks. Useful for finding stuck balls and physics issues.