Williams/Bally WPC Fliptronic

pinmame.wpc-fliptronic

controllers/pinmame/wpc-fliptronic.json
2
Machines
0
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, Fliptronic flipper, and optional custom switch column 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
  • 91 … 988 slots
  • 111 … 1188 slots
Transports
  • libpinmamechannel=switch
  • controller_plugingroup_id=1 · contract_revision=a6f6d7266d30

Addresses 1-8 are the four coin chutes and the four coin-door service buttons in printed row order. 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. This generation always has Fliptronic flipper inputs, so 111-118 are the eight EOS/button positions in WPC_swF1..WPC_swF8 order: 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, exactly as on WPC-95. A driver may declare one additional custom switch column through core_tGameData custSwCol (CORE_CUSTSWCOL = CORE_STDSWCOLS = 12 internally), which PinMAME reports publicly at 91-98; a definition declares this range only when its own machine populates it. Unlike WPC-95, this generation's WPC_FLIPPERS register read (core_r offset WPC_FLIPPERS) unconditionally returns the bitwise complement of the flipper switch column regardless of hardware generation, so the public Fliptronic state is already normalized here exactly as it is on WPC-95 via WPC_FLIPPERSW95; a recreation must not re-invert either range.

CPU-board option and country configuration bits

pinmame.input.dip

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

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

pinmame.output.solenoid

Solenoid
Legal addresses
  • 1 … 6464 slots
Transports
  • libpinmamechannel=solenoid
  • controller_plugingroup_id=1 · contract_revision=a6f6d7266d30

This generation 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; 32 is always zero. 33-36 are the Fliptronic upper-flipper circuits (33/34 upper-right power/hold, 35/36 upper-left power/hold) and games may drive non-flipper devices through them. 45-48 are the Fliptronic lower-flipper circuits (45/46 lower-right power/hold, 47/48 lower-left power/hold), identically addressed to WPC-95. UNLIKE WPC-95, this generation has no integrated LPDC board, so 37-44 are not a duplicated general-purpose output range: pinned PinMAME's core_getSol dispatch (src/wpc/core.c, the "37-44 WPC95 & S11 extra" branch) only serves that range for GEN_WPC95/GEN_WPC95DCS/GEN_ALLS11, and returns nothing for this generation, so 37-44 are simply unused address space here unless a specific driver's own getSol hook independently claims part of it. 49 is PinMAME's simulator-only ball-shooter channel and 50 is reserved before the first custom-output boundary (CORE_FIRSTCUSTSOL = 51). Above that boundary, 51 upward are the game-specific custom solenoids a driver may publish through its own getSol handler, up to as many as its core_tGameData custSol count declares; a definition declares only the addresses its own machine publishes. A driver's own custom-solenoid numbering (e.g. an external auxiliary board's own silkscreened item numbers) is not the same as this public address space, and printed manual item numbers for such a board must be captured as a manual.address alias rather than assumed equal to the public solenoid number.

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

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. A driver may declare additional lamp columns through core_tGameData lampCol; 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

    src/wpc/wpc.h GENWPC_HASFLIPTRON/GENWPC_HASWPC95 masks; src/wpc/wpc.c WPC_FLIPPERS/WPC_FLIPPERSW95 register read (unconditional complement of coreGlobals.swMatrix[CORE_FLIPPERSWCOL] for non-WPC95 generations); src/wpc/core.h CORE_FIRSTUFLIPSOL=33/CORE_FIRSTLFLIPSOL=45/CORE_FLIPPERSWCOL=11/CORE_STDSWCOLS=12/CORE_CUSTSWCOL/CORE_FIRSTCUSTSOL=51/CORE_CUSTSOLNO/CORE_CUSTSWNO; src/wpc/core.c core_getSol dispatch showing the 37-44 branch is gated on GEN_WPC95/GEN_WPC95DCS/GEN_ALLS11 only; src/libpinmame/libpinmame.h PINMAME_HARDWARE_GEN_WPCFLIPTRON=0x8 ("Fliptronic flippers, Addams Family 2/92 - Twilight Zone 5/93")

    src/wpc/wpc.h GENWPC_HASFLIPTRON/GENWPC_HASWPC95 masks; src/wpc/wpc.c WPC_FLIPPERS/WPC_FLIPPERSW95 register read (unconditional complement of coreGlobals.swMatrix[CORE_FLIPPERSWCOL] for non-WPC95 generations); src/wpc/core.h CORE_FIRSTUFLIPSOL=33/CORE_FIRSTLFLIPSOL=45/CORE_FLIPPERSWCOL=11/CORE_STDSWCOLS=12/CORE_CUSTSWCOL/CORE_FIRSTCUSTSOL=51/CORE_CUSTSOLNO/CORE_CUSTSWNO; src/wpc/core.c core_getSol dispatch showing the 37-44 branch is gated on GEN_WPC95/GEN_WPC95DCS/GEN_ALLS11 only; src/libpinmame/libpinmame.h PINMAME_HARDWARE_GEN_WPCFLIPTRON=0x8 ("Fliptronic flippers, Addams Family 2/92 - Twilight Zone 5/93")

    rev
    4ec52ff0ac13
  • Reference

    src/libpinmame/libpinmame.cpp SetupMsgApi group definitions

    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 2 machines