Skip to content

GoldenEye (Sega 1996)

A complete VPW Lite update from physics integration through release, rich in insert techniques, GI ramp texture differencing, timer performance optimization, and the altsound-in-table concept. Collaborative build between apophis79, oqqsan, sixtoe, fluffhead35, iaakki, astronasty, and others.

Build Story

GoldenEye was a Lite project focused on physics integration, sound, and insert lighting upgrades without a full toolkit rebuild. The project produced the worst FPS of any VPW table (~80 FPS on modest hardware) before timer optimization doubled it to 150+, establishing important timer performance standards.

Table-Specific Details

Mechanisms & Hardware

  • Satellite dish ball lock rebuild: The original used a fake ball lock (ball image swapped to "swirly" texture). Rebuilt with a real ball in an invisible kicker inside the dish, rotating naturally with the mechanism. Kicker releases on ROM events. This eliminated the visual artifact of ball texture changing.
  • Plunger lane stuck ball: A collidable post near the exit caught the ball on bounces back, and the ball release gate poked outside the lane wall. Fix: realign walls to match post positions and move gate inside the lane.

Art & Visuals

  • GI lights on negative-Z surface: All GI lights were assigned to a surface at z=-18, making them render below the playfield. Fix: remove the surface reference from all GI lights.
  • Playfield material shininess: Set to 1.0 from the original table, causing dark outlines around insert cutouts when GI was on. Reduced to 0.1 (matching Black Mamba settings) to eliminate the contrast.
  • Insert bloom dual-light setup: Under-playfield white light for core illumination + over-playfield colored light with very dark full-on color to prevent cloudiness. Naming convention LL001/LLb001 enables VPX auto-increment on copy-paste.
  • Insert Z-position at -0.1: Prevents z-fighting with the playfield surface when inserts sit at exactly z=0.
  • GI ramp texture differencing: Technique to extract a fadeable GI layer from pre-baked ON/OFF ramp textures using Difference blend mode in GIMP/PSP. The difference image is applied as a separate primitive with Lampz-controlled opacity for smooth GI fading, enabling dynamic color changes.

Physics & Gameplay

  • Playfield slope from manual: 6.5 degrees designed; 6.2 degrees felt better in VPX. Set min and max slope to the same value during testing.
  • Right ramp nearly unshootable due to metal bracket primitives not flush with ramp entry. Cross-referenced the Sega manual to verify brackets should be totally flush.

Known Issues

  • B2S dependency bug: lamptimer_timer sub had a guard checking for B2S being active -- if B2S was off, the entire lamp update loop was skipped, breaking all inserts. Fix: remove the B2S guard.
  • Timer interval performance: Multiple timers at interval = 1 (1ms) with GetBalls calls caused ~80 FPS. Changing to interval = -1 (per-frame) doubled FPS to 150+.

Techniques Developed Here

See Also