Skip to content

Team One (EM)

Team One is a 1970s electromechanical (EM) table built from scratch in VPW, demonstrating EM-specific techniques including score motor programming, rubber animation systems, and VR backglass implementation with EM reels. The project ran from September 2025 through February 2026.

Build Notes

EM Credits vs Add-a-Ball vs Novelty

Team One has no credit reel -- it is a novelty/add-a-ball game. Abra Ca Dabra is the replay version of the same game. The script uses the term "replay" but does not actually add credits. Options: change "Replay" to "Add-a-ball" in F12. Do not award add-a-ball points in novelty mode.

EM Reel VR Backglass

VR backglass with EM reels implementation:

  • Copy/paste core VR backglass code from Scampa123's 300 table (Spirit of 76)
  • Add EM reels, backglass light images
  • VR backglass mesh with inset reels
  • Fonts from B2S designer (not images) -- request font files separately

EM reels are notoriously difficult for VR implementation, but copying working code from existing tables helps significantly.

Flipper Travel Measurements

Flipper travel varies by era. UV damage on real playfields creates a "shadow" of the flipper down position. For 1970s tables, consult rothbauerw's research from Hot Shot (1973). Use reference videos and photos to measure actual travel angles.

Scripting

Score Motor Descending Order

EM knocker should rapid-fire when scoring large amounts (50k = 5 quick knocks). Default EM scoring starts at the ones place ascending, causing the knocker to fire slowly. Solution: refactor the scoring routine to count the 10,000s place first, then descend through reels. Reference Abra Ca Dabra for descending score implementation.

Rubber Animation Hit Intensity

Rubber jiggle system with 3 intensity levels:

  • Soft (1): Single vibration
  • Medium (2): Two vibrations
  • Hard (3): Three vibrations

Speed and duration tied to hit force. Short rubbers may need faster animation than long rubbers. Remove hit threshold from walls and implement in hit events for subtle jiggle on non-triggering hits. Rotate leaf switches slightly on hit for visual feedback.

Test animations with debugger commands: testanim 1/2/3 for soft/med/hard hits.

Drop Target Min Velocity

Prevent drop target sweeps while maintaining proper feel:

  1. Reduce DTMass to 0.2 or 0.1 (not 1.0, which saps energy)
  2. Add DTMinVel constant (5-10 value)
  3. Replace 0 in drop target code with DTMinVel

High mass reduces ball velocity normal to the target to zero, causing sweeps. Minimum velocity prevents soft taps from dropping targets.

DOF Code Management

For new table versions, use net-new codes E150+ to avoid conflicts with existing tables. Keep existing codes where possible for compatibility. Add separate drop bank codes for hit and reset events.

VR Plunger Animation

Sub TimerPlunger_Timer
    If VR_Primary_plunger.Y < 2192 then
        VR_Primary_plunger.Y = VR_Primary_plunger.Y + 5
    End If
End Sub

Sub TimerPlunger2_Timer
    VR_Primary_plunger.Y = 2061 + (5 * Plunger.Position) - 20
End Sub

The plunger will not animate in the live editor preview but works during gameplay.

3D & Art

Rubber Animation Texture Alignment

Segmented rubbers had UV seams showing during animation. Solution: model the whole rubber wrapping completely around posts instead of segments. This eliminates seam visibility and texture alignment issues.

Troubleshooting

VR Background Bleeding Through

Two fixes:

  1. FSImage should be set to none (not default)
  2. Background color must be pure black (not grey)