Williams WPC-95

pinmame.wpc-95

controllers/pinmame/wpc-95.json
16
Machines
2
Author ready
5
Address groups

Polarity is already normalised

PinMAME reports logical active state on this platform. A consumer must not invert again. Whether a real switch is normally closed stays recorded per device as a physical fact, so a recreation can build the right hardware without changing what the emulator reports.

Address groups

Coin-door, switch-matrix, and Fliptronic flipper inputs

pinmame.input.switch

Switch
Legal addresses
  • 1 … 88 slots
  • 11 … 188 slots
  • 21 … 288 slots
  • 31 … 388 slots
  • 41 … 488 slots
  • 51 … 588 slots
  • 61 … 688 slots
  • 71 … 788 slots
  • 81 … 888 slots
  • 111 … 1188 slots
Transports
  • libpinmamechannel=switch
  • controller_plugingroup_id=1 · contract_revision=a6f6d7266d30
Technical details for Coin-door, switch-matrix, and Fliptronic flipper inputsSource-derived address behavior and exceptions

Cabinet inputs

Addresses 1-8 are the four coin chutes and the four coin-door service buttons in printed row order.

Matrix inputs

Public matrix addresses use WPC column/row notation 11-88, where the left digit is the drive column and the right digit is the return row; values ending in 9 or 0 are not matrix positions.

Fliptronic inputs

WPC-95 always has Fliptronic flipper inputs, so 111-118 are the eight EOS/button positions in WPC_swF1..WPC_swF8 order:

Address Position
111 lower-right EOS
112 lower-right button
113 lower-left EOS
114 lower-left button
115 upper-right EOS
116 upper-right button
117 upper-left EOS
118 upper-left button

WPC-95 reads that column through WPC_FLIPPERSW95 with a hardware inversion, so the public state is already normalized and must not be re-inverted.

CPU-board option and country configuration bits

pinmame.input.dip

DIP switch
Legal addresses
  • 1 … 88 slots
Transports
  • libpinmamechannel=dip

Standard, state, Fliptronic, LPDC, and game-specific custom outputs

pinmame.output.solenoid

Solenoid
Legal addresses
  • 1 … 6464 slots
Transports
  • libpinmamechannel=solenoid
  • controller_plugingroup_id=1 · contract_revision=a6f6d7266d30
Technical details for Standard, state, Fliptronic, LPDC, and game-specific custom outputsSource-derived address behavior and exceptions

Standard and state outputs

WPC-95 exposes standard drivers 1-28; 29-30 mirror two J111 general-purpose bits; 31 is PinMAME's synthetic game-on state, taken from the driver's fast-flip RAM flag when wpc_set_fastflip_addr is set; and 32 is always zero.

Public addresses Behavior
33-36 Fliptronic upper-flipper circuits: 33/34 upper-right power/hold and 35/36 upper-left power/hold. Games may drive non-flipper devices through them.
37-40 and 41-44 37-40 are the WPC-95 LPDC general-purpose outputs added on the integrated board. PinMAME duplicates them at 41-44 for backward compatibility, so one physical device reports on two public addresses.
45-48 Fliptronic lower-flipper circuits: 45/46 lower-right power/hold and 47/48 lower-left power/hold.
49 PinMAME's simulator-only ball-shooter channel.
50 Reserved before the first custom-output boundary.

Custom outputs

Above that boundary, 51-64 are the game-specific custom solenoids a driver may publish through its own getSol handler. PinMAME serves as many as the driver's core_tGameData custSol count declares, and a game may use them to expose an already-declared circuit a second time. Attack From Mars is the WPC-95 example with custSol=3. A definition declares only the addresses its own machine publishes.

Eight-by-eight controlled-lamp matrix with optional auxiliary columns

pinmame.output.lamp

Lamp
Legal addresses
  • 11 … 188 slots
  • 21 … 288 slots
  • 31 … 388 slots
  • 41 … 488 slots
  • 51 … 588 slots
  • 61 … 688 slots
  • 71 … 788 slots
  • 81 … 888 slots
  • 91 … 988 slots
  • 101 … 1088 slots
Transports
  • libpinmamechannel=lamp
  • controller_plugingroup_id=512 · contract_revision=a6f6d7266d30
Technical details for Eight-by-eight controlled-lamp matrix with optional auxiliary columnsSource-derived address behavior and exceptions

Matrix conversion

PinMAME applies wpc_sw2m/wpc_m2sw conversion to lamps. ChangedLamps therefore reports public matrix addresses 11-88 rather than sequential indices 1-64, where the left digit is the drive column and the right digit is the return row.

Auxiliary columns

A driver may declare additional lamp columns through core_tGameData lampCol; wpc_m2sw continues the same column-times-ten notation.

Auxiliary column Public addresses
First 91-98
Second 101-108

Attack From Mars is the WPC-95 example with lampCol=2 for its 16-LED chase board. A definition declares only the columns its own machine populates.

Five general-illumination strings

pinmame.output.gi

General illumination
Legal addresses
  • 0 … 45 slots
Transports
  • libpinmamechannel=gi
  • controller_plugingroup_id=256 · contract_revision=a6f6d7266d30

Public GI addresses are zero-based 0-4 and correspond to the manuals' printed strings 01-05.

Evidence

  • Reference

    https://github.com/vpinball/pinmame

    Source locations

    src/wpc/core.h WPC solenoid numbering comment and CORE_FIRSTEXTSOL/CORE_FIRSTUFLIPSOL/CORE_FIRSTLFLIPSOL/CORE_FLIPPERSWCOL; src/wpc/core.c core_getSol WPC95 37..44 duplication; src/wpc/wpc.c WPC_FLIPPERSW95 inversion, WPC_SOLENOID1 LPDC mapping, and fast-flip game-on state; src/wpc/wpc.h WPC_swF1..WPC_swF8; src/libpinmame/libpinmame.h PINMAME_HARDWARE_GEN_WPC95=0x80; src/wpc/core.h CORE_FIRSTCUSTSOL/CORE_MAXSOL/CORE_CUSTLAMPCOL; src/wpc/wpc.c wpc_m2sw column notation

    rev
    4ec52ff0ac13
  • Reference

    https://github.com/vpinball/pinmame

    src/libpinmame/libpinmame.cpp SetupMsgApi group definitions

    rev
    a6f6d7266d30

Something wrong or missing?

Address ranges, transports and normalisation rules live in one profile file. If PinMAME exposes a group this profile does not describe — or describes wrongly — the fix belongs there.

Cite a source for anything you change — a manual page, a line in a working VPX script, PinMAME source, or a reading from the machine's own service menu. Claims without provenance cannot be validated.

Machines on this platform

All 16 machines