domingo, 11 de septiembre de 2011

Simple siempre es mejor...

Últimamente he estado experimentando un poco con controles de Playstation. A mi gusto, los controles originales de Playstation, tanto digitales como analógicos son bastante incómodos y poco acertados. Sin embargo, son controles que pueden encontrarse en prácticamente todos lados, desde tiendas de autoservicios hasta tianguis y mercados sobre ruedas, por lo que son una buena opción para sustituir los controles de alguna otra consola que no cuenten con tanta disponibilidad o que tengan precios elevados debido a su rareza.

Inclusive en muchos lugares, incluyendo MercadoLibre, los controles genéricos de SNES suelen cotizarse al mismo precio que los controles genéricos de Playstation, cosa por demás extraña, considerando que la complejidad en circuito y fabricación de un control de Playstation esta muy por encima de la de un control de SNES.

A pesar de que el control de Playstation no me convence, recientemente adquirí un control Nubytech conmemorativo del decimoquinto aniversario de Street Fighter II. A pesar de esos controles ya llevan mucho tiempo en el mercado, no me habían llamado la atención debido a que a simple vista es posible apreciar que carecen de controles analógicos. Es decir, no sirven para todos los juegos. Sin embargo un detalle me hizo verlos con interés, el hecho de que tienen una disposición de botones más que apropiada para juegos de peleas y su forma es muy ergonómica, parecida a la de un control de Sega Saturn modelo 2.

Investigué un poco acerca del protocolo de comunicación de los controles de Playstation, el cual es una variante del SPI (Serial Peripheral Interface) que emplean la mayoría de los microcontroladores. Se trata de un protocolo full duplex que tiene una linea de selección de chip (Attention según el cableado del control de Playstation), una línea MISO (o Data), una línea MOSI (o Command) y una línea de notificación (Acknowledge) que no forma parte de la interfaz SPI. La interfaz funciona a 250[kHz] y a 500[kHz], dependiendo del tipo de control. En teoría, es una interfaz simple de implementar en un microcontrolador y de fácil decodificación, sin embargo me han surgido varios problemas al trabajar con ella.

Mi primer intento fue una interfaz SPI hecha a base de bitbang usando el ATTINY2313 (mi microcontrolador consentido), en la cual por USB sólo funcionó con el control Nubytech antes citado y el Lavaglow wireless. No pudo establecer comunicación con ningún control original. A pesar de todo, eso era suficiente para llevar las pruebas a su plataforma destino... y ahí fue donde todo valió.

Si bien, la decodificación y el mapeo de los botones funcionó perfectamente, la interfaz sufría desconexiones a frecuencia constante de 1[Hz]. Al parecer la interfaz SPI por bitbang es muy lenta y no permite mantener la sincronía con una interfaz más veloz.

De ahí viene el título de este post... es bastante más efectivo en términos de tiempo, complejidad y costo un control digital tipo SNES (con registros de corrimiento en su interior) que un control digital tipo Playstation, que con sólo dos botones extras complica demasiado la decodificación y compromete la velocidad de reacción del sistema.

Soundblaster Audigy SE front panel.

Hola, ¿Cómo están? Bienvenidos sean de nueva cuenta. Recientemente me puse a la labor de reacondicionar una computadora con las piezas que...