|DIP/入力||最小||仮承認||未処理||2020-09-15 20:29||2020-09-18 21:08|
intlc440 - INTELLEC 4/MOD 40
This was a side effect of using a key assigned to a toggle switch by default to dismiss info screens. Somewhere between MAME 0.222 and MAME 0.223, the delay between pressing a key to dismiss an info screen and MAME being ready to pass inputs to the emulated machine became shorter. This means you have less time to release a key used to dismiss these screens before it gets passed to the emulated machine. You can see the same thing happen in an older MAME version if you hold the key for longer.
The intlc440 has a STOP switch which is active low and should default off. Here’s the relevant port bit definition:
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_TOGGLE PORT_NAME("STOP") PORT_CODE(KEYCODE_LEFT) PORT_CHANGED_MEMBER(DEVICE_SELF, mod40_state, sw_stop, 0)
However, if you start MAME with no configuration file, the STOP switch will be on initially. Furthermore, each time MAME is started, the state of the switch will toggle. The state of the switch seems to be saved correctly when it’s on, however MAME inverts the value when loading the CFG file.
It works in 0.220 but doesn’t work in 0.224, I haven’t tested intermediate versions. I’m marking this as major because the driver hasn’t changed since 0.220 so it’s likely to be something that can potentially affect any system with toggle inputs. I’d appreciate it if someone could track down the commit where this started happening.
Remove the CFG file if present:
Start intlc440, it’s a bit easier to see the switch labels without a terminal:
mame64 intlc440 -tty ""
Note that the STOP switch (tenth switch on the bottom row) is in the on position (up).
Exit MAME. Check cfg/intlc440.cfg and note that the state of the STOP switch is saved as being on (tag=":MODE" type="KEYPAD" mask="1" defvalue="1" value="0").
Start intlc440 again, and note that the STOP switch is now in the off position (down), the opposite to the saved state.