Solucionar problemas eje de stick con adaptador USB-PSX-PS2

Hola,

Uso un pad de PS2 con un adaptador PSX-PS2 mediante USB. Uso el x360ce_vibmod versión 3.1.0.4_BETA3 para que los juegos se piensen que es un pad de XBOX 360 y así poder usarlo en juegos actuales como Prototype.

He conseguido mappear correctamente todos los botones editando el archivo .bin y manipulando el registro de windows. El problema viene a la hora de configurar los ejes del stick derecho (el izquierdo funciona perfectamente). Al pulsar Arriba, tanto en el XinputTest como en el juego, lo entiende como Izquierda. Si pulso Abajo, Derecha...

Entiende, por lo tanto:

U=L
D=R
R=D
L=U

Adjunto la info modificada que he creado y que soluciona el mappeo pero no lo de los sticks. He modificado el registro para que lo reconozca como Logitech Dual Action porque es lo que recomiendan en los tutos:

#Logitech Dual Action
[PAD1]
Index=0 #controller index in game controllers list; 0 is first; -1 to ignore this pad
Left Analog X=1 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Left Analog Y=-2 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog X=3 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog Y=-6 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Left Analog X Linear=0 #-100 to +100 raise this number to increase sensitivity near center
Left Analog Y Linear=0 #-100 to +100 raise this number to increase sensitivity near center
Right Analog X Linear=0 #-100 to +100 raise this number to increase sensitivity near center
Right Analog Y Linear=0 #-100 to +100 raise this number to increase sensitivity near center
Left Analog X+ Button=0 #button id; 0 to disable
Left Analog X- Button=0 #button id; 0 to disable
Left Analog Y+ Button=0 #button id; 0 to disable
Left Analog Y- Button=0 #button id; 0 to disable
Right Analog X+ Button=0 #button id; 0 to disable
Right Analog X- Button=0 #button id; 0 to disable
Right Analog Y+ Button=0 #button id; 0 to disable
Right Analog Y- Button=0 #button id; 0 to disable
D-pad POV=1 #POV index; 0 to disable
D-pad Up=13 #button id; 0 to disable
D-pad Down=14 #button id; 0 to disable
D-pad Left=15 #button id; 0 to disable
D-pad Right=16 #button id; 0 to disable
A=3 #button id; 0 to disable
B=2 #button id; 0 to disable
X=4 #button id; 0 to disable
Y=1 #button id; 0 to disable
Left Shoulder=7 #button id; 0 to disable
Right Shoulder=8 #button id; 0 to disable
Back=9 #button id; 0 to disable
Start=10 #button id; 0 to disable
Left Thumb=10 #button id; 0 to disable
Right Thumb=10 #button id; 0 to disable
Left Trigger=5 #button id; precede with 'a' for an axis; eg; a-6; for a slider precede with 's' eg; s-1
Right Trigger=6 #button id; precede with 'a' for an axis; eg; a-6; for a slider precede with 's' eg; s-1
UseForceFeedback=1 #use 0 to 1; default 0
ForceLargeGain=10000 #use 0 to 10000; default 10000; effect intensity
ForceLargePeriod=120000 #use 0 to 200000; default 120000; effect frequency; wheel only
ForceLargeFadeTime=10 #use 0 to 100; default 10
ForceLargeFadeIn=0 #use 0 to 1; default 1
ForceLargeFadeOut=0 #use 0 to 1; default 1
ForceLargeStartMag=0 #use 0 to 10000; default 2000; effect will begin with this value
ForceSmallGain=10000 #use 0 to 10000; default 10000; effect intensity
ForceSmallPeriod=30000 #use 0 to 200000; default 30000; effect frequency; wheel only
ForceSmallFadeTime=10 #use 0 to 100 default 10
ForceSmallFadeIn=0 #use 0 to 1; default 1
ForceSmallFadeOut=0 #use 0 to 1; default 1
ForceSmallStartMag=0 #use 0 to 10000; default 2000; effect will begin with this value
WheelInertiaGain=2500 #use 0 to 10000; default 2500; effect intensity; wheel only
WheelSpringGain=5000 #use 0 to 10000; default 5000; effect intensity; wheel only
SteeringWheel=0 #use 0 to 1; enable for all wheel effects


http://www.gamespot.com/pc/action/prototype/show_msgs.php?topic_id=m-1-50032411&pid=942352 (aquí hablan sobre el proceso para que reconozca el mando y poder jugar)

http://www.gtaforums.com/index.php?showtopic=383548&st=0 (aquí se indica los apartados del registro a modificar para cambiar los ejes).

I use a "3in1 Conversion Box" from Bigben interactive to connect my PS1 Analog Pad wit the PC. As descriped I rename it.

But the right analog stick not working properly, right/left becomes up/down. I cant find "Axes" under
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\MediaProperties\PrivateProperties\Joystick\OEM\VID_0F30&PID_010A

(NOTE FROM ME: THE VID NUMBER MAY BE DIFFERENCE, THIS IS THE SAME FOLDER WHERE YOU CHANGE THE OEM NAME TO LOGITECH DUAL ACTION IF YOU FOLLOWED MY WAY)

If you have the same problem add it manually to perform an axis override, works for me:

- unplug your Gamepad
- right click on your "VID-PID code"- folder, create a new key called "Axes"
- right click on the "Axes" folder, create a key called "2"
- inside "2" create a binary value named "Attributes", set it to " 00 00 00 00 01 00 35 00 "
- after that cerate in "Axes" a second key: "5", create a binary value called "Attributes", set it to " 00 00 00 00 01 00 32 00 "
- restart you maschine and connect the pad.

under control panel/calibration you can take notice of the change.



Los mappeos que dan en la primera página no me funcionan pero cambiando cuatro cosas he conseguido que funcionen TODOS los botones.

Cambiando el registro e introduciendo esos valores que indica en el segundo link tampoco me funciona. Es posible que haya cometido un error al introducirlos en la "carpeta" "SideWinder Autodetect" pero el resto de carpetas (todas empiezan por VID_XXX) parecen ser para pads que Windows lleva por defecto.

¿Alguna idea?

Gracias
Subo, a ver si alguien me puede ayudar, que además es para que pueda jugar un amigo y me sabe mal que no le funcione correctamente. :)
Si arriba es izquierda, los ejes estan cambiados, ¿si pulsas derecha o izquierda se interpreta como arriba o abajo?

Si arriba es izquierda un movimiento positivo en el eje Y es interpretado como negativo en el eje X por lo que en principio tendrías que invertir, usar un -, y cambiar al otro eje.

Lo que no queda claro es como se comportan izquierda y derecha, suponiendo que esten cambiados los ejes:

¿No vale con cambiar?
Right Analog X=3 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog Y=-6 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable


Por:


Right Analog X=6 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog Y=3 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable



O quizás:

Right Analog X=6 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog Y=-3 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable


O puede que:

Right Analog X=-6 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog Y=-3 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable


O cualquier otra combinación de las que falta, todo depende de como se interprete el movimiento en los ejes lo normal es usar un eje cartesiano, arriba es + en el Y y abajo -, izquierda es - en el X y derecha +.
wah_wah_69 escribió:Si arriba es izquierda, los ejes estan cambiados, ¿si pulsas derecha o izquierda se interpreta como arriba o abajo?

Si arriba es izquierda un movimiento positivo en el eje Y es interpretado como negativo en el eje X por lo que en principio tendrías que invertir, usar un -, y cambiar al otro eje.

Lo que no queda claro es como se comportan izquierda y derecha, suponiendo que esten cambiados los ejes:

¿No vale con cambiar?
Right Analog X=3 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog Y=-6 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable


Por:


Right Analog X=6 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog Y=3 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable



O quizás:

Right Analog X=6 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog Y=-3 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable


O puede que:

Right Analog X=-6 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog Y=-3 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable


O cualquier otra combinación de las que falta, todo depende de como se interprete el movimiento en los ejes lo normal es usar un eje cartesiano, arriba es + en el Y y abajo -, izquierda es - en el X y derecha +.


Gracias por tu respuesta.

En el post principal explico lo que pasa al pulsar las otras direcciones, aunque quizás no lo expresé demasiado bien:

Up=Left
Down=Right
Right=Down
Left=Up

Cambiar los signos lo único que hace es cambiar los ejes 180º (con los valores que he puesto yo están girados 90 ª, creo). Es decir, el problema sigue estando, sólo que ahora:

Up=Right

Right=Up

etc

Hablo de memoria porque no tengo el pc (es de un amigo) ni el adaptador a mano. De todos modos, probaré alguna de las otras combinaciones que sugieres pero creo que el problema pudiera estar en otro lado, aunque lo del registro no ha funcionado o lo he hecho en el controlador erróneo.

Por cierto, si cambio los valores del stick derecho (3,-6), por los mismos que el izquierdo (1,-2), ambos sticks mueven los ejes que corresponderían al stick izquierdo y entonces si que creo recordar que respeta las direcciones al pulsar.

Si pruebo otros valores como (4,-8), el stick derecho no funciona, no se si la solución pasaría por probar valores múltiplos o eso no tendrá nada que ver.
Ahora mismo en tu config
Según se ve en la config el formato es:

Valor simulado = valor real, con un - delante para invertir.
Ahora mismo tienes:

Right Analog X=3 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable
Right Analog Y=-6 #axis index; use - to invert; precede with 's' for a slider eg; s-1; 7 to disable



Y se comporta asi:
Up=Left
Down=Right
Right=Down
Left=Up

Si pulsas arriba y se interpreta como izquierda, el eje Y derecho de tu mando real esta asociado al eje X del simulado, y no solo eso Arriba sería un valor positivo en el eje X, mientras que izquierda es un valor negativo en el eje Y, es decir tienes que asociar el eje 3 de tu mando real al eje Y del simulado y supongo que invertirlo también, es decir:

Right Analog Y=-3
Derecho Y = -3, tercer eje de tu mando, invertido

Si pulsas derecha se interpreta como abajo, es decir el movimiento positivo en el eje X se interpreta como negativo en el eje Y, tienes que asociar tu eje X real al X simulado e invertirlo.

En principio deberías asignar:
Right Analog X=6
Derecho X= 6,sexto eje de tu mando, normal.

Ahora aqui pasa algo raro, el eje 1 y 2 reales de tu mando estan asociados al stick analógico izquierdo, el 3 quedaría asociado al eje Y , lo lógico sería asociar el siguiente, el cuatro, es extraño que te funcione con el 6, si es un mando de ps2 solo debe tener 4 ejes, dos por cada stick analógico, puede ser cosa del adaptador, por cierto has dicho que has cambiado un .bin y el registro de windows comprueba que esten con la misma config.
4 respuestas