viernes, 20 de marzo de 2015

Cumpliendo promesas.

Hola ¿Qué tal amables lectores? ¿Cómo están?

Espero que se la estén pasando genial, en muchas partes del hemisferio norte ya se sienten aires primaverales... diluvios primaverales, nevadas primaverales, sequías primaverales, temblores primaverales y muchos otros meteoros primaverales X_x.

Estamos de regreso a reclamo de nuestro amigo Dark "Shingo" Bandit, quien ha exigido una actualización del blog. Y como un caballero nunca falla a su palabra (pues prometimos actualizar más seguido), acá estamos con una nueva dosis de debraye.

También prometimos algo acerca de un experimento fallido, así que es hora de contar una historia larga, poco trascendente y un tanto aburrida... (en este momento se escucha cómo el respetable público conocedor abandona el recinto X_x). Bueno, para los que se quedaron en su lugar ahí les va n_n.

Hace algunos ayeres, su servidor contaba con un Xbox 360 de primera generación en el cuál pudo disfrutar con juegos como Forza Motorsport 3, Bayonetta, KOF XIII y Resonance of Fate. Pues bien, ese Xbox 360 se fue al cielo de las consolas por la infame falla de las tres luces rojas de la muerte (léase con tono macabro).

Vino una época de crisis y bajos ingresos... bueno, eso no es novedad X_x. Decidí vender ese Xbox 360 por la módica cantidad de $450 MXN (unos 30 USD al cambio) con accesorios incluidos, ya que no contaba con la liquidez para llevarlo a reparar... ni para pagar la renta... ni para dar el gasto... En esa época también tuve que vender otras consolas para superar algunos obstáculos financieros.

Pues bien, esa época ya ha pasado (recuerden que este blog se escribe a posteriori n_n) y después tuve oportunidad de comprar de nuevo una consola. Debido al mal sabor de boca de la avería del Xbox 360, decidí comprar un PS3, aprovechando las ofertas de "El buen fin". El primer juego que adquirí para el PS3 fue el Gran Turismo 5. Aquí quiero resaltar un punto, Forza Motorsport 3 es mejor juego de carreras que Gran Turismo 5.

Ya con el PS3 retomé las sesiones de juego en uno de los géneros que más disfruta su servidor y que además considero, es el que exige más al hardware. Un juego de simulación de carreras requiere de un manejo de físicas muy cuidadas, unas gráficas convincentes y una sensación de velocidad que requiere del uso de técnicas gráficas demandantes como el motion blur.

En lo personal, el diseño del control de Playstation nunca me ha parecido cómodo, pese a su similitud involuntaria y accidental con el esquema del control de Super NES. Por otra parte, el control de Xbox 360 me parece muy cómodo, ergonómico y preciso, debido a su forma, a la respuesta de los gatillos y la forma de los postes de los sticks analógicos.

Para juegos de conducción, el control de Xbox 360 permite controlar muy bien el freno y el acelerador con los gatillos, mientras que con el control DualShock (que no cuenta con gatillos) se pierde un poco de precisión aunque se gana en velocidad de respuesta de los botones.

Debido a que la experiencia de juego con el Gran Turismo 5 no era del todo satisfactoria por causas achacables al control, decidí probar alternativas. Compré un viejo volante para computadora USB, el cual fue reconocido por la consola y el juego, pero el mapeo no era el correcto, por lo que no era posible siquiera escoger las opciones del menú.

Debido a que ya había desarrollado algunos adaptadores USB con el mapeo correcto para su uso en el PS3, decidí probar suerte y hacer una reimplementación del circuito del volante con un ATMEGA48. Debido a que el volante no cuenta con cruz direccional  ni suficientes botones, decidí integrar en el diseño un adaptador de control de SEGA Genesis. Después de probar el circuito en la PC de forma satisfactoria fue momento de conectarlo al PS3 y probarlo con el juego de Gran Turismo 5.

En un principio todo parecía funcionar adecuadamente, pues era posible desplazarse por los menús con el control y con las direcciones del volante. Sin embargo al iniciar una carrera, sólo respondían los botones de pausa y de aceptar. Aún si se mapeaban funciones como el acelerador o el freno en dichos botones, el juego no respondía de la forma deseada.

En un principio atribuí la falla a que el circuito no trataba de emular un control de PS3, por lo que procedí a investigar un poco al respecto. A pesar de que el PS3 acepta controles USB estándar para PC, sólo si el control cuenta con ciertas características se puede activar el botón PS (botón 13 del descriptor) y la detección de presión (valores analógicos) en los botones.

Una de esas características es enviar una cadena de bits después de iniciar la comunicación entre el control y la consola (los llamados "magic bytes") y la otra es que el descriptor del dispositivo lleva una estructura particular.

Se trató de replicar ambas condiciones con la biblioteca V-USB, y las primeras pruebas fueron satisfactorias, pues fue posible desplegar el menú que se activa al presionar el botón PS. Sin embargo, el Gran Turismo 5 se volvió a negar a funcionar.

Es por ello que considero que este experimento es fallido. A pesar de ello les comparto el archivo que contiene el programa del intento. Este programa puede servir como base de algunos proyectos, como un adaptador de controles de SEGA Genesis a PS3 (PORTB), o como base de un emulador de control, pues puede tomar valores analógicos para los ejes XY a través del convertidor analógico/digital (PORTC) e incluso una parte del proyecto puede servir para leer arreglos matriciales de botones por multiplexado (PORTD).

A la fecha desconozco el porqué el circuito es rechazado por el Gran Turismo 5 (y sólo por ese juego, inclusive es posible jugar Tekken Tag Tournament 2 con el volante X_x), aunque sospecho que el juego hace verificaciones más exhaustivas de las características del control. Tengo pendiente probar en otros juegos de carreras, esperemos que la liquidez en próximas fechas permita comprar algún título a precio competitivo.

A pesar de esos problemas, actualmente puedo jugar Gran Turismo 5 de forma tan cómoda como lo hacía con Forza Motorsport 3... con un control de Xbox 360 n_n.

Mas detalles de eso en próximas entradas, así sólo queda decir ¡Estamos en contact! y muchas gracias.

Seguimiento de trasteos.

Hola, ¿Cómo están? Bienvenidos sean de nueva cuenta a este nuestro blog, donde yo escribo los debrayes y ustedes abuchean mis malos chiste...