Skip to content

Guns N' Roses (Data East 1994)

A full Blender toolkit rebuild that produced the landmark playfield dimension validation discovery, advanced colored ramp rendering, and established the stuck ball velocity nudge and scoop ball-stack fix patterns. Collaborative build between niwak, bord1947, ebislit, sixtoe, apophis79, rothbauerw, iaakki, and others.

Build Story

The Guns N' Roses rebuild was primarily motivated by VPX 10.8's new tinted blurry transparency rendering for the table's colored ramps (green and yellow). The project uncovered that the "internet wisdom" for GnR's playfield dimensions was wrong, leading to one of VPW's most impactful discoveries about dimension verification.

Table-Specific Details

Playfield Dimensions

The stated playfield size of 25" x 51.75" (everywhere including VPX dimension manager) was wrong. Actual measured size: 23" x 46" (WMS Superpin, not DE widebody). Validated by comparing width/height ratios across 3 independent sources and physical measurement (583mm x 1166mm). Use circular features (pop bumper holes) as circularity validation -- if they render as ovals, the dimensions are wrong.

Art & Visuals

  • Colored transparent ramps (green and yellow) were the key motivation for the rebuild. VPX 10.8 added tinted blurry transparency rendering. The "JAM" lane guides had printed diffusion lines modeled with a stippled normal map texture in Blender.
  • Playfield scan vs photo stitch quality comparison: scanner stitches can introduce skew (EBisLit's stitch had visible left-side droop at slingshots). PTGui produced better stitches than manual Photoshop alignment. mlager8's calibration trick: photograph a printed grid pattern and use the Photoshop lens distortion correction on all subsequent images with the same lens/zoom.
  • Blender physics layer export concept: VLM.Physics collection with simplified collision primitives, exported once when layout is finalized, then visual-only exports for subsequent bake iterations.

Physics & Gameplay

  • Stuck ball velocity nudge: Standard pattern checking position bounds + height range + low velocity, then adding a small directional nudge. Reusable for any stuck ball location.
  • Scoop ball-stack fix: When multiple balls enter a scoop/subway, they stack and jam. Fix: loop through all balls, detect stacking via InRect + z-height comparison, identify top ball, reposition above subway before kicking. Handled up to 4 stacked balls.
  • Inlane speed limit: Ball speed unrealistically fast. Ported leftInlaneSpeedLimit/rightInlaneSpeedLimit subs from Johnny Mnemonic/Tommy. Real-world video showed wireforms are significantly slower IRL than in VPX.
  • Data East GI solenoid inversion: The solenoid going high turns GI off, not on. During boot/attract, GI solenoid is low (GI on), pulsing high for rhythmic blinking.

Known Issues

  • debug.print performance impact: Left-in debug.print in production code caused ball stuttering. Writes to both console and log file; in hot code paths, the I/O overhead causes visible frame drops. Caused a release hotfix (v1.0.2 to v1.0.3).
  • Tilt switch mapping collision: Tilt switch set to -7 mapped to the "Advance" cabinet button, causing service menu activation on tilt.

Techniques Developed Here

See Also