Joy2PS2 es una interfaz versátil diseñada para conectar uno o dos gamepads de varias plataformas retro. Esta solución convierte y redirige los eventos de los gamepads en pulsaciones de teclado hacia un puerto PS/2.
Encontrarás este tipo de puerto en PCs antiguos y algunos modernos, así como en dispositivos recientes como el Next o el ZXUno, siendo este último la plataforma para la cual fue inicialmente diseñada. Esta interfaz es altamente compatible y adaptable, incluyendo varios mapas de teclado en su firmware para facilitar la interacción con diversos sistemas.
Nota: A partir de la release 2, Joy2PS2 es compatible con PCs reales que utilizan conexión PS/2.
El diseño original del logo y de la carcasa para la versión 2.3 de Joy2PS2 fue creado por Jorge Mejias Cazorla. Puedes encontrar más de su trabajo en su perfil de Twitter:
Fotos de la carcasa y PCB de la versión 2.3 de Joy2PS2
Versión integrada en mando SNES, por Antonio Villena
Video de demostración de la versión 1.0 de Joy2PS2, utilizando el antiguo firmware de Arduino
Los gamepads compatibles con la interfaz son los siguientes: Atari, NeoGeo OldStyle, MSX, Amstrad CPC, VIC 20, Sega Master System, Sega Megadrive (de 3 o 6 botones), Amiga, ZX Spectrum y NES Famicom DB9. Todos ellos pueden conectarse directamente a los zócalos DB15 o DB9. Sin embargo, algunos como el MSX, necesitarán un adaptador especial para utilizar el tercer botón.
Se puede acceder a un estado especial llamado SHIFT en cualquier momento usando cualquiera de las siguientes combinaciones:
En el modo SHIFT, podría parecer que ninguno de los botones funciona, pero esto no es correcto. En este modo, las acciones se activan con el botón 1 del gamepad como evento final. Para cancelar el modo SHIFT, se puede pulsar nuevamente una combinación de SHIFT o el botón 2 del gamepad.
Nota: Las combinaciones descritas se realizan presionando y soltando los botones, sin mantenerlos presionados. Cualquier cambio de dirección reinicia el contador de las otras acciones.
A continuación se describen las secuencias para reiniciar el ZXUno a través del modo SHIFT:
Las siguientes secuencias permiten navegar por el menú de juegos usando el modo SHIFT:
Utiliza las siguientes secuencias en el modo SHIFT para cargar juegos:
Las siguientes funciones pueden activarse en el modo SHIFT mediante las secuencias descritas:
Para alternar entre las configuraciones DB15/DB9 y DB9x2, sigue estos pasos mientras estés en modo SHIFT:
La configuración seleccionada se mantendrá incluso después de un reinicio en caliente del ZXUno.
Desde la release 3, los tiempos de semireloj y reloj para el envío de Scancodes en el ZXUno, tras un reinicio en frío o en caliente, se ajustan a los estándares de un teclado real, siendo 16 y 32 us respectivamente.
Desde la release 5, la función de escucha de comandos del host en el ZXUno está deshabilitada por defecto y tras cualquier reinicio, ya sea en frío o en caliente.
Este modo permite interactuar con el teclado de manera directa a través de los siguientes comandos:
Para actualizar al último firmware oficial, Joy2PS2.hex, puedes utilizar el software de actualización de binarios para AVR, XLoader.
Para actualizaciones desde la línea de comandos en OpenBSD o Linux, utiliza avrdude con los parámetros adecuados:
avrdude -p atmega168 -c arduino -P /dev/cuaU0 -v -b 19200 -U flash:w:joy2ps2.hex
El parámetro /dev/cuaU0 puede cambiar a /dev/cuaU1, /dev/cuaU2, etc., dependiendo de los dispositivos serie conectados.
La configuración es similar, pero el dispositivo podría ser /dev/ttyUSB0, /dev/ttyACM0, etc., dependiendo de cómo se identifique en el sistema.
A continuación se muestra un listado de cores en los que se ha probado la interfaz.
Por último, deseamos agradecer a todos quienes, de una manera u otra, han contribuido a que este proyecto se convierta en una realidad:
Jorge Mejias Cazorla (Mejias3D)
Retro Adapter (Enlace roto)
¿Mi gamepad de Megadrive de 6 botones es completamente reconocido o sólo algunos botones como en el conector DB9 del ZXUno?
Todos los botones son reconocidos y se mapearán según el mapa de teclas configurado. También funcionarán el botón de Start y el botón de Mode para aquellos gamepads de Megadrive que los incluyan.
¿Es posible jugar con 2 jugadores? ¿Qué sucede si se presionan teclas del primer jugador?
Sí, es posible. Al conectar el dispositivo, la interfaz se configura para usarse desde el puerto DB9 principal o el DB15 (Neogeo). Si se usa el puerto DB9 auxiliar (segundo jugador), se activarán teclas asociadas a los últimos botones del DB15 debido a que comparten pines. Para usar dos jugadores, es necesario cambiar a modo DB9x2 usando la secuencia correspondiente en modo SHIFT.
He seleccionado un core con un modo de vídeo diferente al configurado por defecto en la BIOS desde el menú de cores. ¿Cómo puedo cambiarlo sin un teclado físico conectado?
Hay una secuencia para cambiar el modo de vídeo mientras estás en modo SHIFT. Consulta la sección de combinaciones del modo SHIFT en esta wiki para más detalles.
Encuentro un juego que no puedo iniciar porque falta un mapeo para una tecla requerida en el menú de opciones, ¿qué puedo hacer?
El firmware incluye las teclas más comunes utilizadas en los menús de juegos de ordenador, desde '0' a '4' y la 'R' para redefinir. Si se necesitan otras teclas, se pueden solicitar para ser incluidas en una actualización del firmware.
Los mapeados de teclas no se ajustan a las necesidades de un determinado core o juego, hay solución para ello?
Nuevamente, desde el firmware todo o casi todo es posible. Y en cuanto a cores, lo ideal sería seguir una misma norma y no utilizar distintas teclas. Por defecto en la interfaz se ha tratado de elegir las teclas más comunes, aunque se podría revisar, si está justificado.
No estoy de acuerdo con la disposición de secuencias del modo SHIFT, ¿hay alternativas?
Es normal tener preferencias distintas respecto a las secuencias del firmware oficial. Los usuarios pueden debatir y decidir sobre las combinaciones ideales para desarrollar un firmware alternativo. También, si tienes conocimientos de programación, puedes modificar el firmware a tu gusto, ya que los códigos fuente están disponibles para todos.
Cuando conecto un teclado externo, se repiten pulsaciones de teclas al usar el gamepad.
Esto puede ocurrir porque el teclado externo tiene activada la escucha de comandos, lo que puede interferir en la comunicación al compartir los pines CLK/DATA del conector PS/2. Una solución es colocar un diodo en la línea DATA con el cátodo hacia el teclado externo. Para más información, visita este enlace:
http://www.zxuno.com/forum/viewtopic.php?f=63&t=1804
Aunque Joy2PS2 fue diseñado para funcionar sin necesidad de un teclado externo, especialmente en configuraciones como máquinas arcade tipo bartop, usar un teclado puede mejorar la experiencia del usuario.