lunes, 21 de enero de 2013

Mudanza hormiga

Hola, ¿Cómo están? Espero que se la estén pasando muy bien.

En alguna entrada anterior comenté que pensaba pasar el contenido externo del blog a Dropbox. Mi intención era pasar directamente el contenido de la cuenta de 4shared a Dropbox y compartir los enlaces. Sin embargo tuve de nuevo una "brillante" idea, y decidí probar la última versión del adaptador de controles de Super Nintendo a USB utilizando el microcontrolador ATTINY25.

Antes de que se me olvide, acá esta el enlace al adaptador.

Para probar el adaptador tuve que armar el hardware de nueva cuenta, pues los prototipos existentes los he obsequiado entre algunos de mis amigos. Al revisar el código fuente se me ocurrieron una serie de optimizaciones y algunos arreglos.

El más importante de los cambios es la numeración de botones para que coincidan con la posición que tienen en los controles de Playstation 3. Además he cambiado la resolución de los ejes X-Y de 2 bits a 8 bits. Lo anterior con la idea de que sea reconocido correctamente por el Playstation 3. A pesar de lo que pueda parecer, no tengo un Playstation 3. Pero me ha surgido la inquietud de hacer los adaptadores lo más amigables posible con el Playstation 3 debido a que uno de mis amigos tiene uno, pero a falta de controles no hemos podido jugar excelentes juegos como The King of Fighters XIII en modo de dos jugadores. Además, hace unos meses tuve la encomienda de rehabilitar el panel de una máquina arcade para su uso en PC y Playstation 3.

Y pues bien, el rehabilitar ese panel fue una tarea más ardua de lo que calculé en primera instancia, pero que me ha dejado mucho aprendizaje.



Las fotos anteriores muestran el estado original del panel antes de llegar a mis manos. Las palancas son réplicas de las Happ Competition, que tienen una muy buena respuesta debido a que su actuador cuadrado permite presionar las diagonales sin mucho esfuerzo.

De hecho no sé en qué estaba pensando cuando acepté la encomienda, ya que por un mal entendido, pensé que sólo tendría que hacer un circuito que al conectarse a la interfaz JAMMA permitiera al panel funcionar en una PC o en el PS3. Los circuitos que permiten conectar los botones y palancas de un panel arcade a una computadora son muy utilizados en la actualidad, pues la gran mayoría de las máquinas multijuegos que se pueden encontrar en operación están basadas en PC. Estos circuitos se llaman coloquialmente pulsadores.


Esta es la foto de un pulsador diseñado para operar en un sistema arcade. La foto es cortesía de nuestro amigo Antonio de los Monteros. El diseño de este circuito está realizado de forma profesional (a diferencia de los prototipos que se hacen en este blog X_x). Se puede apreciar que emplea un microcontrolador AT90S2313, que es el antecesor del ATTINY2313. De hecho, en muchas ocasiones pueden emplearse de forma indistinta, pues sus características son similares. Además se emplean registros de corrimiento tipo CD4021, por lo que la captura de los botones se realiza de forma similar que al emplear un adaptador de controles de Super NES. El conector de la parte inferior de la foto es el receptáculo del cableado de los botones y las palancas. Dicho cableado debe ser compatible con el estándar JAMMA (Asociación de Fabricantes de Máquinas de Diversión de Japón), que establece la posición que deben guardar en el conector los distintos botones de un panel de arcade, con el objetivo de facilitar el mantenimiento y el intercambio de componentes.

Estos pulsadores no son caros, y de hecho son una muy buena alternativa para personas que planean armar una palanca casera tipo arcade con componentes de alta disponibilidad. Sólo hay que tener cuidado al seleccionar el tipo de pulsador, pues existe el pulsador USB (como el de la foto) y el pulsador de puerto paralelo que se alimenta a través de un cable USB, pero que no transmite datos a través del cable USB.

Pues bien, resultó que la encomienda en realidad constaba en hacer la restauración completa del panel y hacer que los controles fueren compatibles con un Playstation 3. Al tener el panel en mis manos caí en la cuenta de que me había metido en un problema de proporciones mayúsculas. El primer paso fue desmontar el panel por completo y limpiar todos los componentes para poder diagnosticar su estado real, ya que en ocasiones la suciedad provoca que las cosas se vean peor de lo que son en realidad.

Pues en esta ocasión no hubo suerte, el estado de los componentes del panel era bastante peor del que se aprecia en las fotos. De todos los microswitches sólo un par funcionaba bien, el resto tenían resistencia mayor a 100[kOhm]. La resistencia en los microswitches se debe a que se forma hollín en el contacto interno, debido a la chispa que se genera al abrir y cerrar el contacto de forma continua. Ese fenómeno también se presenta en los interruptores de pared que se emplean para encender y apagar las luces de una habitación. En condiciones normales no debe generarse chispa en el interior del botón, pues la chispa sólo se provoca cuando circula una cantidad considerable de corriente a través del contacto. Esto indica que el aparato al que estuvo conectado el panel tenía un error de diseño, pues en circuitos digitales de baja potencia la única forma de generar una chispa es a través de una falla de circuito corto.

Además de los microswitches, los botónes de plástico que venían con el panel mostraban los estragos del tiempo y el uso rudo. De todos los botones plásticos sólo se pudo rescatar un par de ellos. El problema que presentaron es el óxido formado en los resortes, lo que les resta flexibilidad y entorpece la respuesta de los botones. Por fortuna las palancas no se encontraban muy deterioradas, por lo que una limpieza bastó para dejarlas en condición operativa.

El panel constaba de dos mandos, cada uno con siete botones distribuidos en la configuración clásica de Capcom USA. Parte de la encomienda fue colocar tres botones extra a cada mando de tal forma que quedaran dos filas con cuatro botones, un botón correspondiente a START y un botón correspondiente a SELECT. Con diez botones en total por mando me resultaba imposible emplear un pulsador compatible con el estándar JAMMA, por lo que tuve que diseñar un circuito y modificar el cableado para soportar todos los botones.

Emplee el microcontrolador ATMEGA48 debido a que tiene más pines que el ATTINY2313, además de que es más barato. En este punto resultó una labor sumamente laboriosa la soldadura de cables en la interfaz adaptada. Además, por falta de planeación terminé empleando componentes innecesarios. Para leer el estado de los botones de un mando utilicé dos circuitos CD4021 conectados en cadena, mientras que los botones del segundo mando los conecté directamente a los pines libres del microcontrolador. Lo anterior fue uno de los planteamientos más ineficientes que pude haber utilizado, el único planteamiento más ineficiente es utilizar cuatro circuitos CD4021. Quizás usted, amable lector se estará preguntando a qué me refiero, si el uso de circuitos CD4021 (registros paralelo a serie) nos permite economizar pines en el microcontrolador, pues transforma ocho entradas en paralelo en dos salidas (la señal de reloj, el cerrojo) y una entrada (el tren de datos).

Si se llegan a conectar cuatro circuitos CD4021 en cadena, se puede obtener el estado de hasta 32 botones empleando sólo tres pines del microcontrolador. Pues bien, ese planteamiento es sumamente ineficiente desde el punto de vista económico. Utilizando 12 pines de un microcontrolador se puede obtener el estado de 36 botones, sin necesidad de utilizar circuitería adicional. Eso se logra empleando una técnica de multiplexado de entradas en el tiempo. Al diseñar el pulsador que utilizaría el panel se me olvidó esa técnica, la cual empleo con cierta regularidad en otros ámbitos.

Debido a que no cuento con una consola Playstation 3, tuve varios problemas en el desarrollo del firmware. Como punto de partida adapté parte del código del USB Retropad Adapter, que soporta la conexión con consolas Playstation 3. Lo anterior resultó una pésima idea, pues el día de entrega acordado no pude lograr que la PC reconociera el circuito USB. Resulta que el hacer controles USB compatibles en su totalidad con Playstation 3 requiere de varias consideraciones. La primera de ellas es que se utiliza un descriptor de dispositivo con una estructura específica. La segunda es que se tienen que enviar unos códigos especiales que habilitan funciones específicas para el control, por ejemplo, el botón PS. La tercera es que el reporte con el estado de los botones que se debe enviar a la consola es mucho mayor al tope de 8 bytes que permite el estándar USB para dispositivos HID de baja velocidad. Para colmo, al tomar estas consideraciones la PC tiene problemas al identificar el dispositivo.

En vista de lo ocurrido decidí mover el proyecto a un terreno conocido. Tomé la decisión de hacer el circuito compatible con PC, con la única consideración de mantener la asignación de botones igual a la utilizada en los controles de Playstation 3. Las pruebas en Windows y Linux fueron un éxito.


En esta foto se puede apreciar el panel en una etapa avanzada de trabajo. Al momento de tomar esta foto se le montaron los botones originales al panel. La cubierta está muy desgastada y tiene marcas de quemaduras, sin embargo le dan el aspecto característico de los paneles que se encuentran en la mayoría de los locales de máquinas arcade.


Aquí se muestra el panel montado en un cajón que fabriqué. Para esta foto monté muchos de los microswitches que venían con el panel, Tanto los botones como los microswitches fueron sustituidos después por piezas nuevas.

Pues bien, probé el panel en mi computadora con varios juegos y funcionó perfectamente. Se realizó la entrega del panel y justo cuando pensé que todo había salido bien, recibí la notificación de que en el Playstation 3 las palancas no respondían.

Como mencioné al principio de esta entrada, en mis adaptadores la resolución de los ejes X-Y es de 2 bits, mientras que el Playstation 3 requiere que la resolución sea de 8 bits. Ese detalle lo desconocía al momento de escribir el firmware.


En esta imagen muestro los ejes X-Y y el equivalente de cada dirección en ambas resoluciones. Debido a que en el panel de una máquina arcade las direcciones se registran gracias a la activación de un botón, no tiene sentido registrar el eje como un par de variables de 8 bits, pues con 2 bits basta para establecer las combinaciones que existen entre el centro, cada orilla y cada vértice del eje. Sin embargo, en el Playstation 3 el eje X-Y es controlado por una palanca analógica, por lo que requiere registrar todo el rango de valores de 8 bits.

Para solventar este detalle cambié la resolución de los ejes X-Y y probé el circuito en el Playstation 3 de mi amigo MagmaD. Constaté con agrado que ahora las direcciones eran registradas de forma adecuada por el Playstation 3 y que los botones fueron identificados al ser presionados. Procedí a entregar el circuito con el firmware actualizado y justo cuando pensé que todo había salido bien, recibí la notificación de que en algunos juegos las direcciones no eran reconocidas, pues existen juegos que sólo soportan ser controlados con la cruceta direccional y no con la palanca analógica.

En este punto, se pueden tomar tres soluciones. La primera es cambiar el firmware para que las palancas controlen el hat-switch (o como lo llaman en Windows, el control punto de mira) para que coincida con la función de la cruceta direccional en los controles de Playstation 3. Esto tiene el inconveniente de que muchos juegos de PC, Playstation 3  y emuladores no soportan el hat-switch de forma correcta, por lo que se pierde la habilidad de controlar a los personajes o la capacidad de presionar las direcciones diagonales.

La segunda es agregar un interruptor como los presentes en los fightpad y fightstick profesionales, que permiten cambiar el comportamiento de la palanca entre cruceta direcional y cualquiera de las palancas analógicas. Esta opción, a pesar de ser viable, requiere de muchas pruebas y de modificaciones sustanciales en el código del firmware, así como en el hardware.

La tercera es aceptar la limitante del panel, la cual es similar a la presente en el adaptador de controles de Super NES a Dreamcast. El control de Super NES no cuenta con palanca analógica, por lo que varios juegos no pueden ser controlados de forma plena. Algunos juegos como Tokyo Xtreme Racer 2, al detectar la ausencia de la palanca analógica no permiten que el juego sea iniciado.

El trabajar con este panel me ha dejado muchas enseñanzas. La primera es ser muy cuidadoso y asegurarse un banco de pruebas antes de emprender un proyecto en el cual se desconocen varios factores. Caí en el error de asumir que el circuito funcionaría en el Playstation 3 de la misma forma que funcionaba en mi computadora. También hay que ser cuidadoso y no subestimar la carga de trabajo que implica la labor manual, que en muchas ocasiones puede ser abrumadora. El diseño es una labor mental desgastante, sobretodo cuando el objeto que se diseña debe ajustarse a requerimientos desconocidos. Y la más importante, es saber interpretar las señales que nos muestra el destino. Al momento de aceptar la encomienda y en su proceso de desarrollo ocurrieron varias cosas que pudieron ser interpretadas como malos augurios. No soy supersticioso, pero en ocasiones conviene poner atención y reconocer que cuando las cosas se complican más allá de lo esperado es prudente prepararse, pues existe una alta probabilidad de que las cosas salgan mal.

Estamos en contact!

viernes, 11 de enero de 2013

Piratas del Océano Pacífico.

Hola, ¿Cómo están?

Espero que se la estén pasando bien en este 2013, un año que según algunas teorías no iba a ver la luz del sol, pero afortunadamente no ha sido así. Y pues qué mejor forma de empezar el año con una buena dosis de debraye... bueno, no es verdad, hay mejores formas de empezar el año pero debrayar es algo que le agrada mucho a su servidor y por eso acá estamos.

Uno de mis primeros acercamientos con los videojuegos fue por medio de la consola de tercera generación (también llamada generación de 8 bits) más popular, sin duda alguna me refiero al "famiclón". ¿Qué acaso el NES, el Atari 7800 y el SEGA Master System fueron más populares? Yo pensaba que era así, sin embargo este pasado día de reyes me percaté que los famiclones marca Mitsui que estaban en las tiendas cercanas a mi casa prácticamente se agotaron. Y es sorprendente, porque eran bastantes piezas y aún así quedaron sólo un par de ellas.

Pues bien, mi famiclón (que aún funciona) es una consola de videojuegos que me ha brindado muy gratos momentos de diversión. Mis juegos favoritos para esa consola son Battletoads, Super Mario Bros 2 y Super Mario Bros 3. Tengo un cartucho de juegos que incluye 10 juegos bastante buenos y que son:
  • Mario Bros
  • Super Mario Bros. 
  • Super Mario Bros. 3 versión japonesa con trainer.
  • Super Mario Bros. 2 versión japonesa.  
  • Super Mario Bros. 2 versión americana.
  • Armadillo.
  • Bio Miracle Bokutte Upa.
  • Doctor Mario.
  • Mickey Mouse Capade.
  • Dynamite Bowling. 

Y bueno, acá esta la foto de este cartucho que tanta diversión me brindó en mi infancia, la cual ya ha durado por más de 20 años (me refiero a la diversión, no a mi infancia n_n)...


 Acá tenemos la carcasa, en la cual se listan los juegos que presumiblemente se incluían en el cartucho. El llamado NEW SUPER MARIO "4" es en realidad el juego de Armadillo, al cual se le modificaron los sprites del protagonista para que coincidieran con los de Mario. La calcomanía que se ve en la esquina superior derecha es un holograma de una promoción llamada Pilón, que ocurrió en México a principios de la década de 1990. Si mi memoria no me traiciona, al comprar en ciertos establecimientos te regalaban estos hologramas, que funcionaban como cupones. Cada holograma tenía una equivalencia en puntos, al juntar varios puntos era posible intercambiar los hologramas por productos en los centros de canje. Ese holograma se lo pegué al cartucho para fines meramente estéticos.



 En esta otra fotografía podemos apreciar el interior del cartucho. Los circuitos marcados como 0001 y 0002 son las memorias ROM (memorias de sólo lectura) que contienen la información de los juegos, el circuito marcado como MC-3 es el MMC (Memory Management Controller) del cartucho, tentativamente se trata de un clón del MMC3. Los dos chips de montaje superficial que se aprecian son un par de memorias SRAM (memorias de acceso aleatorio estáticas), marca Hitachi y que como se puede apreciar en su matricula, fueron manufacturadas a mediados de 1984. El chip de la esquina superior derecha es un PLD (dispositivo lógico programable) tipo PAL16L8ACN.

Quizás para algunos de ustedes les parezca un simple armatoste carente de valor, dada su naturaleza ilegítima. Sin embargo a mi me pareció bastante sorprendente y curioso por varias razones. La primera es que contenía los juegos lanzados por Nintendo en la primera versión de su recopilación Super Mario All-Stars, pero en sus versiones de 8 bits. Otro motivo es que no he encontrado en internet la ROM correspondiente a este cartucho en específico. Además como bien puede apreciarse, se emplearon componentes de buena calidad para su construcción y no un simple circuito encapsulado en una gota de epóxico negro.

Desconozco el tipo de mapper que utilice este cartucho o qué tan disponible se encuentre en el mercado, pero es uno de los mejores cartuchos que pude haber tenido para mi famiclón. Y lo más sorprendente es que aún funciona.


Esta es la pantalla de selección de juego, como se puede apreciar se le han cambiado los nombres a la gran mayoría de los juegos. El único detalle desfavorable que tiene el cartucho es que el juego de Super Mario Bros 2 versión japonesa está incompleto, al terminar el nivel 4-4 el juego pasa a una pantalla negra y ahí se queda el juego.

El juego de Super Mario Bros 3 está en una versión japonesa modificada que le abre muchas posibilidades a los videojugadores curiosos como su servidor. En el mapa es posible abrir el inventario al presionar el botón B y transformar el primer casillero en cualquier objeto al presionar el botón SELECT. Así es posible utilizar el traje de Tanooki en el mundo 1-1 o el traje de Hammer Brother para pasar la fortaleza del mundo 2. Sin embargo descubrí este detalle hace pocos años, en mi infancia terminé el juego completamente y me decepcioné cuando al salir la pantalla THE END el juego se quedaba en bucle infinito, por lo que el famoso truco que te llenaba el inventario con P-Wing no funcionó.

Esa versión de Super Mario Bros 3 se encuentra disponible en internet, en la rom Mario 7 in 1 que se puede descargar de prácticamente cualquier sitio que albergue el romset GoodNES. La captura del juego es la siguiente, para que la utilicen de referencia al buscar la rom.


A pesar de que el famiclón es una consola sumamente popular y los juegos para la misma tienen una alta disponibilidad en el mercado informal, mi colección de juegos es bastante limitada ya que cada cartucho que se compró se eligió con mucho detenimiento. Además el intercambio de cartuchos con amigos o en el mercado informal estuvo vetado por mis padres, al punto que en cierta ocasión que intercambié por un par de semanas un cartucho con un compañero de la escuela se me armó una tremenda bronca, de la cual prefiero no acordarme más.

Sin embargo, el tiempo le ha dado la razón a mis padres en gran medida, ya que todos mis cartuchos funcionan perfectamente a la fecha. Inclusive el famiclón funciona, aunque el control ya requiere de un relevo, pues funciona de forma bastante errática y es muy incómodo. Aunque gran parte del mérito de la durabilidad del famiclón y sus accesorios no es para mí o mi familia, sino para los fabricantes de los dispositivos, que emplearon piezas de buena calidad para ensamblar tanto la consola como los cartuchos. Mi famiclón es de la era previa al NOAC (NES on a chip) y en su interior se pueden distinguir todos los componentes básicos como el procesador, la memoria RAM y las interfaces seriales para los controles. Las memorias RAM son marca Hyundai y todos los demás circuitos (excepto el procesador 2A03 y otro chip complementario que se encargaba de funciones de interfaz) son marca Phillips.


Este es mi famiclón y como se puede apreciar tiene un cable de corriente en lugar del clásico eliminador que solía acompañar a estas consolas. Pues bien, el eliminador de esta consola se fue al cielo de los eliminadores de corriente hace ya muchos años. Cuando recién empezaba la escuela secundaria se me ocurrió reparar el eliminador de corriente, para lo cual tomé nota de las características eléctricas. El eliminador entregaba un voltaje de 9[V] a 850[mA]. Como puede apreciarse la capacidad de carga del eliminador era bastante alta, lo cual indica que los requerimientos eléctricos de la consola eran elevados. En la actualidad es posible alimentar consolas tipo famiclón o Genesis con un cargador de teléfono celular.

Pues bien, el primer intento de reparar el eliminador fue un rotundo fracaso, ya que no contaba con cautín y los amarres de alambres se soltaban al mínimo movimiento. Posteriormente traté de mejorar el eliminador convirtiéndolo en una fuente regulada de 9[V]. Sin embargo, después de un corto periodo de emplear la consola ésta se trababa. El consumo de la consola y del regulador de 9[V] era demasiado para el transformador, por lo que el voltaje comenzaba a descender de forma gradual, al punto que la consola no se podía mantener funcionando.

En fechas más recientes decidí dar uso a un transformador de 5[V] y 1.2[A] que me vendieron en la tienda Outlet Steren por $5.00 pesos mexicanos (poco menos de 0.5 USD), un circuito puente de diodos y un capacitor de 1000[uF]. Debido a que la carcasa es similar a la de un Super Famicom, tiene en su interior el espacio suficiente para albergar la fuente de alimentación completa sin inconvenientes. En el interior de los NES y famiclones de antaño se encuentra un regulador 7805, que se encarga de suministrar la energía necesaria a la consola y a todos los periféricos que se conecten a la misma. Aprovechando esa ventaja de diseño, sólo resta colocar dentro de la consola un transformador de características eléctricas adecuadas, un circuito puente de diodos y un capacitor para que la consola funcione. De hecho, es posible soldar las patas y conectores de todos esos componentes y evitar el uso de una tableta de circuito impreso. En mi caso, decidí emplear mucho del espacio disponible en el circuito de la propia consola para colocar los componentes.

Para mí este aparato de videojuegos ha sido trascendental, pues con él pasé grandes momentos de diversión acompañado de mi hermano. Me ha brindado mucha diversión y es un objeto que me trae gratos recuerdos. Jugar con él cuando me encuentro deprimido me ayuda bastante, pues me transporta de inmediato a mi infancia, me ayuda a recordar aquella época donde los sueños y anhelos estaban al alcance de la mano. Después de jugar con él me siento rejuvenecido y con ánimos para encarar cualquier reto. No me considero una persona nostálgica, pero me gusta mucho volver a vivir aquellas cosas que en mi infancia y en mi juventud me llenaron de gozo para encarar el futuro con muchas ganas.

Estamos en contact!

¡Feliz 2021! El retorno del debraye pandémico (Edición "Rompemuros").

Hola, ¿Cómo han estado? Espero que estén con bien, con buena salud y con muchas ganas de aburrirse una vez más con una ronda de debrayes. Es...