viernes, 27 de enero de 2012

Desde que se inventaron los pretextos...

Hace unos días compartí con ustedes el proyecto que realicé en las vacaciones, el adaptador de controles de Super NES, SEGA Saturn y PlayStation a Dreamcast. Cuando hice esa entrada al blog la verdad aún estaba muy emocionado, pues para mí representó un gran logro, la culminación de un proyecto que si bien no llevó tanto tiempo realizar, tuve inquietud de llevarlo a cabo desde el año de 2004, cuando adquirí mi primer Dreamcast. Hasta la actualidad fue que tuve las herramientas (tangibles e intangibles) para concretarlo. Sé que desde hace mucho tiempo existen (o más bien existían) en el mercado los adaptadores Total Control de la empresa china EMS y el adaptador de la empresa Innovation. Los adaptadores Total Control permiten conectar, dependiendo de su versión, diferentes dispositivos a la Dreamcast. Una versión permite conectar controles de PlayStation, otra conectar teclados y mouse de computadora, otra conectar controles de SEGA Saturn (con soporte para VMU) y otra permite conectar controles de PlayStation (con soporte para VMU). Por otra parte, el adaptador de Innovation permite conectar controles de PlayStation y SEGA Saturn (con soporte para VMU). Si encuentran alguno de esos adaptadores en el mercado a un precio accesible, les recomiendo que los compren, de verdad son una buena inversión si aún disfrutan de jugar con su Dreamcast.

Mi principal inquietud fue conectar un control de Super NES a la Dreamcast. Cuando los Reyes Magos me trajeron mi Super NES el frío 5 de enero de 1993 venía acompañado de un juego que yo no conocía, pero que mi hermano había pedido y que me atrapó desde que comencé a jugarlo: Street Fighter II - The World Warrior. Debido a que la economía familiar nunca ha sido del todo favorable, mi hermano y yo jugamos Street Fighter II (a falta de otros juegos) con los pads de Super NES (a falta de otros controles o arcade sticks) hasta el hartazgo y un poco más. Así que me acostumbré mucho al control de Super NES. Como me brinqué la quinta generación de videojuegos, la verdad no pude probar a conciencia los pads que le sucedieron al de Super NES.

Fue en 2004 cuando volví al mundo de las consolas de videojuegos con una SEGA Dreamcast. La adquirí por la gran calidad de sus juegos, tanto de lucha como de aventuras. Sin embargo el control de Dreamcast me pareció desde el principio de lo más incómodo para cualquier juego de peleas. La cruceta es muy alta, por lo que deslizar el pulgar sobre ella después de un rato se vuelve tortuoso. El stick analógico es demasiado sensible como para ser usado como reemplazo a un stick arcade en miniatura. Y lo peor son gatillos analógicos L y R, que no son apropiados para fungir como botones, sobretodo porque los juegos de peleas suelen considerar que están siendo presionados cuando ya llevan el 70% de su carrera.

En mi país la Dreamcast jamás fue popular, por lo que conseguir accesorios especiales para ella suele ser una tarea difícil y muy costosa en términos monetarios y de tiempo. Mi primer intento de llevar la comodidad de un control de Super NES a la Dreamcast fue un experimento bastante grotesco que rindió resultados sumamente pobres. En aquél entonces estudiaba Sistemas Computacionales, y la verdad era bastante soberbio, ya que me había convencido de que estaba estudiando la carrera punta de lanza tecnológica... y no era verdad. Así que con mis "avanzados" conocimientos en software y hardware hice lo que al día de hoy suena a todo... menos un experimento tecnológico. Tomé un control genérico de Super NES (marca "Maestro") y le corté con unas tijeras al PCB la parte donde se encontraba la circuitería (la clásica gota negra). De esa forma obtuve un PCB con la distribución correcta de botones del control de Super NES. Posteriormente tomé un control de Dreamcast marca Astropad Performance y le extraje la PCB. A esa PCB le fue aún peor, pues le corté los conectores para las memorias (que me hubiera gustado conservar para algún experimento), la limé un poco y le liberé las conexiones que iban a los botones. Neutralicé el stick analógico con dos resistencias de 10[kOhm]. Después soldé los pads de los botones del PCB del control de SNES a los correspondientes botones del PCB del control de Dreamcast. Traté de meter al Frankenstein a la carcasa del control de Super NES pero, como es de suponer, no cupo. Haciendo gala de mis habilidades, limé un poco la carcasa del control de Super NES y ni aún así logré que cupiese. Tratando de hacer que entrara todo en la carcasa, incluso lime la cruceta por su parte baja, adelgacé el plástico de la carcaza, pegué las gomas conductoras a los botones (previamente rebajados) hasta que finalmente todo cupo. Como los orificios de los tornillos de la carcasa no coincidian en ambos PCB, cerré la carcasa con cinta adhesiva. Llegó el momento de probar con mi juego de peleas preferido, Capcom vs SNK 2 y comprobé que había hecho una tremenda tontería. El control respondía (dado que en realidad era un control de Dreamcast disfrazado) pero la sensibilidad de cada botón era de regular a pésima, ya que no estaban niveladas las gomas conductoras y habían perdido su rigidez, por lo que los botones tendían a quedar presionados.

Bueno, en su momento yo todavía me sentía orgulloso de mi creación y me dije a mí mismo que había logrado hacer lo que nadie, un control de Dreamcast con forma de control de Super NES. Pero el gusto duró poco, a los dos minutos era evidente que con los movimientos las tapas del control se deslazaban y se empezaban a trabar los botones L y R. Finalmente el control se abrió por completo y fue hasta ese momento que tuve que reconocer que había tenido una pésima idea, ya que sacrifiqué inútilmente dos controles completamente funcionales para convertirlos en una basura.

Pero la tontería no terminó ahí. Mi necedad me llevó a tratar de "optimizar" la circuitería del control de Dreamcast que había sacrificado, así que procedí a desoldar todos los componentes de la PCB, en la cual solo quedó la gota negra (que según yo, era el núcleo operativo del control). Cuando conecté el PCB a la Dreamcast, obviamente no respondió. Ahora sé que una de las piezas que había quitado era un oscilador que le brindaba al circuito su base de tiempo y le permitía trabajar. En aquél entonces lo confundí con un capacitor de poliéster...

Cabe mencionar que en esa época ya me había estudiado con cierto detenimiento la patente del MapleBUS, por lo que creía tener una idea muy clara de cómo funcionaba el bus.

Pasaron muchas cosas, muchos años y dejé por la paz "mi proyecto". Fue hasta 2009 que conocí el proyecto de Raphael Assenat para conectar los controles de Super NES a la PC por USB que volví a sentir curiosidad por retomar "mi proyecto". Se tiene la creencia popular de que el MapleBUS es similar al USB. Nada más lejos de la realidad. Ambos buses tienen en común ciertas cosas, como las alimentaciones de 5[V], el par de cables de datos y el ser bidireccionales, pero no comparten el método de transmisión. En el blog he narrado como fue mi incursión en la experimentación con controles y adaptadores de los mismos a USB y al MapleBUS.

Y, ¿a dónde quiere llegar el pseudo-nerd con este rollo kilométrico extra mareador? ¿A caso se está despidiendo del blog? ¿A caso está exigiendo reconocimiento por su "logro"? ¡¡Claro que no n_n!!

De hecho, escribo esto para dejar constancia de que no se necesita nacer con un talento, ser una eminencia programando, ser un hábil artesano o un gran estudioso para llegar a realizar cosas que se ven intimidantes y hasta se antojan imposibles la primera vez que se miran. Basta tener curiosidad, determinación y ganas de aprender. La curiosidad abre las puertas del conocimiento. La determinación permite concretar los proyectos aún cuando se encuentran obstáculos que parecen infranqueables. Las ganas de aprender son el motor principal. La falta de recursos tampoco es pretexto para dejar de hacer las cosas. En lo personal, no cuento con generador de señales, ni osciloscopio, ni analizador lógico. Mi método de depuración es el clásico LED conectado a un pin del microcontrolador y tratar de dar sentido a los destellos del mismo.

Bueno, y después del choro motivacional, van mis excusas sobre las limitantes del adaptador y el porqué son cada de ellas.

El adaptador no puede soportar VMUs ni vibración porque la comunicación con el MapleBUS es una combinación entre un hack, un glitch del puerto y, como diría Bob Ross: "un accidente feliz". Por lo tanto, el adaptador no es capaz de discriminar que datos irían para el control y que datos irían para los periféricos, simplemente responde a todos los comandos. Responde incluso a algunos comandos que podrían ser inválidos (como 0xCF) pero que por suerte, no están dentro de la enumeración de comandos del puerto. Así que dadas estas limitantes tecnológicas, este adaptador no soporta ni soportará dispositivos de memoria o vibración. Usando otros microcontroladores (como el HC12) es muy probable que se llegara a lograr en el mediano plazo, pero de momento, y con microcontroladores de bajo costo (PIC, AVR o HC08) no lo veo factible.

El adaptador no soporta dispositivos como el mouse del SNES, la Konami Justifier, el Super Scope y el NegCon por dos razones. Una es que el Dreamcast se comporta muy distinto cuando se conectan dispositivos especiales (sobre todo las pistolas de luz, que emplean el SDCKB occupy mode) e implementar todas esas variantes del protocolo sería muy demandante. La segunda y más importante es que no dispongo de ninguno de esos dispositivos, así que tratar de dar soporte a esos periféricos en base a especulaciones y sin depuración sería una completa negligencia de mi parte y hasta una falta de respeto para aquellos que trataran de armar el adaptador con miras a conectar esos dispositivos.

Sobre los controles inalámbricos de PlayStation, aquí si se me escapa por completo la excusa. Actualmente no conecto para las pruebas la terminal 3 (9[V]) debido a que mi cople no cuenta con esa conexión. Además, no realizo todo el procedimiento de "handshake" que efectúa el PlayStation con sus periféricos. De hecho, al contrario de lo que varias personas afirman en internet, el PlayStation se comunica de manera constante con el control, entrando al modo de configuración varias veces entre lecturas de estados de botones, y no sólo lee el estado de los botones cada 16[ms]. Así pues, aquí si quedan aún frentes por atacar y es muy probable que en el futuro cercano se puedan soportar los controles inalámbricos apropiadamente.

Y bien, se espera que con el adaptador funcionen los controles, arcade sticks y tapetes de baile de Super NES, SEGA Saturn y PlayStation. Se espera que no funcionen volantes, pistolas de luz, ratones, teclados, micrófonos y en particular, el control analógico de SEGA Saturn. Podría funcionar muy probablemente la guitarra de Guitar Hero, aunque no sé si exista algún port de Frets of Fire para Dreamcast. Si existiere, haría lo posible por tratar de soportar de forma adecuada dicho control.

Así que en resumidas cuentas, pueden diseñar el circuito impreso de su adaptador con toda confianza, ya que la probabilidad de aumentarle capacidades a nivel de hardware es muy remota (prácticamente nula) y las posibles mejoras en software serían orientadas (en caso de presentarse) en aumentar la estabilidad del adaptador, soportar los controles inalámbricos de PlayStation y corregir algún posible error.

Como dice Gus Rodríguez: Estamos en contact.

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...