30 junio, 2017

Tutorial de JoyToKey

¿Qué es JoyToKey?

JoyToKey es la una herramienta externa (es decir, que ni está creada por el equipo de HyperSpin, ni viene incluida ni tiene nada que ver) cuya única función es enviar pulsaciones de teclas al realizar movimientos o pulsaciones en uno o varios joystick.

No es una herramienta necesario u obligatoria para jugar. Prácticamente todos los emuladores o juegos ya tienen alguna manera de configurar los mandos y las teclas. Salvo contadas excepciones, es un error pensar que para que nos funcione nuestro mando, nuestros sistemas, el disco en general hay que usar JoyToKey. Cuando alguien pregunta “quiero configurar todos mis sistemas con JoyToKey” o “quiero jugar con HyperSpin, ¿cómo mapeo JoyToKey?”, la respuesta es y siempre será “no funciona así, usa cada emulador para configurar los mandos primero” y olvídate (de momento) de JoyToKey.

Por norma general, siempre se debe intentar configurar primero los mandos y los emuladores usando las propias opciones de cada emulador o juego. Solo cuando esto no es posible o queremos hacer más cosas, es cuando debemos usar JoyToKey

¿Cuándo necesito usar JoyToKey?

  1. Si el emulador solo funciona con teclas, como Daphne o Nintendo Pokemon Mini o algunos ordenadores antiguos; o emuladores que no reconocen nuestro joystick. Evidente: cuando la única manera de jugar es el teclado, entonces necesitamos JoyToKey para simular teclas con nuestro mando.
  2. Cuando la sensación de movimiento no es buena o es demasiado sensible. Por ejemplo, en el propio menú principal de HyperSpin para elegir un sistema o un juego, mover hacia o hacia abajo el mando, lo hace demasiado rápido.
  3. Si tenemos varios joystick y al enchufarlos y desenchufarlos perdemos la configuración (por ejemplo, esto sucede con MAME si usamos el default.cfg en vez de un fichero ctrl).
  4. Si tenemos un mando arcade o similar en el que nosotros mismos hemos cableado los botones y, por la razón que sea (no sabemos, nos apetece, nos hemos vuelto locos) los botones del jugador uno y del jugador dos están mezclados, y estamos usando un emulador que solo nos deja usar un único joystick para jugador como RetroArch, el cual se usa en más de 40 sistemas.
    Por ejemplo, imaginemos esta situación: tenemos un mando arcade en el que el flipper derecho, pese a estar situado en la zona del jugador 2, los hemos cableado como un botón del joystick 1 (el que sea) para poder jugar a los pinball. Ahora desde RetroArch queremos, para el jugador 2 usar el joystick 2, y nos funciona todo excepto este botón de flipper derecho, pues pertenece al joystick 1 y RetroArch solo nos deja usar botones del joystick 2 para el jugador 2. Entonces en este caso, debemos usar JoyToKey para mapear ese flipper derecho a una tecla (la que sea), y en RetroArch la función que le queríamos dar a ese botón, asignársela a una tecla en vez de al Joystick.
  5. Para hacer combinaciones especiales. Si tenemos una recreativa y queremos salvar la partida, podemos mapear un botón de servicio o un flipper como la tecla CTRL y el resto de botones de acción como letras. Por ejemplo, configuramos los botones 1,2,3,4,5,6 de nuestro mando de la recreativa a las letras (por ejemplo, A,S,D,Z,X,C). Ahora en RetroArch o MAME configuramos que los disparos son A,S,D,Z,X,C y cargar, salvar o pausa es CTRL+A, CTRL+D, etc, que es el resultado de dejar pulsado el flipper o el botón de servicio y una botón de acción.
  6. Para poder salir de emuladores con el mando. En algunos emuladores, como MAME o RetroArch, además de salir con la tecla ESC se les puede configurar para que se cierren usando otra tecla o botón del mando. Pero en otros (la mayoría) esto no es posible. Cuando RocketLauncher arranca un emulador con un juego, deja preparada una tecla de salida común (el ESC) para salir que es común a todos los sistemas. Pero es una tecla, no la pulsación de un mando, así que necesitamos que nuestro joystick tenga en algunos de sus botones de servicio la tecla ESC. Esto solo es posible hacerlo con JoyToKey.
  7. Cuando queremos mapear la pulsación de dos botones a la vez a una acción. Algunos emuladores, como MAME, ya permiten esto, pero por norma general, ninguno da esta opción. Esto es algo que si puede hacer JoyToKey.
  8. Cuando tenemos varios mandos distintos a la vez conectados y queremos que todos funcionen igual. Por ejemplo, tenemos un mando de Xbox 360 y también tenemos un joystick Arcade de recreativa. Dado que cada controlador tiene un configuración de botones distintas, en algunos emuladores es imposible mapear varios joysticks a una misma acción, por lo que es necesario usar JoyToKey.

Integración de JoyToKey con HyperSpin y RocketLauncher

JoyToKey está integrado en HyperSpin (carga un perfil, inicialmente vacío, al arrancar) y con RocketLauncher (carga un perfil por sistema al arrancar cada juego, en principio vacío), así que es muy importante conocer cómo funciona porque pueden pasar cosas raras, como que algunos mandos “parece” que dejan de de funcionar a veces o hacen cosas raras.

Esto puede suceder cuando salimos de HyperSpin o de un juego a medias (por ejemplo, matando el proceso con ALT+F4) y se queda cargado un perfil de JoyToKey de un juego (o de HyperSpin) y no nos damos cuenta. Si pasa esto, nuestro mando puede funcionar “raro” ya que puede tener botones mapeados a teclas y nosotros no darnos cuenta.

Normalmente esto no pasa pues los perfiles que hay en el disco cuando se entrega ESTÁN TODOS VACÍOS. Pero hay gente que empieza a modificarlos sin saber el flujo de carga de los perfiles y les pasa cosas raras y lo achacan a que el disco va mal, cuando no es así. Por esta razón escribo este tutorial e insto a todo el mundo, lo use o no lo use, lo lea por completo.

¿Cómo funciona JoyToKey?

JoyToKey es un programa que sirve para mapear movimientos de Joystick a teclas (una o varias). Cuando se carga, es necesario especificarle como parámetro de arranque un fichero cfg que será el perfil que contiene los mapeos.

Una vez arrancado, se queda en memoria hasta que lo cerramos expresamente. Mientras esté abierto y no lo cerremos, los mapeos que haya definidos funcionarán en cualquier aplicación de Windows que esté abierta, no solo un juego.

Solamente un perfil puede estar funcionando a la vez, por lo que volverlo a abrir para cargar otro perfil desactiva el anterior. Para cerrarlo y que no haya ningún perfil funcionando, no basta con darle a la X ya que es posible que se quede minificado. Si pasa esto es necesario ir a la barra de notificaciones y con el botón derecho del ratón, cerrarlo:

¿dónde está JoyToKey? Quiero cargarlo y empezar a crear perfiles

No tan deprisa. JoyToKey se encuentra en la carpeta D:\Games\Soft\JoyToKey\JoyToKey Ver5.2.1 pero no debéis ejecutarlo directamente ni crear perfiles o ficheros de configuración por el disco con nombres inventados. Todos los perfiles necesarios para funcionar ya están creados (pero vacíos) y se cargan automáticamente al arrancar HyperSpin o cada juego.

¿Cómo se van cargando los perfiles solos?

Yo mismo he configurado HyperSpin para que arranque JoyToKey con un perfil en concreto cuando se arranca. Después, cada vez que se arranca un juego, se carga un perfil específico de JoyToKey para ese sistema. Como solo es posible tener un perfil cargado a la vez, cuando se sale de un juego, se vuelve a arrancar el perfil de HyperSpin inicial.

¿Dónde están y dónde se arrancan estos perfiles?

  1. Al arrancar HyperSpin.exe, se carga el perfil que esta en D:\Games\RocketLauncher\Profiles\JoyToKey\HyperSpin\HyperSpin.cfg. Esto podéis verlo en el fichero settings.ini de HyperSpin o desde HyperHQ en la sección Main Settings -> Startup/Exit -> Startup program
  2. Cada vez que se arranca un juego, RocketLauncher carga un perfil de JoyToKey para el sistema de ese juego, que estará ubicado en D:\Games\RocketLauncher\Profiles\JoyToKey\NOMBRE SISTEMA\NOMBRE SISTEMA.cfg
    Ejemplo: arrancas un juego (cualquiera) de Nintendo Wii entonces RocketLauncher cargará el perfil D:\Games\RocketLauncher\Profiles\JoyToKey\Nintendo Wii\Nintendo Wii.cfg
  3. Al salir de un juego (solo si lo has cargado desde RocketLauncher o desde HyperSpin, ya que HyperSpin acaba usando RocketLauncher) se vuelve a cargar el perfil del punto 1)

Implicaciones de este flujo: peligros

  1. Este punto es el más importante, si ejecutas HyperSpin y luego lo cierras, se queda de fondo JoyToKey en Windows arrancado con el perfil de HyperSpin, lo que puede provocar que, si entras en un emulador por tu cuenta para redefinir los mandos, los movimientos del joystick estén cambiados. Para que esto no ocurra hay una solución, os la mandaré en otro correo (cortesía de Joy Apo)
  2. Si arrancas un juego directamente desde RocketLauncherUI también te pasa lo mismo, pues al salir de cada juego se carga el perfil de JoyToKey de HyperSpin. Esto sucede así porque RocketLauncher está pensado para ser ejecutado desde HyperSpin.

Para evitar esto, tienes que buscar en la barra de notificaciones y cerrarlo como he explicado antes.

¿Cómo edito los perfiles de cada sistema con JoyToKey?

Desde RocketLauncherUI podemos editar todos los perfiles de cada sistema y también el de HyperSpin. Ejemplo para editar el perfil de JoyToKey del sistema Atari Jaguar

¿Dónde edito el perfil de HyperSpin con JoyToKey?

Se hace desde aquí:

¿Puedo crear otros perfiles de JoyToKey desde RocketLauncherUI?

Si pero no. Por poder, puedes crear más perfiles con otros nombres como “mi mando” y cosas así, pero no tiene ningún sentido hacerlo pues nunca van a ser cargados. RocketLauncher carga los perfiles de JoyToKey buscando un nombre de fichero cfg que coincida con el nombre de sistema exactamente. Así que si no respetas el nombre oficial que espera no va a funcionar.

¿Cómo se mapea los movimientos y botones de JoyToKey? ¿cómo se que botón tiene cada mando?

Nada más entrar en JoyToKey te deben salir todos los movimientos del joystick (con flechas) y los números de los botones. Simplemente mueve tu joystick o pulsa botones, verás como se iluminan. Si tienes varios joystick, cada joystick tiene su propia pestaña. Si estas viendo la pestaña 1, solo verás iluminarse las acciones y movimientos del joystick 1. Si pulsas algo del 2 entonces la pestaña 2 se pondrá en verde.

Para mapear un botón a una tecla, haz doble click en la fila del movimiento que quieres mapear, después pulsa la tecla y acaba pulsando “ok”.

Tengo más joysticks que pestañas ¿qué hago?

Si te faltan pestañas, añadelas aquí. Por ejemplo, si tenemos 3 joystick, entramos 3 y le damos a refrescar.

Tengo varios joystick y al conectar y desconectarlos se me intercambian los mapeos ¿qué hago?

Esto pasa por ejemplo en las recreativas que tienen permanentemente conectados dos sticks arcade con interfaz USB y ademas un mando de Xbox inalámbrico que se apaga y se enciende. Los joystick arcade son los mandos 1 y 2, pero cuando se enciende el mando de Xbox, este se coloca el primero, siendo el 1, y los mandos arcades pasan a ser 2 y 3.

Me pasan cosas raras

Es posible que hayas entrado en un emulador para redefinir los mandos y tengas un perfil que no es el correcto (de otro sistema, o de HyperSpin). Cierra JoytoKey desde la barra de notificaciones. Asegúrate de que entras a redefinir los manos de tu emulador con el perfil adecuado.

¿Cómo me aseguro que al entrar en un emulador se ha cargado antes su perfil de JoyToKey?

  1. Lo ideal es cargar un juego desde HyperSpin o RocketLauncherUI para que se te cargue el perfil del sistema automáticamente y luego, durante el juego, ver las opciones del emulador pulsando Alt+Enter o F (para salir de la pantalla completa), F1 para RetroArch, TAB para MAME/MESS o F12, depende de cada emulador.
  2. A veces esto es completamente imposible y hay que cargar el emulador directamente. En este caso debes cargar primero manualmente el perfil (basta con intentar abrir el perfil como si quisiéramos editar su configuración, pero sin tocarla) y luego abrir el emulador.

Tengo más dudas ¿puedo preguntar?

Si, siempre que no hayan sido explicadas antes en este mismo tutorial que iré ampliando. Solo responderé a nuevas preguntas que no hayan sido ya explicadas en este tutorial. Iré incorporando y ampliando este manual con las nuevas con el fin de que todo el mundo tenga acceso a toda la información.

Todo esto me supera, tengo una recreativa o un mando especial y quiero que me mapees todos los sistemas a mi gusto ¿podrías ayudarme?

Tenemos un servicio de configuración de botones en remoto por TeamViewer que tiene un coste fijo de 40€. Consulta la página de lo hacemos nosotros para más información sobre este servicio.

Bienvenido! Descartar