Herramientas de usuario

Herramientas del sitio


joy2ps2

Descripción

Se trata de una interfaz a la que se le puede conectar uno o dos gamepads de diversas plataformas antiguas, convirtiendo y redirigiendo los eventos de éstos en pulsaciones de teclado hacia un puerto PS/2. Esta interfaz trae consigo varios mapas de teclado configurados en su firmware.

Este tipo de conector para teclado se puede encontrar en antiguos PCs o algunos modernos, pero por ejemplo también en el recientemente anunciado Next o el ZXUno. Siendo éste último para el que fue inicialmente diseñado, debido a que se han creado diversos atajos desde el conector del joystick principal que permiten controlar el core de Spectrum y acceder a la BIOS, o sus menús de carga de otras ROMs y cores, sin embargo el uso en las otras plataformas no es problema con la debida adaptación del firmware.

Nota: Desde la release 2, ya es compatible con PCs reales basados en PS/2.

Diseño original del logo y carcasa para la versión 2.3 de Joy2PS2 por Jorge Mejias Cazorla

Fotos de la carcasa y PCB de la versión 2.3 de Joy2PS2

Versión integrada en mando SNES, por Antonio Villena

Video demostración con la versión 1.0 de Joy2PS2 controlado por el antiguo firmware de arduino

Los distintos gamepads soportados son los siguientes, todos ellos pueden conectarse directamente al zocalo DB15 o DB9, a excepción de alguno como MSX que requeriría de un adaptador especial, aunque sólo para poder usar el tercer botón:

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.

Controles

Desde el gamepad principal se puede controlar el ZXUno, así como todo tipo de menús. Al comienzo, éste siempre se encuentra mapeado en modo cursores, primer botón Enter y segundo Escape (modo menú tradicional).

En cualquier momento podremos pasar a un estado especial, al que llamaremos SHIFT. Para acceder a este estado, se puede hacer de cualquiera de las siguientes formas:

  • Pulsando Start + Botón 1
  • Pulsado Select + Start
  • Pulsando y soltando la tecla Keymapper (Necesario solo con gamepads sin el botón Start)

Una vez en el modo SHIFT, parecerá que no funciona ningún botón , pero no es así. A partir de ahora se puede tomar la siguiente acción, que se llevará a cabo al pulsar el botón 1 del gamepad como evento final (para cancelar, volver a pulsar la combinacion de SHIFT, o bien pulsar el botón 2 del gamepad):

Nota: Las combinaciones abajo expuestas son pulsando y soltando mayoritariamente (sin mantener botones pulsados), cualquier cambio de direccion reinicia el contador de las otras:

  • Sólo botón 1: Cambio de cursores a OPQA y viceversa en el Joystick 1 (el principal).Mapas de teclado
  • Sólo botón 2: Cancelar modo SHIFT (también se puede cancelar volviendo a pulsar la combinación de SHIFT)

Reinicio del ZXUno

  • 1 vez abajo y luego botón 1: Reset (Se cambia automáticamente a cursores)
  • 2 veces abajo y luego botón 1: MasterReset (Se cambia automáticamente a cursores)
  • 3 veces abajo y luego botón 1: MasterReset y entrada a ROMs (Se cambia automáticamente a cursores)
  • 4 veces abajo y luego botón 1: MasterReset y entrada a cores (Se cambia automáticamente a cursores)
  • 5 veces abajo y luego botón 1: MasterReset y entrada a BIOS (Se cambia automáticamente a cursores)
  • 6 veces y siguientes… se mantiene en la opción de las 5 veces
  • 1 vez arriba y luego botón 1: tecla 'R'
  • 2 veces arriba y luego botón 1: tecla '0'
  • … así sucesivamente hasta tecla '9', donde se mantiene

Cargador de juegos

  • 1 vez derecha y luego botón 1: NMI
  • 2 veces derecha y luego botón 1: teclas 'LOAD “”' (modo 128k)
  • 3 veces derecha y luego botón 1: teclas 'J “”' (load“” modo 48k)
  • 4 veces y siguientes… se mantiene en la botón de las 3 veces

Funciones extra

  • 1 vez izquierda y luego botón 1: Modo teclado (ver abajo)
  • 2 veces izquierda y luego botón 1: Escape (necesario si se usa joystick de un solo botón , junto como el botón de keymapper a modo de shift)
  • 3 veces izquierda y luego botón 1 de jugador 1 o 2: Cambio de mapa del jugador correspondiente. (ver abajo mapas disponibles)
  • 4 veces izquierda y luego botón 1: Cambio de Vídeo (Scroll / Lock)
  • 5 veces y siguientes… se mantiene en la opción 4

Cambio entre DB15/DB9 y DB9x2

  • Estando en modo SHIFT pulsar el botón 1, y manteniendo éste pulsado, pulsar botón 2

(La configuración seleccionada permanece durante el reinicio en caliente de ZXUno)

Tiempos de envío de Scancodes

(Desde la release 3)

Por defecto y tras un reinicio del ZXUno, tanto en frío como en caliente, los tiempos de semireloj y reloj en el envío de Scancodes se encuentra dentro de los parámetros estándar de comportamiento de un teclado real, en este caso 16 y 32 us respectivamente.

  • Estando en modo SHIFT, mantener pulsado Start y pulsar ARRIBA: Disminuye los tiempos en múltiplos de cuatro, hasta un mínimo de 4 y 8 us.
  • Estando en modo SHIFT, mantener pulsado Start y pulsar ABAJO: Aumenta los tiempos en múltiplos de cuatro, hasta un máximo de 16 y 32 us.

Desactivación / Activación de escucha de comandos del Host

(Desde la release 5)

Por defecto y tras un reinicio del ZXUno, tanto en frío como en caliente, la escucha de comandos se encuentra desactivada.

  • Para activar la escucha, estando en modo SHIFT pulsar el botón 1, y manteniendo éste pulsado, pulsar derecha.
  • Para desactivar la escucha, estando en modo SHIFT pulsar el botón 1, y manteniendo éste pulsado, pulsar izquierda.
  • Para mantener activa la escucha de forma temporal, permanecer en modo SHIFT. Tras la inicialización de teclado, se saldrá del modo SHIFT de forma automática.

Modo teclado (KEYSTROKES)

  • arriba: cambio de tecla hacia adelante e impresión en pantalla
  • abajo: cambio de tecla hacia atrás e impresión en pantalla
  • izquierda: borrar tecla
  • derecha: aceptar tecla o espacio
  • botón 1: cambio de tecla a correspondiente con tecla derecha del shift (para imprimir mayúsculas o caracteres especiales)
  • botón 2: Intro
  • Para salir: Entrar al modo SHIFT y elegir otra opción, o salir del modo SHIFT una vez dentro

Ejemplo de "Hello World" en modo teclado

Firmware oficial

Firmware oficial

Para la actualización del firmware a partir del último firmware oficial Joy2PS2.hex se puede utilizar el programa de actualización diseñado para tal efecto Joy2PS2Updater.zip, el cual detecta automáticamente el puerto donde se encuentra conectada la interfaz:

O bien utilizar el software de actualización de binarios para AVR XLoader

Desde línea de comandos en OpenBSD o Linux, puede utilizarse avrdude con los parámetros adecuados:

OpenBSD: avrdude -p atmega168 -c arduino -P /dev/cuaU0 -v -b 19200 -U flash:w:joy2ps2.hex

El parámetro /dev/cuaU0 puede cambiar a 1, 2, 3… dependiendo si se encuentran otros dispositivos serie.

En Linux es igual pero /dev/… cambiará en función de cómo se encuentre identificado por el sistema.

Mapas de teclado

Mapa 0

(Por defecto al conectar o reiniciar en frío el ZXUno)

(Desde Release 4)

Mapa 1

(Desde Release 4)

Mapa 2

(Teclas por defecto de M.A.M.E)

Listado de cores probados

A continuación se muestra un listado de cores en los que se ha probado la interfaz.

Enlace a Spectrum

Enlace a otros

  • Spectrum
  • Amstrad CPC
  • BBC Micro
  • Atari 800 XL
  • Kyp Spectrum
  • Jupiter ACE
  • SAM Coupe
  • ZX81
  • Acorn Electron
  • Acorn Atom
  • TBBlue (Next)
  • PC/XT (Desde la release 2)
  • Apple II (resintetizando core con CLK y DATA como PULLUP, Descarga aquí)
  • VIC-20 (resintetizando core con CLK y DATA como PULLUP, Descarga aquí)
  • Oric Atmos (resintetizando core con CLK y DATA como PULLUP, Descarga aquí)
  • C64 beta 7 (resintetizando core con CLK y DATA como PULLUP, Descarga aquí)
  • MSX1
  • Sega Master System (Desde release 4, y de momento sólo el primer jugador)
  • Arcade: Phoenix, Pacman, Galaxian, Frogger, Invaders, Scramble, Galaga (Desde release 4)

Versión actual

Agradecimientos

Por último, agradecer a todos aquellos que de una manera u otra han contribuido a que este proyecto sea una realidad:

ZXUno

Equipo ZXUno

Comunidad ZXUno

Jorge Mejias Cazorla (Mejias3D)

Antonio Villena

mcleod_ideafix

Samuel (Quest)

Bruno Silva

Juanjo Luna (Yombo)

Retro Adapter

PS2Emu de Dani

FAQ

Tengo un gamepad de Megadrive de 6 botones, reconoce todos o sólo 2 como en el conector DB9 del ZXUno?

Reconoce todos, se encontrarán mapeados a las teclas del mapa que se tenga configurado. Además, también funcionará el botón de Start y el botón de Mode para aquellos gamepads de Megadrive que dispongan del mismo.

Se puede jugar a 2 jugadores? Si se estan pulsando teclas correspondientes al primer jugador…

Por supuesto. Nada mas conectarlo, la interfaz se encuentra configurada para ser utilizada únicamente desde el puerto DB9 principal o el DB15 (Neogeo), si se utiliza el DB9 auxiliar (segundo jugador), se pulsarán teclas asociadas a los últimos botones del DB15 porque comparten pines. Solo hay que cambiar previamente a modo DB9x2 con la secuencia correspondiente estando en modo SHIFT.

Desde el menu de cores he seleccionado un core con distinto modo de vídeo al que tengo por defecto configurado en la BIOS. Sin un teclado físico conectado, cómo lo cambio?

Existe una secuencia de cambio de modo de vídeo estando en modo SHIFT, revisa la sección de combinaciones del modo SHIFT en esta misma wiki.

Hay un juego que no puedo comenzar porque no existe un atajo que mapee la tecla que pide en el menú de opciones, qué hago?

En el firmware se ha tenido en cuenta las teclas mas comunes en los menús de los juegos de ordenador, como son de 0 a 4 y la R para redefinir. Si vemos que son necesarias otras teclas, se pueden incluir en una versión actualizada del firmware, pídelo y se buscará la mejor opción si realmente es muy común… porque siempre hay que tratar de mantener la usabilidad de la interfaz.

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 me gusta la disposición de secuencias del modo SHIFT o el modo SHIFT en sí, yo lo haría de otra forma.

Es totalmente normal no estar de acuerdo con las secuencias del firmware oficial, cada uno puede tener sus preferencias. Se podría debatir entre todos los usuarios de la interfaz cuales son las combinaciones ideales y hacer un firmware alternativo al oficial (firmware de la comunidad), no hay problema. O bien si dispones de conocimientos de programación, modificarlo tú mismo a tu gusto ya que los fuentes están a disposición de todos ;-)

Cuando conecto un teclado externo se repiten pulsaciones de teclas al utilizar el gamepad.

Es debido a que el teclado externo dispone de escucha activa de comandos, y ello puede interferir en la comunicación al compartir CLK/DATA del conector PS/2. Existe una solución colocando un diodo en la linea DATA con el cátodo hacia el teclado externo, para mas información:

http://www.zxuno.com/forum/viewtopic.php?f=63&t=1804

No obstante, Joy2PS2 nació con el objetivo de que fuera totalmente prescindible un teclado externo gracias a sus atajos multicore en ZXUno, para utilizar por ejemplo en maquinas arcade tipo bartop. Sin embargo con un teclado conectado la experiencia final de usuario puede ser mejor, siendo la solución del diodo la mejor encontrada hasta el momento.

joy2ps2.txt · Última modificación: 2023/09/10 18:17 por spark2k06