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:
Ball Drop Sounds (Modern Method)¶
Ball drop sounds integrated into the RollingSound() sub using Z-height detection:
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.