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:
- Reduce
DTMassto 0.2 or 0.1 (not 1.0, which saps energy) - Add
DTMinVelconstant (5-10 value) - 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:
- FSImage should be set to none (not default)
- Background color must be pure black (not grey)