@@ -80,11 +80,23 @@ static const uint32 AnaglyphPreset_Colors[][2] =
8080};
8181
8282#define STICK_DEADZONE 0x4000
83+ #define LEFT_DPAD_LEFT 0x0080
84+ #define LEFT_DPAD_RIGHT 0x0040
85+ #define LEFT_DPAD_UP 0x0200
86+ #define LEFT_DPAD_DOWN 0x0100
8387#define RIGHT_DPAD_LEFT 0x1000
8488#define RIGHT_DPAD_RIGHT 0x0020
8589#define RIGHT_DPAD_UP 0x0010
8690#define RIGHT_DPAD_DOWN 0x2000
8791
92+ // D-Pads opposite directions
93+ #define LEFT_DPAD_LEFT_RIGHT (LEFT_DPAD_LEFT | LEFT_DPAD_RIGHT )
94+ #define LEFT_DPAD_UP_DOWN (LEFT_DPAD_UP | LEFT_DPAD_DOWN )
95+ #define RIGHT_DPAD_LEFT_RIGHT (RIGHT_DPAD_LEFT | RIGHT_DPAD_RIGHT )
96+ #define RIGHT_DPAD_UP_DOWN (RIGHT_DPAD_UP | RIGHT_DPAD_DOWN )
97+
98+ static bool opposite_directions = false ;
99+
88100static uint32 VB3DMode;
89101
90102static Blip_Buffer sbuf[2 ];
@@ -2213,6 +2225,11 @@ static void check_variables(void)
22132225 setting_vb_right_analog_to_digital = false ;
22142226 }
22152227
2228+ var.key = " vb_opposite_directions" ;
2229+
2230+ if (environ_cb (RETRO_ENVIRONMENT_GET_VARIABLE , &var) && var.value )
2231+ opposite_directions = !strcmp (var.value , " enabled" );
2232+
22162233 var.key = " vb_cpu_emulation" ;
22172234
22182235 if (environ_cb (RETRO_ENVIRONMENT_GET_VARIABLE , &var) && var.value )
@@ -2409,6 +2426,18 @@ static void update_input(void)
24092426 input_buf[j] |= (analog_y < 0 ) ^ !setting_vb_right_invert_y ? RIGHT_DPAD_DOWN : RIGHT_DPAD_UP ;
24102427 }
24112428
2429+ if (!opposite_directions)
2430+ {
2431+ if ((input_buf[j] & LEFT_DPAD_LEFT_RIGHT ) == LEFT_DPAD_LEFT_RIGHT )
2432+ input_buf[j] &= ~LEFT_DPAD_LEFT_RIGHT ;
2433+ if ((input_buf[j] & LEFT_DPAD_UP_DOWN ) == LEFT_DPAD_UP_DOWN )
2434+ input_buf[j] &= ~LEFT_DPAD_UP_DOWN ;
2435+ if ((input_buf[j] & RIGHT_DPAD_LEFT_RIGHT ) == RIGHT_DPAD_LEFT_RIGHT )
2436+ input_buf[j] &= ~RIGHT_DPAD_LEFT_RIGHT ;
2437+ if ((input_buf[j] & RIGHT_DPAD_UP_DOWN ) == RIGHT_DPAD_UP_DOWN )
2438+ input_buf[j] &= ~RIGHT_DPAD_UP_DOWN ;
2439+ }
2440+
24122441#ifdef MSB_FIRST
24132442 union {
24142443 uint8_t b[2 ];
0 commit comments