Adaptador USB para Joystick Commodore 64

El joystick de la Commodore 64 no es más que 5 interruptores (on/off) dispuestos de manera conveniente. 4 interruptores controlan los movimientos de dirección: arriba, abajo, derecha e izquierda y el quinto es el botón de disparo.

La gracia de este pequeño proyecto es que es de esos que se hacen con pocas cosas y como fue en mi caso, con cosas rotas o en desuso.

El objetivo es poder conectar a nuestra PC por medio del puerto USB nuestro joystick preferido de Commodore 64 y poder jugar así los juegos en un emulador haciendo uso de un mando real, sin necesidad de jugar usando el teclado o un moderno joystick analógico que distan mucho de la añorada jugabilidad de los 80′.

Los componentes que utilicé fueron:

– Un joystick USB roto (no funcionaba la dirección, vaya a saber uno porque)
– Un conector DB9 macho (la ficha del joystick es hembra)
– Un joystick de C64 en perfecto estado.

En cuanto a Software necesitaremos tener instalado en nuestra PC:

El emulador VICE (http://www.viceteam.org) para C64
Los ROMs de C64 que sean de nuestro agrado (http://www.c64.com). Creo yo que Giana Sisters debe ser el primero a probar.
El AutoHotKeys (http://www.autohotkey.com) que vamos a utilizar luego para mapear los botones del Joystick
Antes de hacer nada vamos a asegurarnos cuales son aquellos botones que funcionan de nuestro mando USB. Esto lo podemos hacer desde el panel de control de Windows o con algún juego. Si alguno no funciona tomemos nota ya que lo debemos evitar luego como fue mi caso.

En Windows XP, dentro del panel de control; dispositivos de juegos encontraremos una pantalla como esta que nos será útil para tal fin.

Acto seguido vamos a desarmar el Joystick USB. Hasta quedarnos solo con la placa y el cable USB, sacando los botones de plástico y la carcasa. El joystick USB, en cuanto a funcionamiento no dista mucho del de la C64, también son interruptores on/off aunque con los componentes necesarios para enviar los datos por USB a la PC.

Antes de desarmarlo mi Joystick tenía este aspecto:

Desarmado se veía así:

Para verificar esto que comentaba anteriormente de los interruptores, podemos conectar el joystick desarmado a nuestra PC y con un elemento metálico tocar las áreas doradas (donde apoyan los botones) vemos que al cerrar el circuito el botón se presiona y la instrucción llega a nuestra PC.

Con un tester podemos medir que parte del área dorada está conectada a tierra (GND) y la otra a uno de los pines del circuito integrado que controla los botones y envía la señal por USB a la PC. Cerrando la conexión entre ambas terminales, tocándolos con un elemento metálico por ejemplo, el circuito cierra y el botón queda presionado.

Esto es la base de nuestro proyecto. Vamos a aprovechar los interruptores del joystick C64 para cerrar (y abrir) las conexiones entre los terminales y simular así que alguien presionó un botón del joystick USB, cuando en realidad lo que se hizo fue mover la palanca o presionar el botón de disparo.

Tomamos primero la ficha macho DB9 y sacamos de los pines 1, 2, 3, 4, 6 y 8 un cable; si utilizamos distintos colores nos va a facilitar las cosas.
El 8 lo soldamos a tierra (GND), buscamos con el tester cuales son las pistas que conducen a ese destino y con paciencia y pericia soldamos donde mejor nos conviene.

En algunos casos existe ya una soldadura y podemos aprovecharnos de eso. Los botones de LEFT 1 y 2 y RIGHT 1 y 2 en el caso de mi joystick ya tenían soldados cables que aproveché. En otros casos la pista va desde el contacto dorado del botón hasta el circuito integrado. Ahí lo que recomiendo es hacer un pequeño agujero con una mecha de las mas pequeñas (si es de banco mejor) que pase por al lado de la pista, sin cortarla, y nos permita así pasar el cable de lado a lado de la placa y soldarlo sobre la pista. La resina y otros protectores nos van a incomodar un poco la soldadura pero con paciencia, calor (y una pequeña lija muy delicada) se puede resolver.

Ahora bien, si nuestro joystick no tiene problemas en los botones de dirección (no fue mi caso lamentablemente) vamos a respetarlos. Es decir, vamos a conectar los pines 1, 2, 3 y 4 de nuestro DB9 a las pistas de nuestro joystick USB que van hacia: arriba, abajo, izquierda y derecha en ese orden. Si podemos hacer eso nos vamos a ahorrar el AutoHotKeys. El botón de disparo (pin 6) lo conectamos a cualquier botón.

En el caso de que no podamos hacer eso conectamos cualquier pin a cualquier pista, de manera indistinta. Luego mapeamos los botones con el AutoHotKeys.

Ahora que ya tenemos terminado nuestro adaptador DB9 a USB se nos abren dos caminos.

Si pudimos respetar la dirección vamos a conectar el joystick al puerto USB, vamos a conectar el joystick C64 a la ficha DB9 macho y luego desde el VICE le diremos que vamos a utilizar el joystick USB que nos reconozca. Cargaremos un ROM y a disfrutarlo.

Caso contrario lo que vamos a hacer es instalar el AutoHotKeys y configurarlo para que cuando presionemos un botón del Joystick esta instrucción sea traducida y simule que presionamos una tecla de nuestro teclado.

¿ Por qué ? si bien el VICE permite jugar utilizando un Joystick USB nos obliga a utilizar botones de dirección para movernos y cualquier otro botón como disparo; en mi caso con los botones de dirección rotos no podía utilizar el joystick y la idea era justamente aprovecharlo antes de que termine siendo chatarra. La solución entonces fue decirle al VICE que voy a jugar con el teclado numérico y la tecla CTRL derecha e instalar un software en medio (el AutoHotKeys) que haga de traductor y cada vez que un botón sea presionado en el joystick o la palanca de dirección se mueva lo convierta a una tecla de mi teclado y todos felices.

Una vez que terminemos de instalar el AutoHotKeys lo buscaremos entre nuestros programas y lo ejecutaremos. Veremos un icono junto al reloj (una H blanca sobre un fondo verde) le damos botón derecho, seleccionamos “Edit this script” y ahí pegamos el siguiente código, que básicamente lo que hace es instruir al AutoHotKeys a que cada vez que se presione un botón del joystick lo convierta en una tecla presionada. Para mas información sobre esta aplicación pueden consultar el tutorial (http://www.autohotkey.com/docs/Tutorial.htm)

Lo que deben modificar son los IDs de los botones. El primer caso, por ejemplo, dice “Joy6::” En mi adaptador el botón número 6 (el ID lo obtienen de la aplicación dispositivos de juegos del panel de control) corresponde a la palanca hacia la izquierda, por lo tanto convierto ese botón para que simule que en realidad estoy presionando el Numpad Left (el 4 en el teclado numérico de mi teclado) que es lo que VICE espera leer para mover a la izquierda.

Joy6::
Loop {
SendInput {NumpadLeft down}
GetKeyState, v, Joy6, P
if v = U
break
}
SendInput {NumpadLeft up}
Return

Joy4::
Loop {
SendInput {NumpadRight down}
GetKeyState, v, Joy4, P
if v = U
break
}
SendInput {NumpadRight up}
Return

Joy7::
Loop {
SendInput {NumpadUp down}
GetKeyState, v, Joy7, P
if v = U
break
}
SendInput {NumpadUp up}
Return

Joy5::
Loop {
SendInput {NumpadDown down}
GetKeyState, v, Joy5, P
if v = U
break
}
SendInput {NumpadDown up}
Return

Joy8::
Loop {
SendInput {RControl down}
GetKeyState, v, Joy8, P
if v = U
break
}
SendInput {RControl up}
Return

En caso de que el mando no responda primero vamos a switchear los puertos en el VICE. La C64 tiene dos puertos para joystick, algunos juegos usan el 1, otros el 2.

Si seguimos con problemas vamos a ir al panel de control; dispositivos de juegos. Ahí moveremos la palanca y presionaremos los botones. Deberían responder todos, en caso de que no lo hagan puede ser un problema de soldadura o que en el procedimiento algo haya dejado de funcionar. La pista se puede encontrar quemada o el circuito integrado parcialmente destruido, en ese caso intentaremos buscar una pista que funcione.

Desde ya, se pueden hacer 2 adaptadores y utilizar 2 joysticks en simultaneo, aunque muy pocos juegos lo requieren. Mas aún en el VICE que contamos con la opción de switchear por software el puerto al que se encuentra conectado nuestro joystick.

La jugabilidad con este adaptador es perfecta, no se va a extrañar para nada la forma de juego de una Commodore 64, salvo por el sonido … la emulación del SID nunca será igual al hardware real.

Leave a Reply

Your email address will not be published. Required fields are marked *