Batman (Data East 1991)¶
Single-table rebuild with extensive work on insert material tuning, playfield mesh debugging, VR backglass flashers, and layer organization. Built primarily by iaakki, sixtoe, cyberpez, and leojreimroc. Established the VPW standard for VPX layer organization and contributed key findings around playfield mesh physics bugs.
Build Story¶
Development ran from April through December 2021. Cyberpez handled the initial table rescaling, iaakki drove insert material tuning and ball shadow work, sixtoe managed physics and scripting, and leojreimroc implemented VR backglass flashers. The build exposed several VPX engine issues including playfield mesh loop cuts causing ball sticking and rollover switch holes allowing balls to fall through.
Table-Specific Details¶
Mechanisms & Hardware¶
- Data East tables of this era use latched relays on some solenoids that act like a "shift key" -- the same solenoid output does something different occasionally. Some backglass lights are driven by table lamps rather than dedicated flasher solenoids.
- ROM diagnostic mode: button 7 = advance, button 8 = toggle audits vs diagnostics, start = accept, flippers = cycle coils.
- Flugelheim trough: The museum trough for 3-ball multiball must be narrow enough to force single-file ball stacking. If too wide, balls sit side-by-side and jam when the kicker fires.
Art & Visuals¶
- Insert normal maps look good in VR (spoke reflections) but produce distracting single bright pixels in desktop mode at certain POV angles. Script option toggles normal maps, disabled by default, enabled only in VR mode.
- The playfield texture's alpha channel does not work in VPX -- cannot make parts transparent to show inserts underneath. Must use separate VPX lights above the playfield positioned over inserts.
- VR backglass flasher implementation uses flasher and GI lights on layer 10 with naming convention
BGFL#for flashers,BGGIBulb#for GI.
Physics & Gameplay¶
- Ball-in-Narnia recovery code loops through BOT array checking x/y/z positions. Lost balls detectable by rolling sound continuing after visual disappearance, or z-position far below 0.
Known Issues¶
- VR room primitives left loaded (VRRoom=1) causes 20-40 FPS loss even in desktop mode.
- BlendDisableLighting flares on Batcave primitive -- fixed by reducing BDL from 1.0 to ~0.5-0.77.
- Ball shadow depth bias conflicts with 3D insert primitives require extensive per-table testing.
Techniques Developed Here¶
- Layer organization standard -- Layers 1-3 collidable, 4-6 primitives/inserts, 7-9 lights, 10-11 VR/flashers
- Playfield mesh loop cuts causing ball sticking was discovered here
- Rollover switch holes allowing balls to fall through -- use transparency instead of geometry
- Insert material tuning workflow for the 3-prim system was documented by iaakki
- Depth bias system -- counter-intuitive: top element needs biggest negative number
- VR backglass flasher implementation pattern established here
- Table rescaling workflow -- select all + scale, then manually fix primitives
See Also¶
- Insert Lighting -- 3-prim tuning, normal map toggle
- Physics Tuning -- playfield mesh issues
- VR Development -- backglass flashers, VRRoom performance
- Troubleshooting -- ball-in-Narnia recovery