Skip to content

Terminator 2: Judgment Day (Williams 1991)

Long-running collaborative build spanning 3.5 years and 25+ internal versions. Notable for documenting T2's real machine GI string assignments, Niwak's PWM integration, the GI-off flasher overlay hack, Skitso-style insert requirements, and practical insert color tuning. Released under g5k's name with VPW contributions credited.

Build Story

T2 went through extensive iteration: Skitso's initial lighting mod, benji's nFozzy physics integration, oqqsan's 3D inserts, Flupper bumper caps, Niwak's PWM support, tomate's separated target primitives, sixtoe's GI flasher overlay hack, and DaRdog's VR mega room. The project demonstrated both the strength and challenges of collaborative table building -- many hands and diverse skills, but version control and coordination were constant concerns.

Table-Specific Details

Mechanisms & Hardware

  • GI string assignments (from real machine test menu): 1. Insert Top (Backbox), 2. Insert Bottom (Backbox), 3. Playfield Right, 4. CPU, 5. Playfield Left. The manual wiring is incorrect -- confirmed by testing a real machine. String 3 is Playfield Right and String 4 is CPU GI inserts (not the reverse as manual diagrams suggest).
  • T2 flasher locations: Two small #89 bulbs behind a metal plate above the kicker hole (target flasher, solenoid 25), plus one large #89 for the left lock flashlamp (solenoid 20). The target flasher is also under the playfield, visible through the PF hole under the gunship toy.
  • PinMAME GI values: Controller.ChangedGIStrings returns 0-8 (not 0-255). Value 8 is unreliable, so scripts clamp to 7.

Art & Visuals

  • Skitso-style inserts: Require playfield reflections to be enabled in VPX settings, or they will not display. This is a VPX limitation that must be noted in release documentation.
  • Insert color values: Never use pure RGB values. Use offsets like RGB(255,32,0) so DisableLighting increases produce warm orange highlights. See the insert lighting guide.
  • GI-off flasher overlay hack: Without separate GI-on/off rendered textures, a dark flasher overlay covers the entire table. Individual flashers and lights punch through using higher depth bias values. Not ideal but produces acceptable results.
  • Insert text anti-aliasing: Use bicubic interpolation (not linear) when rotating text. In GIMP, change rotation smoothing to "nohalo." Avoid rotating text multiple times.
  • VR room optimization: The T2 VR topper model started at 250K polys and was reduced to 30K. An 8000x8000 64MB PNG floor texture was replaced with 4000x4000 4MB JPG. Target 6-8GB VRAM compatibility.

Physics & Gameplay

  • Slope tuning: Ball speed off the flipper matched PAPA tournament footage, but roll-back speed was slightly slow. Default slope 6.5-6.5 at difficulty 20 felt too fast. Adjusting to around 5.0-6.5 helped, though every real T2 plays differently.
  • PWM support: Niwak added PWM for lamps, flashers, and GI. When the T2 ROM speaks, it dims the GI -- a noticeable atmospheric effect requiring updated PinMAME.

Known Issues

  • Division-by-zero in nFozzy COR: Occurs when cor.ballvel returns zero during multiball drain. Quick hack: add +0.00000001 to denominator. Proper fix: set trigger hit heights to 150 and add RF.PolarityCorrect Activeball: LF.PolarityCorrect Activeball to drain_hit. See flipper trigger sizing.
  • PinMAME directory corruption: If all lights are on full (no ROM control), deleting the PinMAME directory and letting it regenerate has fixed the issue multiple times.
  • Ball halos from AO: Dark borders around the ball are caused by ambient occlusion. Disabling AO removes the artifact.
  • Playfield image swap limitation: Only works when launched via F6 (direct play). Normal launch prevents runtime PF image replacement.

Techniques Developed Here

See Also