Skip to content

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
SolCallback(12) = "SolACSelectRelay"    'A/C Select 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:

Dim cRed: cRed = rgb(255,5,5)
Dim cRed_Ball: cRed_Ball = rgb(155,125,125)  ' Less saturated for ball

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:

SlingTimer.Interval = 20   ' Set interval FIRST
SlingTimer.Enabled = True   ' THEN enable

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:

vpmNudge.TiltSwitch = 9   ' Use positive switch number, NOT -7

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:

S10 m1000 MAX6000

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.