Haz funcionar tus viejos mandos de PS1 y PS2 originales y genéricos/clónicos con vibración/force-feedback en Windows 10

Mi primer Dualshock, el SCPH-1200 "Island Blue" (foto de internet). Aún funciona a la perfección.

Vamos a ello sin rodeos: hacer funcionar tus viejos Dualshock 1 y 2 en un pc con Windows 10 puede suponer todo un reto. Hasta hace pocos años, bastaba una búsqueda rápida en Google para localizar el clásico "USB Network Game Driver", "PS to PC USB" y demás denominaciones que hacían que nuestro vetusto mando funcionara en PC con vibración incluida, incluso en Windows 10. Pero después de varias actualizaciones pesadas, dejaron de funcionar en dicho S.O., al menos en mi experiencia.

Sea como fuere, hay un requisito fundamental para que nuestro mando Dualshoch con adaptador USB -o cualquier mando genérico equivalente- pueda vibrar en Windows 10, y es que aparezca una pestaña dedicada a la vibración en la ventana de configuración del mando, en el apartado de dispositivos e impresoras, y que la ventana no se cierre al hacer clic sobre dicha pestaña:

Instalando alguno de los drivers mencionados al comienzo (incluidos a modo de curiosidad en el pack que luego enlazaré, y que requieren, para funcionar, DirectX End-User Runtimes (June 2010)), la pestaña de vibración aparecerá, pero tristemente veremos cómo toda la ventana se cierra sola al acceder a dicha pestaña. Y no sólo eso: determinadas aplicaciones y juegos como x360ce o el emulador Duckstation mostrarán el mismo comportamiento, cerrándose instantes después de abrirse, o incluso no abriéndose en absoluto. El error lo produce siempre un archivo dll ubicado en "C:\Windows\USB Vibration". Esta carpeta la crean los instaladores de los drivers citados. Si controlas el visor de eventos de Windows, supuestamente es fácil ver qué archivo exacto es el causante del problema. Como alternativa más "sencilla", siempre puedes borrar o mover de la carpeta los archivos dll uno por uno e ir probando, pues sólo son un puñado. Una vez hayamos localizado el archivo problemático y lo hayamos anulado cambiándole la extensión o quitándolo de la carpeta, veremos que las aplicaciones y juegos ya no se cierran, pero no tenemos vibración ni aparece su pestaña en la config del mando en Windows, así que volvemos a la casilla de salida.

Y aquí nos encontramos: en el punto de partida, con nuestro Dualshock 1 o 2 conectado por USB mediante uno de los famosos adaptadores chinorris, con la posiblidad de usar todo menos la maldita vibración... Bueno, en el caso del Dualshock 2, mando en el que todos los botones salvo Select, Start, L3 y R3 detectan 256 niveles de presión, esto directamente tampoco funcionará con estos adaptadores, pero no es una gran pérdida. Total, que varios vídeos de YouTube después, te quedas como estabas, o peor: ahora tienes veinticinco drivers instalados y ninguno termina de funcionar. Bien, pues vamos a solucionarlo:

Lo primero va a ser eliminar toda la morralla que hemos instalado. Para ello no hace falta que hagas cosas raras como meterte en el administrador de dispositivos... Nada de eso. Ve al panel de control, agregar o quitar programas, ordena por fecha de instalación y dedícate a desinstalar todos los drivers o paquetes de software que hayas instalado para el mando. Una vez hecho y reiniciado, si es que te lo pide, ve a "C:\Windows\USB Vibration" y verás que ya no contiene ningún archivo dll. De paso, elimina la carpeta.

De nuevo en el panel de control, conectamos el mando y nos dirigimos a "Dispositivos e impresoras". Allí nos aparecerá nuestro mando con una leyenda tan genérica como "USB Gamepad". Para acceder a los ajustes del mando, haremos clic con el botón derecho del ratón sobre nuestro mando - Game controller settings - Avanzado, y nos aseguraremos de que en el desplegable tenemos elegido el mismo mando y no está en blanco. Saber esto ahorra más de un dolor de cabeza cuando el juego no reconoce el mando, a pesar de estar todo aparentemente bien configurado:

Hacemos clic en OK para cerrar la ventanita del desplegable. Antes de cerrar esta ventana, como nota adicional, si pinchamos en "Propiedades" se nos abrirá la ventana de opciones de Test de la primera captura de esta entrada. Dependiendo del driver que instalemos, la apariencia y la cantidad de opciones y pestañas que aparezcan en dicha ventana puede variar. Por ejemplo: con algunos drivers no podremos probar la intensidad de los motores en sus distintos grados. Con otros, sí. Pero eso da igual.

De vuelta en "Dispositivos e impresoras", haremos clic con el botón derecho en nuestro mando USB y elegiremos "Propiedades". Enla nueva ventana que se nos abra, iremos a la pestaña "Hardware":

Escogemos el segundo elemento de la lista, "USB Gamepad", clic en "Propiedades" y nos vamos a la pestaña "Detalles" en la ventana nueva que se nos abrirá. Ahora, en el menú desplegable, escogemos "Hardware Ids". Nos fijaremos en el primer valor, el más largo. En mi captura, es "VID_0810&PID_0003&REV_0106", pero puede variar según el adaptador USB que tengamos (más info sobre esto, luego). Ese número es el carnet de identidad de nuestro adaptador de mandos de PS1/2 a USB, y será el que utilicemos para descargar el driver adecuado.

A continuación, los dos adaptadores más comunes que nos vamos a encontrar:

╔════════════════════════════╗
ADAPTADOR CHINORRI N.º 1 (RECOMENDADO)
Hardware Id: VID_0810&PID_0001&REV_0106
╚════════════════════════════╝

Es feo, pero es el que mejor soporte de drivers tiene a día de hoy. Conocido como "Twin USB Joystick", "Dual PS1/2 to USB PC Adapter" (y variaciones sobre estos nombres), encontrar el driver para éste ha sido bastante más sencillo. Buscando una solución para el problema de la vibración con x360ce encontré, por casualidad, este hilo en el que un tipo, además de dar unos consejos generales para que la vibración funcione, enlaza a una web que contiene el link de descarga a un driver específico para este adaptador doble. Además, por si el enlace se cae, proporciona su propio enlace de github donde  ha subido una copia de seguridad del mismo.

El archivo descargado, "VID_0810&PID_0001 Twin USB Gamepad 64Bit Setup.rar", contiene un único archivo, "VID_0810&PID_0001 Twin USB Gamepad 64Bit Setup2.exe", el cual extraeremos del .rar y ejecutaremos. Si durante la instalación solicita el DirectX Runtime, al comienzo de esta entrada he dejado el enlace de descarga. Una vez instalado, es posible que tengamos que desconectar y volver a conectar el adaptador USB al pc, o incluso reiniciar, aunque en mi caso no he tenido que hacer nada de eso, ni siquiera desconectarlo. A continuación, volvemos a "Dispositivos e impresoras", clic derecho sobre nuestro mando - Game controller settings. Nos aparecen dos mandos en el listado. Son los correspondientes a cada uno de los puertos del adaptador:

Según miramos de frente el adaptador, el puerto de la izquierda se correspondería con el mando 2, y el de la derecha, con el 1. Justo al contrario del dictado de la lógica, pero bueno. No obstante, si tenemos duda, pinchamos en uno de ellos, luego en propiedades, y vemos si se mueve algo en pantalla al accionar los botones y sticks. Éste es el aspecto de la ventana de ajustes del mando, con todos sus apartados:


En este caso la pestaña de vibración (o "Effect Page") es más completa que la del driver del otro adaptador que veremos, permitiéndonos, mediante el stick izquierdo, comprobar la vibración de ambos motores, juntos o por separado, y con distintos grados de intensidad, al menos en teoría.

Como seguro que ya sabes a estas alturas de la vida, existen principalmente dos estándares de gestión de controladores y dispositivos de entrada pertenecientes a DirectX: DirectInput/dinput y XInput:
  • DirectInput es antiguo y ha dejado de usarse, aunque los Windows y DirectX más modernos son retrocompatibles con el mismo. El problema es que los juegos modernos ya casi exclusivamente soportan XInput. Al conectar un mando DirectInput, es posible que hagamos funcionar los controles básicos, pero no funcionarán los gatillos ni otros elementos como la vibración.
  • XInput es el estándar "moderno" (ya tiene unos añitos) introducido por la Xbox 360, y que utiliza el mando estándar de la misma como modelo de referencia.
  • Por lo tanto, para utilizar nuestro Dualshock con vibración y de manera estable en juegos y emuladores modernos que utilizan el estándar XInput, deberemos utilizar un "wrapper" que mapee/traduzca en tiempo real los datos del mando, que a ojos del sistema es un mando DirectInput, a un controlador virtual Xinput estándar, haciendo creer al sistema que lo que tenemos conectado es un mando de Xbox 360.
Para conseguir nuestro objetivo, existen, principalmente, dos utilidades: x360ce y XOutput. Recomiendo usar XOutput, pero describiré brevemente el funcionamiento de ámbas:
  • x360ce: Lo descargamos de aquí o de su repositorio en Github, aunque la última versión no consta, de momento, en "latest releases" al ser una versión experimental: la 4.17.15.0. Una vez descargada, descomprimimos el contenido a una carpeta y ejecutamos. No voy a explicar el funcionamiento de x360ce, pues me extendería demasiado y hay muchos tutoriales por ahí, pero sí comentaré brevemente el tema de la vibración, ya que presenta un problema que hará que descartemos completamente esta aplicación, al menos en su versión actual (que no se actualiza desde el 15-11-2020, por cierto): no tendremos control de los dos motores por separado, sino que vibrarán siempre en conjunción, y siempre en respuesta únicamente a una de las dos señales de vibración que transmitirá el juego: la correspondiente al motor derecho/pequeño. Por ejemplo: en el caso del Tomb Raider 4 de PS1, cuando Lara dispara sus pistolas debería, en condiciones normales, vibrar sólo el motor pequeño/derecho, y cuando Lara cae tras un salto, sólo el grande/izquierdo. Pues con x360ce por medio, cada vez que Lara dispare nos vibrarán los dos motores al unísono, y cuando caiga tras un salto, no vibrará ninguno de ellos. En los ajustes de vibración de x360ce podemos intercambiar las señales de vibración: en este caso, seguirán vibrando ambos motores al unísono, pero no responderán ante la señal de vibración suave/motor pequeño/derecho del juego, sino a la del motor grande/izquierdo, por lo que no obtendremos ningún tipo de respuesta de vibración cuando Lara dispare sus pistolas, pero sí cuando caiga tras un salto. Creo que se entiende el problema y el motivo por el que descarto x360ce, aparte de por el excesivo consumo de recursos y redibujado contínuo de la interfaz de esta versión,que le da una apariencia inestable y pesada. Y para colmo, como ya he dicho, no se actualiza desde hace casi un año casi un año, y falta le hace.
  • XOutput es el claro vencedor aquí. Aunque es una aplicación mucho más sencilla y austera que x360ce, ya desde el test de vibración que incluye, sencillo y con un solo botón, observamos cómo maneja perfectamente los dos motores por separado, hecho que se refleja en los juegos mismos. Para probar bien los motores recomiendo, en Duckstation, ejecutar el Metal Gear Solid, pues trae en el menú de ajustes un pequeño test de vibración que permite comprobar cada motor por separado. Y funciona a la perfección. En algunos juegos únicamente he notado que la vibración puede ser un poco débil o inexistente en algunos momentos, como en la famosa caída tras un salto en el Tomb Raider 4, pero esto no tiene que ver con el driver ni con el wrapper sino, más bien, con el emulador. Para esto, lo mejor es ir al menú de configuración del mando en Duckstation y aumentar el valor de "Vibration Bias" a 70:
El problema que se presenta usando estos wrappers es que, aunque crean un mando virtual de Xbox360, no eliminan el mando original DirectInput a ojos del sistema ni de las aplicaciones, pudiendo darse el caso, y normalmente se da, que, a la hora de configurar los controles en los juegos, ciertas pulsaciones sean reconocidas como pulsaciones del mando de Xbox 360, y otras, como pulsaciones del mando DirectInput. Y algunos juegos que reconocen los mandos por defecto, reconocerán dos pulsaciones cuando nosotros realmente estamos haciendo una. Para evitar esta catástrofe medioambiental, estas aplicaciones incluyen un sistema llamado HidGuardian, que automáticamente oculta el mando DirectInput al sistema, eliminándolo mientras la aplicación esté abierta, y usándolo en exclusiva. En el caso de x360ce no he probado este y, de hecho, ignoro si lo incluye. Ahora bien: en XOutput sí lo incluye pero no he conseguido hacer que funcione, a pesar de ejecutar el wrapper como administrador, marcar todas las opciones y hacer todas las combinaciones posibles, haciéndose imposible mapear los controles en Duckstation, al asignar determinadas pulsaciones al "Twin USB Gamepad" y otras al "Xbox 360 Controller for Windows". Lo mismo con la vibración, que no funciona. Para solucionar esto, tienes tres opciones:
  1. Saber cómo funciona XOutput realmente, no como yo, y conseguir que HidGuardian funcione.
  2. Si tienes un Dualshock 4 o un DualSense y tienes la aplicación DS4Windows, abrirla y tenerla abierta de fondo, ya que también utiliza HidGuardian.
  3. Instalar una pequeña utilidad llamada HidHide en su versión 1.1.50.0, la cual podemos descargar desde aquí. Una vez instalada, la abrimos y tenemos dos apartados: "Applications" y "Devices". En "Devices", escogemos qué dispositivos/mandos queremos ocultar al sistema. En el caso de nuestro mando, nos aparecerá con la etiqueta "Twin USB Joystick". Lo marcaremos y marcaremos en la parte inferior la opción "Enable device hiding" para esconderlo. En "Applications", tendremos una whitelist con las aplicaciones que sí queremos que detecten el mando. Lógicamente, tendremos que añadir XOutput a este listado. Para ello, le daremos al botón "+" y buscaremos la ruta del ejecutable.
Si ha funcionado, iremos a "Dispositivos e impresoras", clic derecho sobre nuestro mando - Game controller settings y observaremos que ahora el listado está vacío:

Con esto habremos solucionado todos los problemas y podremos disfrutar plenamente de nuestro Dualshock 1/2 en Windows 10 con los juegos más actuales.

Ahora bien: ¿y si queremos jugar a juegos antiguos con control analógico y vibración tales, como, por ejemplo, Need for Speed III: Hot Pursuit (1998)? En este caso tenemos dos opciones:
  1. No utilizar ningún wrapper, ni HidHide, ni nada adicional al driver que hemos instalado en un comienzo: el juego debería reconocer el mando y sus capacidades analógicas y de vibración sin ningún problema.
  2. Usar el wrapper, ya que XInput es retrocompatible con DirectInput, con HidHide. El juego detectará el mando y todo funcionará correctamente. Todo... menos LA VIBRACIÓN. Y es que la retrocompatibilidad de XInput no es total: si bien es compatible con todos los juegos DirectInput en cuanto al uso y manejo del control analógico y el resto de botones, hay un gran problema que, a día de hoy, sigue sin resolverse de forma oficial por parte de Microsoft: la vibración. Usar un mando XInput en un juego DirectInput es garantía de que la vibración/rumble/force feedback no va a funcionar. De hecho, en juegos como el mencionado Need for Speed III, las opciones relacionadas con la vibración aparecen directamente oscurecidas en el menú y no se pueden modificar. Esto sucede porque todo juego diseñado para controladores DirectInput reconoce a los mandos XInput como dispositivos analógicos sin capacidad de vibración. Por eso decía que es un estándar con una retrocompatibilidad parcial o incompleta. Si este asunto no levanta ninguna polvareda en redes es porque, por desgracia, a un alto porcentaje de los jugadores, incluso de juegos antiguos de PC, esto les resbala completamente, y es una auténtica lástima. Bueno, a un alto porcentaje, sí, pero no a todos: por suerte existe un tipo japonés, un tal Masahiko Morii, que hace años ideó una solución para habilitar la vibración en el caso que nos ocupa: uso de un controlador XInput en un juego DirectInput. Desde esta web japonesa descargaremos el archivo correspondiente a nuestro sistema operativo. Si tenemos Windows 7 o posterior, descargaremos la versión correspondiente a Windows 7 32 o 64 bits, según nuestro sistema operativo sea de 32 o 64 bits. Yo, por ejemplo, como tengo Windows 10 64-bit, descargaré la versión "xi.win7.x64.en.zip". Una vez descargado el zip, lo descomprimiremos y ejecutaremos el archivo "xi.win7.x64.en.msi". Lo único que hace este ejecutable es crear la carpeta "Force Feedback Driver for XInput" en C:\Archivos de Programa, conteniendo dos carpetas, según el tipo de aplicación que ejecutemos, de 32 o 64 bits, con un archivo "xiffd.dll" en cada una. Y ya estaría. No hay que hacer nada más. Cuando usemos nuestro mando XInput en cualquier juego DirectInput, tendremos la vibración plenamente operativa. Debe de existir una alternativa llamada XInput Plus que no he tenido el placer de probar, pero parece ser que también restablece la vibración. Si la anterior solución no te ha servido, puede que ésta lo haga. Hay un tutorial de configuración de la aplicación aquí.
╔════════════════════════════╗
ADAPTADOR CHINORRI N.º 2 (NO RECOMENDADO)
Hardware Id: VID_0810&PID_0003&REV_0106
╚════════════════════════════╝

En Google aparecen varios resultados de drivers para este dispositivo bajo Windows 10. Muchos de ellos no nos servirán en absoluto. Algunos, incluso, pertenecen a impresoras y otros dispositivos que, supuestamente, comparten el mismo chip, por lo que el identificador es el mismo. El que yo he encontrado, y que funciona a la perfección a día de hoy en Windows 10 20H2 Build 19042.1237, lo obtuve de esta web. Concretamente, de este enlace. Una vez descargado el archivo "002395.rar", lo descomprimimos (recomendable usar 7zip), y ejecutamos el archivo "F28B(FT28B1).exe":

Si durante la instalación solicita el DirectX Runtime, al comienzo de esta entrada he dejado el enlace de descarga. Una vez instalado, es posible que tengamos que desconectar y volver a conectar el adaptador USB al pc, o incluso reiniciar, aunque en mi caso no he tenido que hacer nada de eso, ni siquiera desconectarlo. Una vez hecho, volvemos a "Dispositivos e impresoras", clic derecho sobre nuestro mando - Game controller settings - Properties. El aspecto y funcionalidad de la ventana y pestañas difiere algo de la que nos aparece con los drivers del otro adaptador:

Tanto la zona de los sticks como la pestaña de vibración aparecerán en esa ventana, independientemente de las capacidades de nuestro mando. Por ejemplo, con un SCPH-1080, el primer mando de psx, sin control analógico ni vibración, el aspecto será el mismo. Esto no impide que el mando funcione a la perfección.

Con nuestro Dualshock 1/2 conectado, probaremos la vibración. Los dos motores funcionarán por separado de manera clara. Sin embargo, a la hora de jugar juegos con control xinput mediante el wrapper, tendremos un problema:

  • x360ce: con este adaptador/driver el problema no es sólo que los dos motores vibren al uníson y sólo ante la señal débil de vibración, sino que, una vez comiencen a vibrar, no dejarán de hacerlo. x260ce totalmente descartado por este motivo.
  • XOutput: en vez de vibrar los dos motores por separado según el tipo de señal de vibración que reciba del juego, vibrarán ambos motores ante cualquier señal de vibración. Si tienes este adaptador y no quieres comprar el otro, que sepas que te perderás la sutileza de los distintos tipos de vibración, pero puedes estar tranquilo en cuanto a que no vas a perderte ninguna vibración del juego: por ejemplo, en Silent Hill notarás la vibración siempre que la haya, incluso los latidos del corazón cuando estés bajo de salud. En Tomb Raider 4, notarás la vibración cuando dispares las pistolas y cuando caigas tras un salto, pero no notarás diferencia. En todo caso pierdes eso, la sutileza, pero nada más.
He dejado en este enlace un pack con todas las descargas mencionadas a lo largo de esta entrada. Están incluidos todos los drivers que he ido encontrando por ahí en el proceso, por si alguno de ellos te pudiera resultar de utilidad. Entre ellos se incluye una "suite" de drivers con imágenes de los distontos adaptadores para que podamos escoger el nuestro. A mí no me ha fuincionado, pero bueno, ahí te la dejo también, con el doble combo mortal errata + Comic Sans:


Espero que te sirva. Próximamente haremos lo mismo con el Dualshock 3, Dualshock 4 y DualSense.

¡Ciao!

Comentarios

  1. seMEJANTE TRABAJO!!! mUCHAS GRACIAS AMIGO, ESTE POST ES LA SWISS ARMY DE LOS DRIVERS PARA VIEJOS ADAPTADORES CHINOSOS. SERÁS GROSSO

    ResponderEliminar
  2. caSI 10 MESES DESDE QUE HICISTE EL POST Y NADIE TE HA AGRADECIDO????? qUE LE PASA A LA GENTE, YA QUISIERAN LAS COMUNIDADES ANGLO UN TUTO TAN COMPLETO, BIEN EXPLICADO Y CON HERRAMIENTAS TAN ÚTILES. G R A C I A S pixel fixer!!!!

    ResponderEliminar
  3. no me funciono tengo el chinosco # 2 supongo debo conseguir el azulito, muchisimas gracias por tu gran aporte.

    ResponderEliminar
  4. I am not speaking Spanish but I translated the whole thing and I have to say a big thank you to the author. What a fantastic guide it has resolved my issue with the "ADAPTADOR CHINORRI N.º 1 (RECOMENDADO)".

    ResponderEliminar

Publicar un comentario