Space Station¶
A Williams System 11 table built with modern VPW techniques including the Blender toolkit, EXR lightmaps, and innovative features like shaped insert lights and dual GI color systems. Development from October 2025 through early 2026 involved tomate80 (Blender modeling/rendering), apophis79 (scripting), robbykingpin (scripting/sound), iaakki (physical measurements), and others.
Build Notes¶
Playfield Scanning and Stitching¶
Apophis79 scanned the playfield at 600dpi in sections. Bord1947 stitched the scans, yielding final dimensions of 20.25" x 42.0" with a 0.53" thickness.
Physical Measurements from Real Machine¶
Iaakki provided precise measurements: drop target dimensions (25mm wide x 10mm deep), various ramp entry/exit heights, post heights, and sideblade heights. These calibrated all prim heights and physics objects.
Space Station Toy Animation¶
The center toy has 4 rotational positions (0, 90, 180, 270 degrees) controlled by ROM. A diverter mechanism routes the ball based on the toy's current position:
- Use timer-based rotation animation with fixed step angles
- The diverter is a separate collidable prim that rotates with the toy
- Physical walls define ball routing for each position
- Animation speed should match the real motor's rotation time
Fleep Sound Customization for System 11¶
Keep the implementation close to default Fleep structure. Flipper sound parameter division factor may differ between tables. BOP serves as a reference implementation for adding System 11-specific sounds.
3D & Art¶
Blender Modeling Workflow¶
Tomate80 modeled all playfield parts in Blender:
- Model at real-world scale, scale on VPX import
- Use playfield scan as a reference plane for accurate positioning
- Group related parts (plastics, metal rails, rubber rings) into collections
- Export each collection as a separate OBJ
Insert Rendering with Shaped Lights¶
Innovation: use Blender toolkit area lights shaped to match each insert's contour (arrow, circle, diamond, etc.). The light shape and position must match the physical insert for accurate light bleeding and glow patterns.
Colored Transparent Ramp Material¶
For colored transparent ramps (Space Station has dark smoke-colored ramps), use VPX's refraction color material property rather than tinting the texture. Discovered from Guns N' Roses table by niwak. This preserves proper light interaction.
Flasher Dome Two-Layer Approach¶
- Inner layer: Opaque material for base dome color and light blocking
- Outer layer: Transparent material for glossy surface and reflections
Blender 4.2.2 Exposure Parameter¶
New exposure parameter for point lights extends the falloff distance without proportionally increasing near-field intensity. Better control over GI and insert light illumination range.
EXR vs PNG Lightmap Quality¶
EXR retains full dynamic range -- bright areas maintain vibrancy and color accuracy. PNG clips highlights, causing washed-out bright areas. AI upscaling of nestmaps loses HDR data, so it's only suitable as a testing shortcut.
AGX Tonemapping¶
AGX preserves color saturation in highlights better than Reinhard or Filmic. Produces more natural-looking bright areas (flashers, inserts) without desaturation.
Nestmap Brightness for Dark Playfields¶
If playfield appears too dark, brighten nestmap0 by clipping black levels by ~25 and slightly boosting brightness/saturation. VPX doesn't handle pure #000000 well in textures, especially for reflections.
Playfield Reflection Probe Scaling¶
Reflections appeared faint because bm_playfield mesh X/Y scale values were not 1.0 in Blender. After fixing to 1.0 and re-exporting, reflections appeared properly.
Reflection Tradeoffs
Ball reflection strength and playfield reflection strength are coupled through the same probe, making independent tuning difficult. Enabling all reflections renders everything twice -- significant performance cost.
Scripting¶
Dual GI System (White + Green)¶
Space Station uses ROM-controlled dual GI:
- Normal GI: White/warm bulbs for standard play
- Green GI: Activates during multiball via solenoid-controlled relay
Requires two separate GI light collections toggled by solenoid callbacks. The relay is an AC Select relay (part #5580-09555-01), same as Whirlwind.
Ball Color Tinting Based on GI State¶
During multiball, the ball can be tinted to match the active GI color:
Use position-based scaling: reduce tint near flippers, in plunger lane, and on upper playfield where GI is weaker.
GI Color Temperature Selector¶
User-selectable GI color temperature options (3000K, 3500K, 5000K) in the F12 tweaks menu. RGB values defined in script.
Slingshot Timer Bug¶
Set timer interval BEFORE enabling:
Enabling first causes the timer to fire immediately with a default/zero interval.
TiltSwitch Negative Value Bug¶
Setting vpmNudge.TiltSwitch to a negative value (e.g., -7) causes table freeze. Use the positive switch number:
Troubleshooting¶
VPinMAME PWM Solenoid Regression (S11)¶
A VPinMAME regression caused System 11 switched solenoids to not turn off properly with PWM. Fix: VPinMAME commit 62e6b34.
Cabinet Safety
For cab users: always use hardware-level solenoid release timers (Pinscape, PinOne, or solenoid saver) regardless of software state. Stuck solenoids can cause physical damage.
VRMode Initialization Order¶
The SetBackglass call was protected by If VRMode, but VRMode was set too late in initialization. Fix: ensure VRMode is set BEFORE Table1_Init runs.
DOF Beacon Always-On¶
DOF config used m1000 (minimum run time) without a maximum. Fix: add MAX parameter:
VPinMAME Version Compatibility¶
- VPM 3.6 (Jan 2025): Safe for Space Station, PWM works
- VPM 3.7 pre-release: Mixed compatibility
- VPM 3.7-46: Confirmed working for both S11 PWM/DOF and SAM audio
Hardware Notes¶
Relay Sound Accuracy for System 11¶
Critical distinction for sound design:
- Flashers are driven by MOSFETs (solid-state, silent) -- do NOT add relay click sounds
- GI switching uses actual mechanical relays that produce audible clicks
- Always check schematics to determine which outputs use relays vs MOSFETs
Game Knowledge¶
Ball Search and Lock Exploit¶
If plunger switch (sw43) is not working, the ROM triggers ball search prematurely, kicking balls out of docks. Fix (v1.0.2): repaired plunger switch so ball search is suppressed when ball is in shooter lane. System 11 quirk: flippers are not disabled between balls/players.
Pop Bumper Sizing¶
The collidable ring should match the real switch/ring diameter (~3 3/8"), not the larger cap. This makes VPX bumpers appear smaller than most other tables, but is physically accurate. Over-sizing bumpers (as in 99% of VPX tables) makes gameplay unrealistically easy.
Best Practices¶
VPX Image Management¶
- Convert larger images to WebP format for significant size reduction
- Identify and remove duplicate images (some may appear unused but are swapped via script)
- DGrimmReaper cleaned up images, reducing file size by 11MB+
VPX Table Audit¶
Audit reported warnings about timers below 16ms (CorTimer at 10ms, etc.). Also: 192MB images expanding to ~2196MB GPU memory, 3.2M primitive faces using 242MB GPU memory.
Playfield Reflection Performance¶
Full reflections require enabling them on both bm_parts AND lightmaps. Lightmaps render transparent in reflections (showing backfacing artifacts). Practical approach: enable limited bm_ reflections only, skip lightmap reflections.