Poll analog inputs of pad2 when it's an analog pad.
authorJasper van der Neut - Stulen <jasper@neutstulen.nl>
Wed, 22 Apr 2015 19:58:18 +0000 (21:58 +0200)
committerJasper van der Neut - Stulen <jasper@neutstulen.nl>
Wed, 22 Apr 2015 19:58:18 +0000 (21:58 +0200)
frontend/libretro.c
frontend/plugin.c
frontend/plugin_lib.h

index acc64a1..3fd5b0a 100644 (file)
@@ -51,6 +51,7 @@ extern char McdDisable[2];
 /* PCSX ReARMed core calls and stuff */
 int in_type1, in_type2;
 int in_a1[2] = { 127, 127 }, in_a2[2] = { 127, 127 };
+int in_a3[2] = { 127, 127 }, in_a4[2] = { 127, 127 };
 int in_keystate;
 int in_enable_vibration = 1;
 
@@ -1125,6 +1126,14 @@ void retro_run(void)
                in_a2[1] = (input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y) / 256) + 128;
        }
 
+       if (in_type2 == PSE_PAD_TYPE_ANALOGPAD)
+       {
+               in_a3[0] = (input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X) / 256) + 128;
+               in_a3[1] = (input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_Y) / 256) + 128;
+               in_a4[0] = (input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X) / 256) + 128;
+               in_a4[1] = (input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y) / 256) + 128;
+       }
+
        stop = 0;
        psxCpu->Execute();
 
index d9eb04a..49ae1fe 100644 (file)
@@ -66,6 +66,12 @@ static long PADreadPort2(PadDataS *pad)
 {
        pad->controllerType = in_type2;
        pad->buttonStatus = ~in_keystate >> 16;
+       if (in_type2 == PSE_PAD_TYPE_ANALOGPAD) {
+               pad->leftJoyX = in_a3[0];
+               pad->leftJoyY = in_a3[1];
+               pad->rightJoyX = in_a4[0];
+               pad->rightJoyY = in_a4[1];
+       }
        return 0;
 }
 
index 4a11002..00547fc 100644 (file)
@@ -18,7 +18,7 @@ enum {
        DKEY_SQUARE,
 };
 extern int in_type1, in_type2;
-extern int in_keystate, in_state_gun, in_a1[2], in_a2[2];
+extern int in_keystate, in_state_gun, in_a1[2], in_a2[2], in_a3[2], in_a4[2];
 extern int in_adev[2], in_adev_axis[2][2];
 extern int in_adev_is_nublike[2];
 extern int in_enable_vibration;