Spider-Man (Stern 2007)¶
Complete pre-toolkit SAM build with years of incremental updates. Notable for SAM GI implementation, RGB color mixing from lamp states, and wire ramp polygon reduction. Built by sixtoe, apophis79, and iaakki.
Table-Specific Details¶
Mechanisms & Hardware¶
- SAM (Stern) GI is a single on/off relay, not dimmable zones. djrobx confirmed this is how real hardware works. Do not implement per-zone dimming as on WPC tables.
- GI changes color during gameplay (red for Venom, green for Green Goblin). Implementation reads lamp states from PinMAME indicating active mode, then sets GI color. Critical: add a 2-second timer delay between color changes to prevent flickering during rapid lamp state transitions.
Art & Visuals¶
- Flupper insert tray system: insert opacity in the 0.995-0.999 range makes a dramatic visual difference in tray visibility -- tiny adjustments matter enormously.
- Insert light falloff power must NOT be 1 -- use 3-4 for proper ball illumination. Use non-mono RGB values:
255,1,1instead of255,0,0for red. - Global flasher technique: a full-table-sized VPX flasher with no image (just color and additive blend) creates table-wide color wash for dramatic mode transitions.
- Wire ramps reduced from ~70K to ~17K triangles with no visible quality difference via Blender decimation with preserved UV coordinates.
- VR flashers must not extend beyond cabinet edges -- they appear as floating bright discs in mid-air. Keep within cabinet bounds.
Physics & Gameplay¶
- Ball spin causes unnatural inlane speedup due to friction force from angular momentum. Fix: in inlane switch
_Hit, addActiveball.angmomz = 0and optionally reduce velocity:Activeball.vely = 0.8 * Activeball.vely. Only trigger on fast balls. - Sling post airballs from target bouncer: remove offending posts from
dPostscollection and create dedicated_Hitsubs with dampening but no target bouncer. Cleaner approach:NoTB(No Target Bouncer) collection. - Staged flippers: split combined flipper solenoid subs into separate
SolRFlipperandSolURFlippercallbacks. Do NOT putStagedFlipperschecks inside Sol callbacks -- those belong only in KeyDown/KeyUp. - Ramp profile humps at segment junctions launch balls into the air. Rebuild physical ramp walls with gentle radius curves at height transitions.
Known Issues¶
vol(activeball)returns 0 in solenoid callbacks because there may be no active ball in the solenoid context. Use fixed volume value instead.FadeDisableLightingmust be called BEFORENFadeLor fade timing breaks.- Multiple primitives in a single solenoid callback: just add extra TransZ lines in the timer sub.
Techniques Developed Here¶
- SAM GI implementation -- single relay approach documented here
- Wire ramp polygon reduction -- 70K to 17K triangle method
- Global flasher color wash technique for mode transitions
See Also¶
- GI and Flashers -- SAM GI, RGB color mixing, flasher techniques
- Physics Tuning -- target bouncer exclusion zones