Merge pull request #21 from phaseIV/master
[pcsx_rearmed.git] / frontend / libretro.c
index 9bada99..aaeb624 100644 (file)
@@ -1220,7 +1220,7 @@ static void update_variables(bool in_flight)
 
 void retro_run(void) 
 {
-       int i;
+       int i, val;
 
        input_poll_cb();
 
@@ -1257,30 +1257,54 @@ void retro_run(void)
 
         if (in_type1 == PSE_PAD_TYPE_NEGCON)
         {
-                in_a1[0] = 0;
-
-               if(input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, 12)) // left brake
+               /* left brake */
+               if(input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, 12))
                        in_a1[1] = 255;
                else
                        in_a1[1] =  0;
 
-
-                in_a2[0] = (input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X) / 256) + 128; //steer
-                in_a2[1] = 255 - ((input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y) / 256) + 128); //thrust
+               /* steer */
+                in_a2[0] = (input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X) / 256) + 128;
+
+               /* thrust and fire */
+                val = ((input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y) / 127));
+                if(val < -2) {
+                        in_a1[0] = 256 - val;
+                } 
+                 if (val > 2) {
+                        in_a2[1] = val;
+                } 
+                if(val >= -2 && val <= 2)
+                {
+                        in_a2[1] = 0;
+                        in_a1[0] = 0;
+                }
         }
 
         if (in_type2 == PSE_PAD_TYPE_NEGCON)
         {
-                in_a3[0] = 0;
-
-               if(input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, 12)) // left brake
+               /* left brake */
+               if(input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, 12))
                        in_a3[1] = 255;
                else
                        in_a3[1] =  0;
 
-
-                in_a4[0] = (input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X) / 256) + 128; //steer
-                in_a4[1] = 255 - ((input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y) / 256) + 128); //thrust
+               /* steer */
+                in_a4[0] = (input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X) / 256) + 128;
+
+               /* thrust and fire */
+                val = ((input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y) / 127));
+                if(val < -2) {
+                        in_a3[0] = 256 - val;
+                } 
+                 if (val > 2) {
+                        in_a4[1] = val;
+                } 
+                if(val >= -2 && val <= 2)
+                {
+                        in_a4[1] = 0;
+                        in_a3[0] = 0;
+                }
         }