Hace un tiempo que quiero hacer un adaptador para usar joysticks de PC en la C64, usando un PIC, agregando tambien emulacion de mouse y paddles. En estos dias empece a armar una placa para probar primero la emulacion de joystick atari, pero en el medio de ese proceso se me ocurrio que se podia hacer una placa mas barata con un LM324 y unos pocos componentes, y asi fue que en los ultimos dos dias lo pude diseñar, armar y probar en la C64 con un joystick analogico que tengo.
El circuito no es muy complicado, lleva un LM324 que son 4 amplificadores operacionales que uso como comparadores, se pueden usar otros chips similares pero este es el que tenia para probar. Ademas de eso se necesitan 6 resistencias y 5 diodos, aparte de los conectores, y por supuesto una placa y cables.
Lo que hace es convertir el valor de los potenciometros en voltaje, y despues se usan 2 comparadores por cada eje para activar los movimientos si el voltaje supera el medio o baja del medio. Cuando el joystick se deja en el centro y esta bien calibrado, el voltaje queda alrededor de la mitad, pero como estos potenciometros no son muy precisos le dejo un margen desde el centro en el que no se activa ninguna direccion. Este margen se puede ampliar aumentando los valores de dos resistencias, lo que causa esto es que se tenga que mover mas para que se activen las direcciones.
El plano es este, no tengo tiempo ahora de hacerlo bien asi que va foto del papel:
Video probando el prototipo y despues la placa armada, con los juegos Galencia y Terra Cresta:
Por lo que estuve viendo del circuito de la TS2068 deberia funcionar tambien ahi, pero resulta que la TS activa la masa con una linea del bus de direcciones, por lo cual recien enciende el chip cuando va a chequear el estado del joystick, o por lo menos tenemos que asumir que puede pasar eso en el peor de los casos. No se si el circuito arranca lo suficientemente rapido como para tener la lectura correcta, quise probarlo en la maquina pero me encontre con que el conector DB9 no cabe, y no tengo ningun cable de joystick, asi que va a quedar la duda hasta que encuentre la forma de probar.
En MSX no deberia andar asi como esta, habria que cambiar las conexiones de 5V y masa, y se podria usar el segundo boton del joystick, agregando otro diodo mas, ya que la MSX soporta dos botones.
Estuve probando juegos como Wonderboy y Uridium, y el joystick no era muy preciso porque era demasiado sensible a los movimientos, en el video se puede ver cuando pruebo con leds, que costaba mover en una sola direccion (sin diagonales). Esto era asi porque se deja un rango de deteccion en el centro para que la palanca no active una direccion al menor movimiento, como este rango era muy chico habia que ser bastante preciso para no mover en diagonales. Lo solucione cambiando dos resistencias, en el plano lo que cambiaria es la resistencia de 2K2 por una de 3K9, puede ser que ande bien una de 3K3 pero justo no tengo, y la de 22K ahora tendria que valer 23K9, valor que no existe como estandar.
Yo no tengo puesta una resistencia de 22K porque tampoco tenia cuando arme la placa, asi que use dos de 10K y una de 2K2, lo cual me facilito reemplazar tambien esa de 2K2 por una de 3K9.
Voy a ver si puedo pasar en limpio el plano el fin de semana.