Fix negcon not working correctly in some games
authornegativeExponent <negativeExponent@users.noreply.github.com>
Sat, 31 Oct 2020 11:38:47 +0000 (19:38 +0800)
committernegativeExponent <negativeExponent@users.noreply.github.com>
Sat, 31 Oct 2020 12:00:27 +0000 (20:00 +0800)
libpcsxcore/plugins.c

index 19de72c..8d99be2 100644 (file)
@@ -747,7 +747,8 @@ unsigned char _PADpoll(int port, unsigned char value) {
                req = value;
 
                // Don't enable Analog/Vibration for a standard pad
-               if (in_type[port] == PSE_PAD_TYPE_STANDARD) {
+               if (in_type[port] == PSE_PAD_TYPE_STANDARD ||
+                       in_type[port] == PSE_PAD_TYPE_NEGCON) {
                        ; // Pad keystate already in buffer
                }
                else
@@ -772,9 +773,13 @@ unsigned char _PADpoll(int port, unsigned char value) {
                                case CMD_READ_DATA_AND_VIBRATE:
                                //mem the vibration value for Large motor;
                                pad[port].Vib[1] = value;
+
+                               if (in_type[port] == PSE_PAD_TYPE_STANDARD &&
+                                       in_type[port] == PSE_PAD_TYPE_NEGCON)
+                                       break;
+
                                //vibration
-                               if (in_type[port] != PSE_PAD_TYPE_STANDARD)
-                                       vibrate(port);
+                               vibrate(port);
                                break;
                        }
                break;