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
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. WPC-95 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. 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
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; 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. 37-40 are the WPC-95 LPDC general-purpose outputs added on the integrated board and PinMAME duplicates them at 41-44 for backward compatibility, so one physical device reports on two public addresses. 45-48 are the Fliptronic lower-flipper circuits (45/46 lower-right power/hold, 47/48 lower-left power/hold). 49 is PinMAME's simulator-only ball-shooter channel and 50 is reserved before the first custom-output boundary. 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 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; wpc_m2sw continues the same column-times-ten notation, so the first two auxiliary columns appear at public addresses 91-98 and 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.
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.