Lethal Weapon 3 (Data East 1992)¶
Full build lifecycle across two major versions (v1.x and toolkit-upgraded v2.0, 2021-2025) led by apophis79 with tomate80 (Blender), sixtoe, iaakki, niwak, and sheltemke. Notable for the comprehensive table modernization checklist (v1.x to v2.0 upgrade), wire ramp polygon optimization debugging, dual-function insert identification from DE schematics, and the mirror backpanel implementation matching the real machine.
Build Story¶
Lethal Weapon 3 underwent a major modernization from its v1.x release to v2.0, establishing the upgrade checklist that became the standard procedure for modernizing older VPW tables. The toolkit conversion also uncovered a critical performance insight about wire ramp polygon counts on this table.
Table-Specific Details¶
Mechanisms & Hardware¶
Dual-function inserts: Some LW3 inserts are driven by two separate lamp circuits of different power levels -- a standard lamp AND a flasher circuit. In the toolkit, these need both an insert lamp in the inserts collection AND a separate flasher lamp in the flashers collection. In VPX, each gets separate lightmaps: the insert via vpmMapLights and the flasher via solenoid callback.
ICSI building explosion: The building "explosion" effect uses 4 flashers (f9/9R) on a separate power board using '89 flasher bulbs -- 2 inside the building toy, 2 at playfield level under the plastic.
Mirror backpanel: Unlike Last Action Hero (which does not have one), LW3 actually has a mirror backpanel on the real machine. Implemented with planar reflection probes and made the default (on). Lightmaps near the back panel in a MirrorLMs collection have ReflectionEnabled toggled as a group.
Art & Visuals¶
Wire ramp polygon optimization: Multiball stuttering was traced to unremodeled wire ramp meshes from the original table (500K triangles). Remodeling wire ramps from scratch improved frame drops during multiball from 45-47fps to 54-55fps. The root cause -- exponential cost of overlapping alpha-blended meshes across multiple lightmap layers -- was first documented here.
The GI ball shadow rule (grouped GI should not cast ball shadows) was documented during this build -- see Per-String Shadow Control. The Blender 4.1 soft falloff restoration was also noted here -- see Material Version Compatibility. For GI naming length considerations, see Naming and the 31-Character Limit.
Physics & Gameplay¶
The metal hit threshold rule (threshold 2, not 0.5) was established during this build -- see Table Validation Checklist.
Multiball drain detection failure: When two balls drain almost simultaneously, the ROM can fail to detect one -- allowing play to continue with fewer balls and awarding unearned jackpots. Fix: make the drain gap smaller for single-file passage and increase drain kicker strength.
Known Issues¶
Standalone VPM .hidden property: On LW3, .hidden must be set to 0. The .hidden=1 default prevents the DMD from displaying on standalone VPX. See Standalone VPX Considerations.
Playfield texture distortion: The texture appeared oval (circles as ovals), but actual playfield dimensions were correct at 20.25" x 46". The distortion is in the texture image itself, not a geometry error.
Table Modernization (v1.x to v2.0)¶
The v2.0 upgrade followed apophis79's comprehensive modernization checklist, covering script reorganization, PWM migration, insert light setup via vpmMapLights, nFozzy physics integration, Roth targets, physical trough conversion, and Tweak menu addition. This checklist became the standard procedure for upgrading any older VPW table -- see Release Checklist and Table Validation Checklist for the current versions.
Techniques Developed Here¶
- Table modernization checklist -- comprehensive upgrade path documented here
- vpmMapLights for insert light setup established as the modern standard here
- Grouped GI should not cast ball shadows rule documented here
- Wire ramp polygon performance -- exponential cost of overlapping alpha documented here
- Blender 4.1 compatibility -- soft falloff restoration documented here
See Also¶
- Last Action Hero -- parallel Data East build with shared flasher mapping techniques
- Jurassic Park -- Data East table with similar schematics workflow
- Hook -- earlier Data East build