Identity and evidence precedence
This definition covers non-LE drivers xmn_100, xmn_104, xmn_105, xmn_130, xmn_150, xmn_151, and xmn_151c, using Stern model I-00D1 and IPDB 5822. Those revisions use one physical Pro playfield; xmn_151c only changes ROM colorization. The authenticated XMen FS (physmod5).vpt table running xmen_150 is ground truth for controller callbacks, object placement, playfield labels, mechanisms, and active-high rendering behavior. The independent known-working Pro script corroborates public addresses. The combined Stern manual supplies common SAM service topology and shared assemblies but its edition-specific lamp and low-current output charts describe the LE, so those labels are deliberately not transferred to the Pro. Pinned PinMAME source governs driver identity, SAM serialization, and the native 128x32 four-bit DMD.
Controller topology and initial state
The SAM switch matrix is public 1-64; dedicated cabinet inputs occupy 65-72, 81-88, and -7 through 0; DIP inputs are 1-8. The four-ball trough initializes switches 18-21 closed, and switch 22 is its jam opto. Standard lamps are public 1-80 and GI is public 0. Main outputs are public 1-32. The Pro does not install the LE auxiliary eight-transistor board or its public 51-58 output range.
Lamps and physical placement
All public lamp addresses 1-80 are explicit in the JSON. The authenticated table proves physical inserts at 3-25, 28-31, 33-38, 43-57, 60-62, and 65-71; the script also drives reflection object f59b from public lamp state 59 through FlashAR, but no FadeL insert or physical socket is identified, so address 59 remains an explicit unresolved conflict rather than being called unused. Every otherwise used lamp is one physical insert: the table's lN and lNa objects are duplicate render layers at the same socket, not two bulbs. The primary lN coordinates are retained only as raw VPX candidate locations for review; they have not been promoted to schema-v2 spatial placements. Pinned vpxtool git:v0.33.3 gamedata proves exact bounds 959 by 2162. A full vpxtool extract was also attempted through the repository's exact-byte .vpx copy shim, but vpin-0.26.4 panicked with exit 101 before writing any item JSON; its hash-locked failure record and logs are retained and referenced by reports/spatial/stern/x-men-pro-2012.json. Consequently the raw lamp positions still come only from the lossy ad-hoc inventory, not a reproducible VPXTool coordinate export. The eventual canonical player view is x=0 left, x=1 right, y=0 rear/backglass, y=1 apron. Semantic labels come from the table's playfield art. Descriptive location labels are retained for otherwise unlabeled red route arrows and the two Magneto completion medallions so an author can identify them without inventing rule terminology. Lamps 11 and 38 carry left/right Nightcrawler feature artwork but are ordinary static inserts on the Pro, not moving toys. Lamp callbacks and GI 0 are active-high in the proven scripts.
Coils, flashers, and the upper flipper exception
Outputs 1-18 cover the common trough, launcher, eject, magnets, lock, optional shaker, pops, three physical flippers, slings, and the Pro table's output-17/18 flasher render groups. Outputs 19, 20, 23, and 30 are unused on the Pro; in particular there is no spinning Magneto disc motor. Output 21 flashes Wolverine, 25 the pop area, 26 moves the orbit diverter, 27 is a center-left red flasher, 28/29 drive backpanel render groups, 31 is an unresolved Pro flasher candidate, and 32 is the Wolverine playfield magnet. The combined manual's low-current chart and drawing are explicitly LE-only and are not used to assert Pro labels or quantities for outputs 17, 18, 22, 28, 29, or 31. The LE evidence is itself inconsistent for Q18: page 60 has no X2 marker, while page 61 draws two 18 callouts. The exact Pro table supplies render candidates for these addresses, but render-object count does not prove physical socket identity or multiplicity. Those raw coordinates remain review candidates from a lossy, unavailable ad-hoc extractor, not reproducible physical socket evidence. Separately, reflection object f59b is driven by public lamp address 59, creating the explicit script-versus-physical-inventory conflict documented in the JSON.
The physical upper-right flipper is output 12 with staged dedicated button 86/D15. The legacy table comments out callback 12 and rotates its upper flipper object together with lower-right output 16. That is a table shortcut, not machine wiring; authors must implement the physical 12/86 channel pair. Lower flippers are outputs 15/16 with buttons 84/82 and normally-closed EOS inputs 83/81.
Magneto lock, Wolverine, and ball devices
PWM output 4 controls the Magneto playfield magnet. Output 26 routes the orbit shot into the four-position vertical Magneto lock. Occupancy switches are 53 at the bottom, followed by 38, 39, and 40 at the top; outputs 6 and 7 operate the linked up-post and latch mechanism. Wolverine is a passive wobbling bash toy on switch 36 plus a separate output-32 playfield magnet. The proven table disables center-grab so the magnet deflects the ball rather than pinning it rigidly.
The Power Scoop holds a ball at switch 4 and ejects with output 3. The left vertical up-kicker holds at switch 55 and output 5 sends the ball onto the left ramp. Output 2 auto-launches from the shooter-lane trigger at switch 23 while the cabinet also retains a manual plunger. Pops use output/switch pairs 9/30, 10/31, and 11/32; slings use 13/26 and 14/27. The passive Cyclops spinner pulses switch 47. The exact table represents switches 18-22 through bsTrough.InitSw 0, 21, 20, 19, 18, 0, 0, 0 rather than separate VPX switch objects. Its BallRelease kicker is an assembly/eject anchor, not five socket positions, and the Drain object is not evidence for any one trough switch. Manual page 56 supplies the matrix labels and wiring; the page-57 switch-location drawing groups 18-22 into one trough assembly without individual socket centers. The four-ball inventory and 18-21 order are known, but the exact physical positions for 18, 19, 20, 21, and jam 22 remain unresolved.
Important Pro differences
The Pro omits the LE motorized Iceman Ice Slide, both latched Nightcrawler pop-up mechanisms, the spinning Magneto disc, red/blue/white subtractive color-GI channels, and auxiliary driver board. It retains two printed Nightcrawler lamp features and ordinary Iceman inserts, which must not be mistaken for the missing LE mechanisms. The Wolverine magnet moves from LE public 51/physical Q41 to Pro main output 32. Output 27 is a flasher instead of the LE Iceman motor, and output 31 is a different red feature flasher. Never apply the combined manual's LE lamp table or these LE output labels to a Pro recreation.
Spatial retrofit: fail-closed evidence gates
The exact Pro VPT and pinned vpxtool git:v0.33.3 gamedata establish the coordinate convention. The generated, hash-pinned audit at reports/spatial/stern/x-men-pro-2012.json proves left=0, top=0, right=959, bottom=2162, with normalized player-view coordinates x=0 left/x=1 right and y=0 rear/backglass/y=1 apron. Its full VPXTool item extraction attempt failed reproducibly with exit 101 before writing any files, so the raw candidate positions below remain sourced only from the lossy ad-hoc inventory and are not promoted. Render-only lN/lNa pairs are collapsed semantically to one physical insert. That evidence is not sufficient to promote this definition because required physical inventories do not reconcile:
- GI output 0: the Pro extraction has no visual GI
LightData objects or individual GI socket objects; its GI collections are controller/render structures. The manual pages 109-111 are explicitly X-MEN LE GI maps and cannot provide Pro geometry. GI 0 therefore remains a semantic controller output with no spatial record; internal_nonvisual is not asserted.
- Flasher outputs 17 and 28: the exact Pro table drives two output-17 render objects and three output-28 render objects, but render-object count is not physical socket count. The LE-only page-60 chart and page-61 drawing happen to show Q17 X2 and Q28 X3, but that edition-mismatched evidence is retained only for comparison and is not transferred. Pro physical identities, multiplicities, and canonical positions remain unresolved.
- Flasher output 18: the exact Pro table drives raw candidates
f118 and f118b together at different coordinates. The LE-only manual contradicts itself: page 60 gives Q18 no X2 marker, while page 61 shows two 18 callouts. Neither LE page establishes Pro identity or multiplicity, and the render candidates remain non-canonical.
- Flasher output 22: the exact Pro table has only raw candidate
f122 at x=503.5, y=288.0. The LE-only page-60 Q22 X2 Magneto row is not transferred; Pro physical identity, multiplicity, and canonical geometry remain unresolved.
- Flasher output 29: the exact Pro table has distinct candidates
f129 at x=843.5, y=94.0 and f129a at x=639.5, y=90.0. The LE-only page-60 Q29 X3 backpanel row is not transferred; Pro physical identity, multiplicity, and canonical geometry remain unresolved.
- Flasher output 31: the combined manual's Q31 bottom-arch
(X2) row is LE-specific and rejected for the Pro. The exact Pro table has only raw candidate f131 at x=527.5, y=472.0, so Q31 Pro physical identity and multiplicity are both unresolved; no second Q31 socket is established.
- Trough switches 18-22: the known-working Pro script uses
bsTrough.InitSw 0, 21, 20, 19, 18, 0, 0, 0 and pulses jam switch 22; the exact table exposes BallRelease at x=814, y=1862.0625 and Drain at x=462.03125, y=2095.5, not five switch sockets. Manual page 56 supplies matrix labels and wiring, while page 57 groups 18-22 as one trough assembly without individual centers.
The missing evidence is exact edition-matched Pro physical identity, multiplicity, and geometry for outputs 17, 18, 22, 28, 29, and 31; exact Pro GI socket geometry; and each of trough switches 18, 19, 20, 21, and jam 22. Those records and the lamp-59 script-versus-physical-inventory conflict keep the Pro definition partial with both spatial_placement and unresolved_conflicts missing. No shared BallRelease anchor, duplicated flasher point, LE chart count, LE GI map, render-only layer, or unverified socket is promoted as a physical socket. The spatial audit retains truthful hashes for the failed VPXTool extraction, rendered/OCR-selected manual pages, and the raw extractor's reproducibility limitations for the next evidence pass.
The semantic definition remains useful for controller bindings, physical inventory, causality, variant boundaries, and recreation notes. An author may construct the known mechanisms, but must supply the missing socket evidence before enabling spatial placement and changing coverage to author_ready.
Author construction checklist
- Build the four-ball trough, shooter/manual plunger, auto launcher, Power Scoop eject, left VUK, four-level Magneto lock and diverter, two playfield magnets, passive Wolverine bash toy, three flippers, three pops, two slings, Cyclops spinner, seven standup/bash targets, two molded ramps, inner loop, and both outer orbits.
- Bind every public input and output from the JSON, including explicit unused lamp and coil channels, unresolved lamp 59, GI 0, the 128x32 DMD, and the upper-right physical flipper exception.
- Treat working-table kick force, angle, animation, capture, and magnet values as proven authoring baselines, while preserving controller causality and physical channel assignments.