Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
07751 DIP/Input Trivial Always Sep 15, 2020, 11:29 Sep 18, 2020, 12:08
Tester cuavas View Status Public Platform MAME (Official Binary)
Assigned To Resolution Open OS Windows 10 (64-bit)
Status [?] Acknowledged Driver
Version 0.224 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary MESS-specific 07751: intlc440: Keys used to dismiss the info/warning screens are passed to emulated machine
Description

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.

Steps To Reproduce

Remove the CFG file if present:


rm cfg/intlc440.cfg

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.

Additional Information
Github Commit
Flags
Regression Version
Affected Sets / Systems intlc440
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
2
User avatar
No.17976
Tafoid
Administrator
Sep 15, 2020, 20:24
This appears to be happening if LEFT is used when confirming Information Screen as emulation can pick this up depending on how solidly the LEFT is held therefore changing the STOP state. Not sure what can be done about this longterm but a remapping of default could help the situation.
User avatar
No.17981
Robbbert
Senior Tester
Sep 18, 2020, 12:08
Unable to confirm anything in this report.

I did >clean intlc440 (it's a batch file which deletes the cfg, ini, and nvram for the nominated game).

Started the machine - Stop is in the run position. No warning screen. Clicked on X to exit. Restarted - nothing has changed.

Tried with -tty "" option. Now we have a warning screen. Pressed return to proceed. But Stop is still in run.