Herramientas de usuario

Herramientas del sitio


joy2ps2_en

¡Esta es una revisión vieja del documento!


Description

Joy2PS2 is a versatile interface designed to connect one or two gamepads from various retro platforms. This solution converts and redirects gamepad events into keyboard strokes to a PS/2 port. You'll find this type of port on old PCs and some modern ones, as well as on recent devices like the Next or the ZXUno, the latter being the platform for which it was initially designed. This interface is highly compatible and adaptable, including several keyboard maps in its firmware to facilitate interaction with different systems.

Note: As of release 2, Joy2PS2 is compatible with real PCs that use a PS/2 connection.

The original design of the logo and casing for Joy2PS2 version 2.3 was created by Jorge Mejias Cazorla.

Photos of the casing and PCB of Joy2PS2 version 2.3

Integrated version in an SNES controller designed by Antonio Villena

Demo of Joy2PS2 version 1.0, using the old Arduino firmware

Controls

The gamepads compatible with the interface include: Atari, NeoGeo OldStyle, MSX, Amstrad CPC, VIC 20, Sega Master System, Sega Megadrive (3 or 6 buttons), Amiga, ZX Spectrum, and NES Famicom DB9. All of these can be directly connected to DB15 or DB9 sockets. However, some like the MSX, will require a special adapter to use the third button.

You can enter a special state called SHIFT at any time using any of the following combinations:

  • Pressing Start + Button 1
  • Pressing Select + Start
  • Pressing and releasing the Keymapper key (necessary only for gamepads without a Start button)

In SHIFT mode, it might seem like none of the buttons are working, but this is not the case. In this mode, actions are triggered by pressing button 1 on the gamepad as the final event. To exit SHIFT mode, you can press a SHIFT combination again or press button 2 on the gamepad.

Note: The combinations described are performed by pressing and releasing the buttons, not holding them down. Any change in direction resets the count of other actions:

ZXUno Reboot

Below are the sequences for rebooting the ZXUno through the SHIFT mode:

  • Down once, then button 1: Reset. Automatically switches to cursor mode
  • Down twice, then button 1: MasterReset. Automatically switches to cursor mode.
  • Down three times, then button 1: MasterReset and access to ROMs. Automatically switches to cursor mode.
  • Down four times, then button 1: MasterReset and access to cores. Automatically switches to cursor mode.
  • Down five times, then button 1: MasterReset and access to BIOS. Automatically switches to cursor mode.
  • Down six or more times, then button 1: Continues with the option of five times.

Game Menu

The following sequences enable navigating the game menu using SHIFT mode:

  • Up once, then button 1: Triggers the 'R' key.
  • Up twice, then button 1: Triggers the '0' key.
  • Repeat up followed by button 1: Continues sequentially from '1' to '9', where it holds.

Game Loader

Use the following sequences in SHIFT mode to load games:

  • Right once, then button 1: Activates the NMI.
  • Right twice, then button 1: Executes the 'LOAD “”' keys (128k mode).
  • Right three times, then button 1: Executes the 'J “”' keys (load“” in 48k mode).
  • Right four times and subsequent: Continues with the option from three times.

Extra Functions

The following functions can be activated in SHIFT mode using the sequences described:

  • Left once, then button 1: Activates Keyboard Mode (details below).
  • Left twice, then button 1: Executes the Escape function (useful for single-button joysticks, used in conjunction with the Keymapper button as shift).
  • Left three times, then button 1 for player 1 or 2: Changes the keyboard map for the corresponding player (see details of available maps below).
  • Left four times, then button 1: Changes video mode (Scroll / Lock).
  • Left five times and subsequent: Continues with the video mode option.

Switching between DB15/DB9 and DB9x2

To toggle between DB15/DB9 and DB9x2 configurations, follow these steps while in SHIFT mode:

  • Press and hold button 1, then press button 2.

The selected configuration will persist even after a warm reboot of the ZXUno.

Scancode Timing

From release 3, the half-clock and clock times for sending Scancodes on the ZXUno, after a cold or warm reboot, comply with the standards of a real keyboard, being 16 and 32 microseconds respectively.

  • In SHIFT mode, holding Start and pressing UP: Decreases the times in multiples of four, to a minimum of 4 and 8 microseconds.
  • In SHIFT mode, holding Start and pressing DOWN: Increases the times in multiples of four, to a maximum of 16 and 32 microseconds.

Host Command Listening Enable / Disable

From release 5, the host command listening function on the ZXUno is disabled by default and after any reboot, whether cold or warm.

  • To enable listening: In SHIFT mode, press and hold button 1, then press the right key.
  • To disable listening: In SHIFT mode, press and hold button 1, then press the left key.
  • To keep listening enabled temporarily: Stay in SHIFT mode. Listening will automatically disable after the keyboard initialization.“

Keyboard Mode (KEYSTROKES)

This mode allows direct interaction with the keyboard through the following commands:

  • Up: Changes to the next key and prints the character on the screen.
  • Down: Changes to the previous key and prints the character on the screen.
  • Left: Deletes the previous character.
  • Right: Accepts the current character or inserts a space.
  • Button 1: Switches to the key corresponding to the right shift key (for typing uppercase letters or special characters).
  • Button 2: Functions as the Enter key.
  • To exit the mode: Enter SHIFT mode and choose another option, or exit SHIFT mode if already inside.

Hello World' Example in Keyboard Mode

Official Firmware

To upgrade to the latest Official Firmware, you can use the AVR binary update software, XLoader.

For updates from the command line in OpenBSD or Linux, use avrdude with the appropriate parameters.

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

The parameter /dev/cuaU0 may change to /dev/cuaU1, /dev/cuaU2, etc., depending on the connected serial devices.

  • Linux:

The setup is similar, but the device might be /dev/ttyUSB0, /dev/ttyACM0, etc., depending on how it is identified in the system.

Keyboard Maps

Map 0

(By default, upon connecting or cold rebooting the ZXUno)

(Starting from Release 4)

Map 1

(Starting from Release 4)

Map 2

(Default M.A.M.E keys)

Listado de cores probados

List of Tested Cores.

Link to Spectrum

Link to others

  • Spectrum
  • Amstrad CPC
  • BBC Micro
  • Atari 800 XL
  • Kyp Spectrum
  • Jupiter ACE
  • SAM Coupe
  • ZX81
  • Acorn Electron
  • Acorn Atom
  • TBBlue (Next)
  • PC/XT (From release 2)
  • Apple II (resynthesizing core with CLK and DATA as PULLUP, Download here)
  • VIC-20 (resynthesizing core with CLK and DATA as PULLUP, Download here)
  • Oric Atmos (resynthesizing core with CLK and DATA as PULLUP, Download here)
  • C64 beta 7 (resynthesizing core with CLK and DATA as PULLUP, Download here)
  • MSX1
  • Sega Master System (From release 4, currently only for the first player)
  • Arcade: Phoenix, Pacman, Galaxian, Frogger, Invaders, Scramble, Galaga (From 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_en.1718819230.txt.gz · Última modificación: 2024/06/19 17:47 por spark2k06