Earthshaker (Williams 1989)¶
A full VPW Premium toolkit build of Williams' 1989 Earthshaker, notable for advancing the collidable primitives methodology debate, driving nestmap resolution optimization research, and documenting the analog plunger bug. Collaborative build across tomate80, sixtoe, apophis79, benji084, redbone615, tastywasps, and friscopinball.
Build Story¶
Earthshaker tested using Blender-exported collidable primitives instead of traditional VPX walls for physics, which became a significant methodology debate. While visual-physical alignment was perfect, the approach made playtesting adjustments extremely difficult (requiring re-exports from Blender) and excluded physics-focused contributors who didn't know Blender. The team ultimately reverted to VPX walls for most physics interactions, keeping collidable primitives only for ramps where alignment is critical. Sixtoe rebuilt the entire physical table layout in VPX (version 016).
The playfield was scanned from a brand-new CPR (Classic Playfield Reproductions) playfield at 600 DPI using an HP 4670, yielding pristine results with no wear. Earthshaker's bold graphic style made it a good candidate for insert text recreation rather than scan preservation.
Table-Specific Details¶
Mechanisms & Hardware¶
- Earthquake Institute -- Building toy that moves up and down via solenoid. Lightmap opacity tied to the building's vertical position via script: when the building drops, its lightmaps dim proportionally (10% brightness at fully down position). Lightmaps behind the building are selectively dimmed even when it's up, since the physical building blocks light in that direction. Building baked in the "up" position with lights on.
Art & Visuals¶
- Insert naming follows the toolkit convention:
p32on(lit),p32off(unlit),p32bulb(physical bulb light), where the number corresponds to the ROM lamp number. - Insert text recreation debate: benji084 considers recreated text ideal because scan text edges are never sharp enough; tomate80 prefers scan imperfections for realism. Consensus: recreated text acceptable if matched to the original (e.g., "Arial Black" with -50 tracking for Earthshaker).
- Ball shadow Z-fighting fix: set ball shadow Z height to 1.01 VP units above the playfield surface to eliminate flicker.
- Insert text on flashers uses the duplicated flasher approach: one flasher for the insert glow, a second layered on top for the text image on a transparent background.
- AI upscaling applied by redbone615 using chaiNNer with layered AI models in Photoshop. Working files reached 2GB. GnR nestmaps upscaled to 14976x16384 with no FPS impact.
Physics & Gameplay¶
- The script originally used
BallSize = 25(legacy convention). Converted to the VPW standard BallSize = 50, dividing flipper-related parameters by 2. BallSize=25 with modern nFozzy routines produces incorrect physics. - Flipper mass (EOSTorque) at 2.5 confirmed as the VPW standard "almost since the beginning of flipper tricks." Setting to 0 makes flippers snappy but adversely affects trick behavior. The 2.5 value is tuned for realistic live catches, tap passes, and post passes.
Known Issues¶
- Analog plunger VPX bug: VPX internally checks if the keyboard "plunge" key is pressed and resets the plunge status even when an analog device is actively pulling. Workaround uses two timers to manage plunger state independently.
- Thin meshes (spinner wires, gate wires) discarded by the toolkit mesh optimization pass. Fix: disable "Optimize Mesh" for thin mesh objects. Spinner wires also need proper UV unwrapping for correct texturing at 4K.
Techniques Developed Here¶
- The collidable primitives vs VPX walls methodology debate was resolved here -- VPX walls won for most physics interactions
- Nestmap resolution research -- playfield width in the nestmap should be at least 2000px; GnR's effective width was only 2050px despite 8K nestmaps
- VPX 10.8 alpha mask obsolescence documented -- 10.8 eliminated the previous alpha mask hack for playfield insert holes
- Toolkit nestmap architecture explained -- 134 separate images for a single playfield (Bad Cats), packed into 8K nestmaps
- Inserts account for approximately 82% of render time and file size in toolkit tables
See Also¶
- 3D Art Pipeline -- scanning, nestmaps, AI upscaling
- Physics Tuning -- collidable geometry, BallSize
- Troubleshooting -- optimize mesh failures, ball shadow z-fighting