This partial definition describes the Bally/Midway physical game, model 50044, catalogued as IPDB 3685. Its ten wd_* PinMAME drivers share wdGameData; the two 2020 variants patch the elevator floor text and do not imply a 2020 physical edition. The wd_03r and wd_048r prototype ROMs are provisionally grouped because they use the same pinned driver data, but no retained prototype manual or cabinet survey establishes their hardware differences.
Controller and physical board
The official Bally manual, PDF page 4, explicitly calls the fitted CPU board a Security CPU Board with a game-specific PIC security chip. The board/assembly section names WPC CPU Security assembly A-17651-50044. The pinned PinMAME wd.c declares the supported Who Dunnit hybrid GEN_WPC95DCS (0x40) and wpc_m95DCSS for all ten drivers. The definition's pinmame.wpc-95 platform describes the emulated public API, while its physical wiring fields cite the game's actual Security CPU and Fliptronic II boards. The eight CPU DIP bits SW1–SW8 and five country settings are printed in the manual's front chart. Whether the WPC-95 LPDC public aliases 37–44 publish any state for this ROM is not established by the retained trace; a corresponding physical load is unproven. Their virtual spatial reason classifies the public API and does not establish absent physical hardware. Exact file hashes for wd.c, core.c, wpc.c and core.h are recorded separately under the same pinned commit and checked against the managed authoritative checkout whenever any manual, VPX or review-artifact evidence root is supplied. A missing or mismatching checkout/artifact fails that check; the no-root portable check does not require external evidence.
The retained ninuzzu/DJRobX 2018 table, version 1.0, is an exact-title recreation and starts wd_12. Its script.vbs is hashed in the definition. The table drives the ordinary Controller.Switch and SolCallback API, giving useful runtime bindings. It deliberately implements the three reels through cvpmMyMech rather than relying on PinMAME's preliminary simulator. The source tables are transcribed at switch matrix, lamp matrix, and solenoid/G.I. circuits. Their rendered manual pages remain in the external research archive.
Ball transport and moving mechanisms
- Trough and shooter. Four trough positions report optos 32–35; 31 is the jam opto. Output 1 ejects into shooter lane 15, and output 2 is the auto plunger. The script creates a
cvpmTrough and drives PlungerIM.AutoFire from output 2. Do not equate a host-injected switch readback with a ROM-observed ball transfer.
- Motorized three-bank. Output 22 drives motor assembly A-20483, with 11 (“3-Bank Position 2”) and 73 (“3-Bank Position Up”) as endpoint signals; 66–68 are the three target hits. The ROM's operator T.16 test offers CYCLE, BANK UP and BANK DOWN. The retained script begins up, changes the two endpoint switches as the bank travels, and inserts a one-second stop at each end. Those script timings are simulation choices rather than measured mechanical speeds. The pinned preliminary
wd.c sim data must not be taken as the physical motor wiring.
- Lift ramp. Output 5 lowers, output 16 raises, and switch 74 reports ramp state. The script initializes it raised and changes the collision wall as the ramp moves; switches 36 and 37 detect entry and made-left shots. T.17 exposes RAMP UP and RAMP DOWN service commands. Actual travel time, jam behavior, and whether an intermediate state is sensed remain unmeasured.
- Up/down post. The post is driven at public output 36, physically the upper-left Fliptronic circuit repurposed in the manual's table. The retained script starts it down and raises it while the output is enabled. The circuit should not be labeled an upper flipper merely because the shared controller numbers it there.
- Three slot reels. Each A-20425 reel has paired drive phases: left B/A 23/24 with index opto 12; center B/A 25/26 with index opto 25; right B/A 27/28 with index opto 48. Printed 3-23–3-24 label three stepper driver PCBs A-19043-1, with A/B inputs, +12 V DC, ground and four motor leads through the on-board comparator/transistor bridge. PDF 109 item 6 instead lists A-19745-1 Stepper Motor PCB w/Spacers (3); the kit/bare-board relationship is unverified, so these identifiers are retained separately. The exploded A-20425 assembly lists each
14-8024 motor at 1.8 degrees per full step, so there are 200 full steps per revolution. Direct T.18 ROM selections activate the three matching logical output pairs without choosing physical connectors (see the factory routing note below). The script's cvpmMyMech length of 200 agrees, while its 360 callback steps and eight-unit index window remain host simulation choices, not measured cam widths. The pinned preliminary simulator instead connects its first reel to 22 and its third to switch 12. Those simulator mappings conflict with the manual and known-working script, so they are treated as simulator defects. A reactive service run and physical index survey would establish phase sequence, index polarity, startup/home state, and jam response for authoring.
- Lower flippers. Assembly A-14876-R-5 on the right uses factory circuits 29 power and 30 hold, public outputs 45/46; A-15849-L-4 on the left uses factory 31/32, public 47/48. The native tables and Fliptronic II schematic transcription record each J907 feed, Q driver, J902 return and wire color. Both assembly tables identify item 2 as
SW-1A-194 Switch Assembly. The generic PDF 98 Flipper Notes block (Notes 2/4) specifies a 0.062 (+/- 0.015) inch non-activated E.O.S. contact gap that closes when the flipper activates, with the longer blade straight and the shorter blade adjusted. This documents the F1/F3 E.O.S. contacts as leaf switches that are normally open at physical rest. The note block occurs on PDF 98; PDF 99 item 2 supplies the same SW-1A-194 part for the left assembly but does not repeat it. PDF 98/99 assembly item 12 and PDF 128/129 print FL-15411; duplicate PDF 137 prints FL-11541. No applicable factory correction settles that discrepancy, so outputs 45–48 have no selected physical coil part and both mechanism records retain conflicted provenance. The documents belong to one manual family; majority agreement does not settle a fitted part. An applicable factory correction or documented original coil/assembly inspection must resolve conflict.lower-flipper-coil-part. F1/F3 are separate playfield E.O.S. inputs; F2/F4 are cabinet opto buttons. The direct T.1 run ties buttons 112/114 to the corresponding output pairs independently of coil part identity. PinMAME's timed E.O.S. synthesis remains separate from the documented contact construction and does not measure live flipper travel, coil current, or timing.
- Lockups and poppers. Output 3 operates the left lock-up; outputs 4 and 8 operate the back and front right poppers. The manual prints distinct left/right hole and lock signals. The retained script supplies the current runtime callbacks; a causal ball-path map from each hole through its popper still needs a controlled run or close physical inspection.
Lights and spatial evidence
Factory lamp connector disagreement. The PDF 124 (2-42) matrix prints columns 1–6 on J137-1..6, columns 7/8 on J138-7/9, and rows 1–8 on J133-1,2,4..9. The PDF 159 (3-27) connector list explicitly says J133/J137 Not Used; it assigns playfield columns to J138-1..7/9, playfield rows to J135-1,2,4..9, cabinet rows 6–8 to J134-7..9 and insert column 8 to J136-3. J138-8 is a key. The agreement on J138-7 (and J138-9) is narrow and does not corroborate the other matrix headers. All 64 matrix cells retain the row-header discrepancy; columns 1–6 also retain the column-header discrepancy, and cabinet lamps 87/88 have the additional J134/J136 routing claim. Both pages put every lamp on the same matrix column and row, so this is a wiring detail rather than a blocking conflict: structured lamp wiring follows the matrix, the game's own wiring table, each lamp note states the connector list's reading, and conflict.lamp-matrix-connectors is recorded as ignored. An original production harness/board inspection or applicable factory correction would settle the physical connectors.
The factory lamp table names every matrix position 11–88. Positions 85 and 86 are explicitly not used; 87 and 88 illuminate the cabinet Buy-In and Start buttons. The script maps LNN objects to the lamp array, but its L16, L17, and L18 arrays contain several glow helpers for one bumper bulb each. Only the single exact LNN anchor is retained as a candidate; no extra physical bulb is inferred from those helpers. Flashers 17 and 19–21 split one output across playfield and backbox branches, with the branch quantities and connectors printed in the manual. A VPX Flasher sprite or one script light cannot prove every socket on those branches.
The manual's PDF 128/129 circuit/location tables call G.I. strings 1–3 Left, Right and Back Playfield (#44) and strings 4–5 Insert 1/2 (#555) in the backbox. These wiring, bulb and location fields remain source-specific candidates for all five strings. PDF 158's board layout shows J120/J121, but its connector pin list ends J111 and PDF 159 resumes J128: J112–J127 pin destinations are omitted, so populated G.I. branches and locations lack board-list corroboration. This gap does not imply absent PDF pages or create a physical conflict. Backbox insert strings retain not_applicable spatial records with candidate provenance. The script's GI_Left, GI_Right and GI_Top collections independently bind public G.I. 0–2; cases 3–4 are empty without proving absent hardware. Forty-nine collection members have a bulb mesh and remain coordinate candidates. The manual gives no socket count, and the collection contains additional nonmesh members, so these points are neither a factory quantity nor validated socket positions.
The hashed solenoid/flasher excerpt retains the complete applicable legend from PDF 128/129/137: 24-6549=#44, 24-8704=#89, 24-8768=#555 and 24-8802=#906. PDF 136 repeats the lamp matrix headers/labels and PDF 137 repeats the solenoid/reel/G.I. circuit claims, apart from the disputed flipper part. These are corroborating pages of the same manual, not independent document families.
The spatial blocker report retains 47 additional VPX candidates for 46 formerly unplaced devices (45 after flasher 14 moved to the factory drawing): direct wall polygon centroids, exact playfield mechanism anchors, flipper pivots, and world-transformed OBJ bounds for collidable primitives. Trough optos, reel index contacts, bank/ramp limits, coil bodies and flasher bulbs still lack measured physical centres. The earlier session's PDF 127/125 drawing fits are rejected: their control pixels were computed from the VPX coordinates through the fit's own frame formula, and sit 10–17 px from the drawn symbols. The PDF 129 overlay reused the PDF 127 frame and was rejected too. A 2026-10-01 reconciliation instead fits PDF 127 and PDF 129 separately from eight features read by eye on the native renders (jet bumper rings, flipper pivots, two flasher domes, the left lock cup; RMS about 6–7 VPU). A later drawing callout check transcribes every callout on PDF 125, 127 and 129 and validates each table placement whose own callout lands within 0.07 normalized of it under both a jet-bumper/flipper-pivot fit and a leave-one-out fit on the page's other callouts; the spatial report lists the placements it leaves candidate, among them lamps 62 and 64, whose leaders end at other inserts, lamp 72, whose leader cannot be followed through the ramps, the trough projections, and the reel, three-bank and popper devices these drawings do not label. The eight-feature fits were an overlay identity check, and the callout check supersedes their claim that every placed lamp, switch and coil/flasher anchor lands on its own item; the measurements they produced stand. Switch 37's leader ends on a switch symbol at the left end of the ramp bracket that crosses the left orbit, about 121 VPU below the table's invisible sw37 trigger. Flasher 14's leader ends at the same bracket, about 204 VPU from the table's phone-toy light Flasherlight6. Both now carry candidate factory-drawing coordinates (flasher 14 with a 60 VPU uncertainty, because the drawing marks the bracket rather than the bulb). Switch 41's subway trigger (about 40 VPU) and flasher 20's dome (about 60 VPU) remain on their table objects. Backbox flasher branches have no invented playfield points, and 49 G.I. bulb meshes plus nine nonmesh collection members are not a factory socket census. A socket-level survey and inspection of hidden mechanism positions are needed for author-ready geometry. ROM diagnostics cannot locate physical bulb sockets.
Controlled ROM observation
A fresh wd_12 service T.1 Switch Edges run used direct public switch writes with keyboard handling and built-in mechanics disabled. The retained trace at review-artifacts/bally.who-dunnit.1995/session-20260930/terra-runtime/traces/06-switch-edges-115-112-114.json and original DMD frames show that public 115 at raw 1 reaches the ROM as SPINNER / FAST SW. F5; raw 0 releases it. Public 112 at 1 produced lower-right power/hold 45/46, and public 114 produced lower-left 47/48; releasing each button dropped its hold output. The late DMD frames say R/L FLIPPER EOS / F1/F3 because PinMAME's lower FLIP_SOL macro also enables synthesized EOS timing. The physical manual remains authority that F2/F4 are cabinet opto buttons and F5 is the playfield spinner. This run does not prove ball paths, reel phase order, LPDC publication or other switch polarity.
Further fresh direct-input diagnostics under review-artifacts/bally.who-dunnit.1995/session-20260930/sol-runtime reached T.16 3-Bank, T.17 Ramp, T.18 Reel and T.1 Switch Edges. The ROM's T.16 start/stop toggled public motor 22. T.17 RAMP UP pulsed 16 and RAMP DOWN pulsed 5. T.18 service Up selected left, center and right reels in order and activated the corresponding 23/24, 25/26 and 27/28 phase pairs. T.1 at raw public 1 displayed the names of optos 12, 25, 48, 31, 41 and 47; raw 0 cleared each edge. Native PDF 126 shades 25, 31–37, 41–44, 47 and 48; only fitted opto 12 is unshaded. This transcription correction preserves the physical opto IDs, normalization mask and causal runtime evidence. Every run used isolated fresh state, no named keyboard action and --handle-mechanics 0. With no VPX host mechanism running, no physical bank/ramp/reel moved, previous reel hold phases could remain high, and the traces cannot establish travel timing, homing, index window, or physical beam polarity. The exact scenarios, raw traces and original 128×32 DMD frames are hashed in the definition's source records and checked by the deterministic curator when evidence roots are configured.
Known source limitations
The PDF 128 (2-46) reel circuit table assigns Left Slot 23/24 to J126-7/-8 Blu-Vio/Blu-Gry and Right Slot 27/28 to J122-3/-4 Blu-Org/Blu-Yel. The PDF 155 (3-23) driver connector lists label Left Reel Sol 23 & 24 at J122-3/-4 Blue-Orange/Blue-Yellow and Right Reel Sol 27 & 28 at J126-7/-8 Blue-Violet/Blue-Gray. Center 25/26 agrees on J122-1/-2. Both pages, ROM T.18 and the retained script's MechReelL/MechReelR agree that 23/24 drive the left reel and 27/28 the right, so only the pins differ: structured wiring follows the circuit table, each output note states the PDF 155 reading, and conflict.reel-drive-connectors is recorded as ignored. ROM T.18 confirms logical reel selection, not physical routing; an original production reel harness/board survey or applicable factory correction would settle the connectors.
The PDF 126 (2-44) matrix calls F6/public 116 and F8/public 118 Not Used with no fitted parts, while PDF 157 (3-25) separately assigns J905-3 Black-Yellow to right flipper opto and J905-5 Black-Blue to left flipper opto. Those pins map distinct public channels 116/118, separate from primary 112/J905-1 and 114/J905-2. Their fitment, physical usage, ROM consumption and polarity remain unknown; the board-list wiring claim has candidate provenance. wd.c enables FLIP_SW(FLIP_L|FLIP_U), but core.c 1699–1731 copies lower keyboard keys into upper button bits only inside if (g_fHandleKeyboard), which also enables this driver's simulator. With keyboard handling disabled, button bits are retained independently from the direct switch matrix. Keyboard synthesis proves neither fitted contacts nor an always-mirrored physical relationship. Resolve conflict.auxiliary-flipper-opto-fitment through an original cabinet opto/harness inspection or applicable factory correction, then an isolated ROM probe if those contacts are fitted. The separate absence of upper flipper coils 33–35 and upper-left EOS 117 is preserved.
The left cabinet flipper opto F4/public 114 has a factory wire-colour disagreement: PDF 126 (2-44) prints Black-Gray at J905-2; PDF 157 (3-25) prints Blue-Gray to left flipper opto at the same pin. The binding and connector agree, so this is a wiring detail: structured wiring follows the PDF 126 matrix colour, the device note states the other reading, and conflict.left-flipper-opto-wire is recorded as ignored. A documented original harness or applicable factory correction would settle the colour. The latter page also identifies the up/down post's output-36 board as A-15472-1. The PDF 128 upper-left “SEE ABOVE” annotation spans the Coil Part No. and Coil Color columns.
The opto regression binds scenario actions and trace steps 9/10, 11/12, 13/14, 15/16, 17/18 and 19/20 to native DMD raw-1/raw-0 pairs for public 12, 25, 48, 31, 41 and 47 respectively. The source record pins both frame hashes for every pair. Native raw 1 shows the ROM switch name; raw 0 returns to “SWITCH EDGES” while retaining “LAST SW.” The curator checks the input event, ordered snapshot, native frame file hash and ROM pixel hash together. These retained callbacks already provide eight-bit pixels, stored unchanged in the PGM payload despite depth-2 layout metadata. Host readback establishes only that the intended level was injected. These frames establish ROM consumption/release under the recorded diagnostic conditions, not physical contact rest state or beam polarity.
The script writes Controller.Switch(24) = 0 beside a comment saying “always closed”; the manual prints an Always Closed link at that address. The definition follows the physical manual and records that host write as a retained-table defect. The table also ignores manual G.I. strings 4–5 for rendering, which does not imply they are absent from the cabinet. The factory manual itself prints a conflicting part number for the Right Jet coil 13: AE-26-1500 in the circuit table, AE-26-1200 in the location list and A-9415-2 assembly drawing. An original fitted assembly or factory correction is needed to resolve it. No physical prototype evidence establishes whether the earliest ROM revisions used exactly the production playfield. The current record stays partial with explicit missing semantics, mechanism behavior, polarity, variant, spatial and conflict dimensions.