Adaptador gamepad PS2 para Spectrum


   Introducción
    El siguiente montaje nos permite utilizar un gamepad de PS2 en nuestros Spectrum. Este adaptador transforma las señales de gamepad a señales que puede interpretar un interface joystick usado por cualquier Spectrum. Para él será como si tuviera conectado un joystick de aquella época. Este adaptador debería funcionar con cualquier interface joystick aunque se recomienda el uso de interface Sinclair de 2 puertos para poder utilizar todo el potencial del Gamepad

    En el caso de los Spectrum +2, +2A/B y +3 no necesitaremos un interface joystick dado que estos modelos ya tienen incorporados 2 puertos Sinclair.

    Software

    Lo primero al empezar este proyecto fue buscar información sobre el funcionamiento de un gamepad de PS2.Esta información puede ser encontrada fácilmente en Internet. Yo la he sacado de esta página:

    http://home.quicknet.com.au/andrewm/electron/psxcont.html

    Visto como funciona el gamepad, he recurrido a la utilización de un PIC para gestionar la comunicación con el gamepad. El PIC convertirá el gamepad a un joystick como los que se utilizaban en la época del Spectrum.

    Al buscar información sobre PIC, lenguajes de programación, etc,etc, encontré un software para el PIC 16F877A que ya hacía lo yo pretendía hacer. Por ello, el adaptador que se presenta en este artículo usa este software sacado del magnifico foro:

    http://www.todopic.com.ar/foros/

    En cuanto al autor del código software, Bruno Fascendini, se le ha solicitado permiso para usar su software sobre mi adaptador

   Hardware

    El esquema básico del adaptador es muy sencillo.



    En este adaptador, el PIC (El software se puede adaptar a cualquier PIC de la familia 16F87xA) utiliza uno de sus puertos ( RA) para comunicarse con el gamepad de PS2. Los puertos RB y RC están configurado como salidas. Cuando el botón del gamepad se pulsa, la salida correspondiente pasa a valor "0" o "1" (variando el software del pic). De esta manera funcional algunos interfaces

    Sin embargo, muchos otros lo que hacen es que al pulsar un botón se cierra un contacto y deja pasar una señal. Así funciona, por ejemplo, el interface multijoystick MHT e INDESCOMP o los Spectrum +2A/+3.

    Para simular este contacto, se añadió al esquema el switch analógico 4066.

   

    De esta manera, cuando el PIC indica que una dirección o botón está pulsado, el 4066 deja pasar la señal "COMUN" al otro lado.

    Por último, el adaptador debe de tener en cuenta un último detalle. Los Spectrum +2, +2A/B y +3 tiene puertos Sinclair integrados con una distribución de pines distinta al estándar Atari.

Normal Atari



1.- Arriba
2.- Abajo
3.- Izquierda
4.- Derecha
5.- NC
6.- Botón
7.- NC (Vcc)
8.- COMUN
9.- NC
Spectrum +2, +2A/B, +3


1.- NC
2.- COMUN
3.- NC
4.- Botón
5.- Arriba
6.- Derecha
7.- Izquierda
8.- COMUN
9.- Abajo

   Con esto esto han salido 2 esquemas / placas, cada una con sus ventajas e incovenientes. Se pueden en esta página

   Número de botones disponibles.

   En la época del Spectrum, los Joystick solían tener 4 direcciones+botón. Sin embargo el gamepad de ps2 tiene muchos más. ¿No habría alguna manera de poder disponer de ellos en el Spectrum?.

   La respuesta es SI. Los interfaces de joystick tipo Sinclair tenían la posibilidad de conectar 2 joystick para poder jugar 2 personas. El adaptador de gamepad PS2 puede utilizar los 2 puertos, permitiendo un total de 4 direcciones + 6 botones. Si disponemos de un interface con un solo puerto (kempton, Sinclair, cursor, etc) solo dispondremos de 4 direcciones + botón "cuadrado".

   De manera gráfica y usando la norma Atari , queda reflejado de la siguiente manera:
  1 Puerto joystick


1- Arriba
2- Abajo
3- Izquierda
4- Derecha
6- Botón
8- COMUN

2 Puertos Joystick
  
1- Arriba
2- Abajo
3- Izquierda
4- Derecha
6- Botón
8- COMUN


1- Botón
2- Botón
3- Botón
4- Botón
6- Botón
8- COMUN2

    Alimentación del adaptador

    Una nota a tener en cuenta es que el interface de joystick debe tener la señal VCC para dar corriente al adaptador y al gamepad. El consumo del  conjunto es de solo 25mA por lo que el propio Spectrum puede darle alimentación sin ningún problema.

    Las soluciones para este problema son:

    - Utilizar una fuente de alimentación externa. El adaptador lleva una toma de corriente igual a la utilizada por los Spectrum (negativo por dentro, positivo por fuera).

    - En el caso de los Spectrum 16K, 48K, +48K, +128K, +2 gris, utilizar la misma fuente que alimenta el Spectrum. Se conecta la fuente al adaptador y , con una extensión a fabricar, al Spectrum

    - Modificar el puerto joystick para que tenga alimentación. Si no queremos andar con una fuente externa, podemos poner VCC y GND en los conectores de nuestro interface o Spectrum +2/+3. El adaptador puede recibir la alimentación por los siguientes pines:


Normal Atari



7.- VCC
9.- GND
Spectrum +2, +2A/B, +3


1.- VCC
3.- GND

    Se muestran algunos ejemplos de las 2 últimas soluciones: Como modificar interfaces y Spectrum

   Fotos

   Spectrum +2A + adaptador 1 puerto

   
   Adaptador 1 puerto con caja plástico 76x50mm

   

   Spectrum 48K + adaptador 1 puerto + RAMTURBO

   


   OTROS DISPOSITIVOS PS2 (dic 2007)

   Alfombra de Baile

   
   La alfombra de baile de la empresa "game" funciona perfectamente con el adaptador PS2

   Guitarra "Guitar Hero"

   
Detectado por el PIC como:
Botón verde:L2
Botón rojo: Circulo
Botón amarillo: Triángulo
Botón azul: X
Botón naranja: ¿?
Cuerda arriba: arriba
Cuerda abajo: abajo
Select: select
Start: start
Levantar guitarra: R2
   La "guitar hero" presentó/a algunos problemas con el diseño original del adaptador PS2

      - El botón verde ( L2 ) y "levantar guitarra" (R2), si eran detectados por el PIC (salidas RC0-RC3) pero no era señales utilizadas por el adaptador. Esto es así debido a que disponiamos de 10 funciones usando los 2 puertos sinclair y había que descartar botones del gamepad PS2. La solución a este problema, ha sido mezclar los botones L2,L1 con "IZQUIERDA" y R2,R1 con "DERECHA" dado que la "guitar hero" no utiliza estas señales. Esta mezcla la realiza una nueva rutina insertada en el PIC por no implica cambios en el diseño hardware.

      Esta nueva rutina también funciona en el gamepad PS2. Si se pulsa R2 o R1 con el nuevo software, obtenemos la misma señal que si pulsado "IZQUIERDA" y en el caso de L2, L1 tendriamos "IZQUIERDA"

      - Botón naranja. El PIC no detecta que botón es.

      - Palanca. La palanca de la "guitar Hero" es un mando análogico,  fuera de las prestaciones actuales del adaptador PS2.

   DOCUMENTACION

   Mail permiso utilización software PIC y código original PIC
   Software PIC modificado para PIC 16F876A y PIC 16F873A
   Software PIC modificado para PIC 16F876A y PIC 16F873A (con rutina R2,R1 > DERECHA y L2,L1 > IZQ )
   Esquemas y placas formato Eagle 4.09
   Esquemas y placas en PDF

2007 José Leandro Novellón