Genesis/Mega Drive (CD) SNAC : phantom button presses
Genesis/Mega Drive (CD) SNAC : phantom button presses
What happens is this:
I hold B+C and then press any diagonal on the d-pad. When I do, additionally to what I am pressing, buttons A and Start are shown as pressed as well. Sometimes holding B+C and pressing left also shows right as being pressed, although that seemed to go away after I used another controller to test.
With an USB controller none of this happens.
I also tried the Master System core with "SMS Test Suite (PD) v.032" which also has a controller test, including Mega Drive controllers. That seems to behave normally.
Any ideas?
It happens far too often that I seem to press B+C+diagonal and the game pauses. Not cool!
- lamarax
- Top Contributor
- Posts: 472
- Joined: Wed Nov 11, 2020 6:28 pm
- Has thanked: 33 times
- Been thanked: 202 times
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
Don't know about MD pads in an SMS game really but there are 1 or 2 controller test roms that provide tests for SMS and MD (even 6 button) pads.
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
Furthermore I can now confirm that one of my MD controllers when pressing B+C+left also shows right as being pressed, the other one doesn't. They are "1650-50, Made in Malaysia", BTW and came with a PAL system.
Had a look at the pin layout of the controller and C/Start and B/A are each on the same pin. So that kind of explains (?) why Start and A come into play here pressing B+C. Is there anything I could check on the adapter maybe? I own a multimeter but I am otherwise clueless.
- lamarax
- Top Contributor
- Posts: 472
- Joined: Wed Nov 11, 2020 6:28 pm
- Has thanked: 33 times
- Been thanked: 202 times
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
There seems to be a recurrent issue with those MK.1650-50 MADE IN MALAYSIA three button MD pads; please refer to this thread.
-
- Core Developer
- Posts: 547
- Joined: Sun May 24, 2020 9:30 pm
- Has thanked: 20 times
- Been thanked: 145 times
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
Best to check with an oscilloscope
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
Could it really be that my particular version of controller doesn't work (well, it works, with a twist)? What would the difference be?
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
-
- Posts: 36
- Joined: Sun Mar 07, 2021 7:10 pm
- Has thanked: 3 times
- Been thanked: 2 times
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
The only thing I've heard that might fix it is resoldering the snac port on the IO board. I don't have a soldering iron (or probably the skills) to try it out.
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
An update of sorts: I got myself another MD SNAC adapter from a known good source (AKA https://misterfpga.co.uk). The ones I have I bought 2nd hand and didn't bother to ask who made them at the time.
Unfortunately that didn't change anything.
Although not MD-related I found out this: because I didn't own one before I also ordered the TG16 SNAC adapter. Again with the 240p test suite I did the controller test. As with the MD each button individually works fine. As soon as I press I and II at the same time I'm send back to the menu (which means Run+Left was pressed) and after that the controller is just dead. No more inputs are recognized. My TG16 controller is from a PAL system but I don't think that's relevant.
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
Is what you meant here somehow related to what I just described?
-
- Core Developer
- Posts: 547
- Joined: Sun May 24, 2020 9:30 pm
- Has thanked: 20 times
- Been thanked: 145 times
Re: Genesis/Mega Drive (CD) SNAC : phantom button presses
With SNAC, because it's open-collector, the signal transitions from low to high depending on a) how strong the pullup resistors are, and b) how the signal is 'driven' from the controller. With 10K ohm pullup resistors, as in the standard SNAC design, it takes over 1 microsecond to reach a 'high' level, which can mess up the second set of bits, showing a 'phantom' key press. Worse, on PC Engine, 6-button, mouse, and Memory Base 128 controllers use repeated reads, so it's not just one set of bits which can get messed up.
I found that changing the pullup resistors to 4.7K helped a little bit, but not enough. Anything more aggressive, and it was difficult to bring the signal to a logical 'low', so it would miss reads. I ended up designing a PCE-specific adapter which used the SNAC lines, but used standard logic to drive them, rather than try to keep the logic all open-collector. This works great for PC Engine, but having it plugged in with other cores may have bus conflicts. There are current-limiting resistors on the board (as well as inside the FPGA), but it's not a universal solution.
By the way, SNAC was never intended to be used for regular controllers; just the oddball controllers like lightguns and so on which don't have alternate interfaces.