Jurassic Park (Data East)¶
Jurassic Park (Data East 1993) is a VPW table build featuring an incredibly packed playfield, a complex T-Rex animated toy mechanism, CRUSE scanner playfield acquisition, Blender Toolkit VLM pipeline, and detailed physical layout verification against real machines.
Build Notes¶
Playfield Scan¶
ClarkKent provided a corrected CRUSE playfield scan at 600 DPI (~13000x28000px). He compared single-pass CRUSE scan vs stitched scan and aligned dimensions to less than 1mm tolerance. The original scan had a slight twist (top left and bottom right fractionally out), corrected by jigsawing sections and aligning individual bits rather than simple rotation.
Layered Playfield Mesh¶
For complex areas like the T-Rex head zone with multiple depth levels, use a layered playfield mesh with extrusions representing height changes. The T-Rex area has approximately 0.5" depth for the lowest cutout. Getting the VPX saucer depth correct matters -- too deep causes unrealistic behavior.
Blueprint Overlay Workflow¶
Export blueprints from the Blender toolkit -- a playfield-level view and optionally a ramp-level view. Two blueprints (upper for ramps, lower without ramps) is better because ramps hide elements underneath. Blueprint overlay in VPX editor allows visual alignment of physical walls to rendered walls.
Staged Flipper Support¶
Staged flipper support is built into some DE.vbs files. Not all post-1988 tables had staged flippers -- a spreadsheet exists tracking which tables support them. PinMAME had issues with DE staged flippers resolved in VPM 3.6 final and 3.7.
Data East Flipper Coils¶
Coil specifications use gauge-turns format: lower flippers 25-1800 (25 gauge, 1800 turns = 13.8 ohms), upper right flipper 23-900 (23 gauge, 900 turns = 3.8 ohms). Reference slope: 6-6.5, flipper strength 2700, PF friction 0.23.
Table Size¶
JP at 2K render was under 200MB. A Python optimization script further reduced file size by 65MB.
Scripting¶
T-Rex Animation¶
The T-Rex animation should use the tween method for smoother motion rather than direct position stepping. Converting from direct solenoid callback to tween resolves UseVPMModSol timing issues. The T-Rex position switches are timing-critical.
T-Rex ball float code conflicted with nFozzy physics because pslope was defined in both systems. Fix: ensure float code operates independently of physics slope definitions.
T-Rex lightmap animation: Create a Trex_Animate sub that copies x, y, z, objrotx, objroty, objrotz from each BakeMap primitive to associated lightmap primitives. Call in the frame timer immediately after bakemaps move.
Kickball Code Pattern¶
Always release the ball variable after kicking:
Sub sw_Hit : Set swBall = ActiveBall : End Sub
Sub sw_UnHit : Set swBall = Nothing : End Sub
' In kick sub: check "If Not swBall Is Nothing" before kicking
' After kick: Set swBall = Nothing
Without this, ball search or unexpected solenoid firing causes balls floating, growing large, or appearing in wrong locations.
GI Relay Systems¶
Data East uses relays for GI (instant on/off, not PWM dimming). One benefit: no bulb flicker with LEDs.
Ramp Diverter Initialization¶
The diverter was rendered in the "on" position in Blender, so VPX showed it as "on" by default. Fix: initialize the diverter position in script to match the resting/off state.
UpdateBallBrightness¶
When GI goes off, balls should get darker to simulate loss of ambient light. Not automatic -- must be implemented per table. Referenced in VLM tutorial video #8.
3D & Art¶
T-Rex Export and Animation Setup¶
T-Rex primitive export: default position must face directly down-table. ObjRotZ rotates off-center for correct bend-down motion. Head and jaw share setup but have different origin points. The plastic collar must be aligned with the head in the Blender file. Jaw close angle: objrotx offset approximately -10 to -12.
Blender Toolkit Mod Collections¶
To add alternate parts (like alternate sling plastics): create a new collection inside vlm.bake named "mods", place alternate parts there. In VLM settings, name the plastics to toggle visibility.
Bumper Cap Modeling¶
For raised logo detail: knife-projecting an SVG onto cap geometry works but is difficult. The center material is smooth on top, textured inside, with slightly raised black image. The surrounding ring is "frosted" not triangulated. Decimate modifier needed for 3D scan reduction.
3D Scan Decimation¶
T-Rex scan reduced from 180,000 tris to 5,400 tris using Blender decimate modifier. UV unwrapping done manually.
TonyMcMapface Tonemapper¶
With TonyMcMapface/AGX, 2700K (physically correct) works properly instead of needing 3000-3200K with Filmic. Red inserts blow out less. Custom LUT available: ColorGradeLUT256x16_1to1gam0.7vibr100.png.
Backface Removal¶
Setting of 40 degrees was causing missing faces on domes and the T-Rex when it bends. Increased to 45 degrees for domes. Objects that animate and reveal back side need "no optimization" ticked. Objects visible from below in VR (like pteranodons) also need backface removal disabled.
Amber Block with Mosquito¶
The real amber has a flat front with mosquito relief on the backside. Use a normal map on the back face. Assign a refraction probe with high thickness. Real machine has both a lamp (2 bulbs) and a flasher behind the amber.
Insert Masking¶
Dark pixels around white outlines indicate imperfect transparency masks. Black paint on inserts should not be transmissive -- it's completely opaque. Reference real machine videos (not photos) for insert brightness.
Pteranodon Wobble¶
Both pteranodons need correct pivot points (not 0,0,0) -- they animate using rotx and roty. Wobble randomization needed to prevent sync. Shake dinos when shaker motor runs.
Flasher vs Insert Lightmap Naming¶
Lightmaps for playfield insert flashers must use "F" prefix (e.g., F5), not "L" prefix. "L" causes them to fire on lamp callbacks instead of solenoid callbacks.
Troubleshooting¶
Ball Visible in Subway¶
Check "hide objects behind" for the playfield primitive to hide the ball rolling through subways beneath the playfield.
Stuck Balls¶
Ball getting stuck in T-Rex recessed area: add a mild invisible slope on the recessed area to funnel into the hole. Multiple stuck ball locations required precise wall alignment to blueprint overlays.
UseVPMModSol T-Rex Conflict¶
UseVPMModSol=2 caused T-Rex to bob up and down. Setting to 0 fixed it. Root cause: timing/tolerance in solenoid callbacks conflicting with animation sequence.
No Balls / Startup Issues¶
Multiple causes: (1) Need VPM F1 "Skip Pinball Startup Test". (2) jupk_600 is child ROM requiring jupk_513 as parent. (3) Difficulty outside 0-100 range. (4) Delete NVRAM after updating from older version. (5) Requires latest VPinMAME and VPX 10.8 RC3+.
Timer Stutters and FastFlips¶
Timers fixed in v029. v030 switched to SolCallback2 supporting FastFlips but broke upper right flipper on DE tables. Reverted in v031. VPX later integrated a better solution.
Game Knowledge¶
Layout Characteristics¶
JP has an incredibly packed playfield with practically zero dead space, which is why it plays fast. The T-Rex toy mechanism is sensitive and prone to going wrong. The upper right saucer rejects balls frequently even on real machines. The mission scoop eject can lead to drains -- this is accurate to real play. Backhanding the ramp from right flipper IS possible on real machines.
ROM 6.00 Unofficial Mod¶
From PinballCode.com (jupk_600): adds random mode start, closes spammable modes, balances scoring, makes wizard modes worth more. Holding plunger button while starting skips T-Rex diagnostics.
Physical Verification Process¶
- Watch PAPA/tournament gameplay videos for shot behavior reference
- Cross-reference flipper strength with real coil specifications
- Test scoop eject catchability
- Verify backhand shot possibilities against Pinside threads
- Go through solenoid test menus
- Check inlane slowdown behavior
Resources¶
- Sketchfab user "dark0verseer" has original JP VPX table models
- Insert library standardization needed for unique table-specific shapes
- GNR blend file has some unique inserts usable for JP