[Reparación] Teenage Mutant Ninja Turtles 2, No bootea
Publicado: Mar Mar 19, 2013 5:13 pm
Esta Turtles in Time es del lote de PCBs descompuestas que compré hace unos meses. La PCB se veía en buen estado, pero a la hora de conectarla entraba en un ciclo que mostraba una pantalla blanca, con algunos caracteres verdes, y se reiniciaba de inmediato. Es decir, no llegaba ni siquiera a la prueba de RAM/ROM al iniciar.
El reloj llegaba bien al CPU, pero las líneas de direcciones y datos estaban completamente muertas. Nunca había topado con esto, pero parecía ser un 68000 completamente muerto. Antes de proceder a desoldarlo, decidí revisar las ROMs de código ya que curiosamente no eran Mask ROMs como había visto, pero se trataba sin lugar a dudas de una PCB original. Resulto que una de ellas estaba dañada y hasta ahora resulta imposible leerla, y las otras tres corresponden con un set aún no catalogado en MAME. Una verdadera lástima, que espero se puede resolver limando la EPROM y tratando de ponerle una patita corroída, pero se ve muy difícil.
Grabé un set de ROMs de la versión americana del juego, y las probé con los mismos resultados, así que decidí desoldar el CPU sin pensar mucho en ello. El 68000 es mi CPU favorito, y me dolía destruirlo. Sí, destruirlo... ya que debido a que se trataba de una PCB de Konami y por la cantidad de pines, era mejor no arriesgar dañar la PCB y cortar las patas para desoldar cada una con cuidado. Esto es muy laborioso y lento, pero es la manera más segura de evitar problemas.
Le coloque una base, hecha de un par de bases de EPROMs:
Cabe resaltar que el CPU que necesitaba era un 68000 de 16Mhz, pero no tengo ninguno a la mano. De hecho, no tengo un sólo 68K de refacción que sea de 64 pines. Así pues, le coloqué un 68000 que uso en System 16 tomado de la mítica Street Fighter II pirata... pero es a 12Mhz. Los resultados no cambiaron, seguía con el mismo problema. pensando que la velocidad tenía algo que ver, tomé prestado un 68K @ 16Mhz de los más nuevos que había sido adaptado al clásico de 64 pines en una PCB china (original) de mini juegos y lo coloqué:
Pero los resultados no cambiaron. Dejé la PCB en espera por un par de semanas, ya que me puse a trabajar en Rygar y una Double Dragon de Sr Pixel. Ya este fin de semana, la retomé. Regresé el CPU de 12Mhz por sentirme culpable de tomarlo de otra placa (sí lo se, OCD) corriendo el riesgo de freírlo, y empecé a buscar con el osciloscopio donde podía estar la falla. Para ello, desactivé el watchdog de la PCB. El Watchdog es un mecanismo que resetea la PCB cuando se detecta falta de actividad en el BUS, o algún otra condición no esperada. Desactivarlo generalmente se logra soldando un Jumper, típicamente el Jumper 1. El watchdog es muy útil en un ambiente arcade, ya que regresa la máquina a su estado inicial en caso de un error en el código o hardware, lo cual permite que la máquina en sitio siga recolectando dinero aún desatendida. Claro que si la falla es grave, el juego no dejará de reiniciarse, como en este caso.
Mientras me encontraba revisando las líneas de datos y direcciones, de repente el juego inició y llegó hasta la pantalla de "RAM ROM check". Esto de inmediato me indicó que el CPU y el resto de la PCB funcionaban, y que de hecho si estaba leyendo las ROMs. La intermitencia me hizo pensar en un falso, y apretando el CPU a veces booteaba y a veces no. Para descartarlo por completo, decidí cambiar la base hechiza por una de tiras de pines. Siempre las he preferido, pero al sustituir el CPU no tenía tiras a la mano, y había decidido utilizar las bases de EPROM creyendo que no habría problema. A trabajar doble.
Ya con el CPU en las sólidas bases de tiras de pines, la placa arrancaba intermitentemente hasta la pantalla de prueba de inicio típica de Konami. Entre las pocas veces que sí desplegó la prueba completa, fallaban la 15B y 3F.
La 3F es una RAM típica, compatible con 6116. La 15B se trata de una NVRAM que todas las PCBs de Konami de la época utilizan, y que necesita ser reiniciada cuando un juego se cambia de región o cuando se corrompe. Esto lo aprendí con mi Sunset Riders, que marcaba el error en su respectiva EEPROM. Se soluciona muy fácilmente, manteniendo apretado el botón de TEST de la PCB - no el del cableado JAMMA - en el ciclo de arranque del juego. Esto causa que salga un texto de inicialización de la EEPROM y funcione todo bien después de ello. Así pues, procedí a hacer esto primero.
Para mi sorpresa, el juego nunca mostró el texto de inicialización de la EEPROM. Supuse que algo tendría que ver con que el juego arrancara intermitentemente, y mejor me puse a revisar la RAM dañada. Efectivamente algunas de sus líneas de salida se veían mal, así que decidí cambiarla. Ya en otras ocasiones las había cambiado inútilmente por confiar en las pruebas y no revisar, pero en este caso todo indicaba que la RAM sí estaba mal. Le puse una a TMM2018 a 35ms, aunque la PCB decía ser a 15 ms, pero no tenía otra a la mano. Debido a la velocidad de la PCB, esto no hace diferencia alguna ya que los accesos toman suficiente tiempo como para que no influya.
Y efectivamente el juego ya pasó esta prueba, pero seguía con el problema de la EEPROM en 15B. Para probar si todo estaba bien, decidí simular el apretado del botón. Medí en mi Turtles in Time que sucedía al apretar el botón y ví que se necesitaba dejar pasar la tierra al apretarlo, así que usando una punta con caimán para poner tierra en la pista como si el botón no existiese la PCB inicializó la EEPROM, y el juego arrancó sin problemas.
Sin embargo y como comenté arriba, ya me ha sucedido que dicho botón se necesite para inicializar la NVRAM a veces durante el uso normal, así que debía sustituir el botón. Para colmo, al probar en mi PCB el efecto del botón, noté que mi juego no arrancaba con el fondo negro y las letras en blanco, todo se veía verde. Algo le estaba fallando y había sido reciente, pues lo había jugado hace un par de meses. Me encontraba en el dilema de cambiar el botón, para el cual tenía que buscar un sustituto exacto o un parche, o arreglar mi PCB que ahora resulta se veía mal.
En ese momento decidí arreglar mi PCB, cosa que dejaré para otro post, pero después regresé a terminar este trabajo que sólo fue cambiar el botón, tomado de otra PCB de Konami destruida más allá de algo recuperable.
P.D: el CPU de 12Mhz no se ha quejado trabajando a 16Mhz, de la documentación que he leído parece ser que aguantan el overclocking bastante bien, pero buscaré uno de 16Mhz para estar tranquilo... (video relacionado https://www.youtube.com/watch?v=MpViDHurF4o)
El reloj llegaba bien al CPU, pero las líneas de direcciones y datos estaban completamente muertas. Nunca había topado con esto, pero parecía ser un 68000 completamente muerto. Antes de proceder a desoldarlo, decidí revisar las ROMs de código ya que curiosamente no eran Mask ROMs como había visto, pero se trataba sin lugar a dudas de una PCB original. Resulto que una de ellas estaba dañada y hasta ahora resulta imposible leerla, y las otras tres corresponden con un set aún no catalogado en MAME. Una verdadera lástima, que espero se puede resolver limando la EPROM y tratando de ponerle una patita corroída, pero se ve muy difícil.
Grabé un set de ROMs de la versión americana del juego, y las probé con los mismos resultados, así que decidí desoldar el CPU sin pensar mucho en ello. El 68000 es mi CPU favorito, y me dolía destruirlo. Sí, destruirlo... ya que debido a que se trataba de una PCB de Konami y por la cantidad de pines, era mejor no arriesgar dañar la PCB y cortar las patas para desoldar cada una con cuidado. Esto es muy laborioso y lento, pero es la manera más segura de evitar problemas.
Le coloque una base, hecha de un par de bases de EPROMs:
Cabe resaltar que el CPU que necesitaba era un 68000 de 16Mhz, pero no tengo ninguno a la mano. De hecho, no tengo un sólo 68K de refacción que sea de 64 pines. Así pues, le coloqué un 68000 que uso en System 16 tomado de la mítica Street Fighter II pirata... pero es a 12Mhz. Los resultados no cambiaron, seguía con el mismo problema. pensando que la velocidad tenía algo que ver, tomé prestado un 68K @ 16Mhz de los más nuevos que había sido adaptado al clásico de 64 pines en una PCB china (original) de mini juegos y lo coloqué:
Pero los resultados no cambiaron. Dejé la PCB en espera por un par de semanas, ya que me puse a trabajar en Rygar y una Double Dragon de Sr Pixel. Ya este fin de semana, la retomé. Regresé el CPU de 12Mhz por sentirme culpable de tomarlo de otra placa (sí lo se, OCD) corriendo el riesgo de freírlo, y empecé a buscar con el osciloscopio donde podía estar la falla. Para ello, desactivé el watchdog de la PCB. El Watchdog es un mecanismo que resetea la PCB cuando se detecta falta de actividad en el BUS, o algún otra condición no esperada. Desactivarlo generalmente se logra soldando un Jumper, típicamente el Jumper 1. El watchdog es muy útil en un ambiente arcade, ya que regresa la máquina a su estado inicial en caso de un error en el código o hardware, lo cual permite que la máquina en sitio siga recolectando dinero aún desatendida. Claro que si la falla es grave, el juego no dejará de reiniciarse, como en este caso.
Mientras me encontraba revisando las líneas de datos y direcciones, de repente el juego inició y llegó hasta la pantalla de "RAM ROM check". Esto de inmediato me indicó que el CPU y el resto de la PCB funcionaban, y que de hecho si estaba leyendo las ROMs. La intermitencia me hizo pensar en un falso, y apretando el CPU a veces booteaba y a veces no. Para descartarlo por completo, decidí cambiar la base hechiza por una de tiras de pines. Siempre las he preferido, pero al sustituir el CPU no tenía tiras a la mano, y había decidido utilizar las bases de EPROM creyendo que no habría problema. A trabajar doble.
Ya con el CPU en las sólidas bases de tiras de pines, la placa arrancaba intermitentemente hasta la pantalla de prueba de inicio típica de Konami. Entre las pocas veces que sí desplegó la prueba completa, fallaban la 15B y 3F.
La 3F es una RAM típica, compatible con 6116. La 15B se trata de una NVRAM que todas las PCBs de Konami de la época utilizan, y que necesita ser reiniciada cuando un juego se cambia de región o cuando se corrompe. Esto lo aprendí con mi Sunset Riders, que marcaba el error en su respectiva EEPROM. Se soluciona muy fácilmente, manteniendo apretado el botón de TEST de la PCB - no el del cableado JAMMA - en el ciclo de arranque del juego. Esto causa que salga un texto de inicialización de la EEPROM y funcione todo bien después de ello. Así pues, procedí a hacer esto primero.
Para mi sorpresa, el juego nunca mostró el texto de inicialización de la EEPROM. Supuse que algo tendría que ver con que el juego arrancara intermitentemente, y mejor me puse a revisar la RAM dañada. Efectivamente algunas de sus líneas de salida se veían mal, así que decidí cambiarla. Ya en otras ocasiones las había cambiado inútilmente por confiar en las pruebas y no revisar, pero en este caso todo indicaba que la RAM sí estaba mal. Le puse una a TMM2018 a 35ms, aunque la PCB decía ser a 15 ms, pero no tenía otra a la mano. Debido a la velocidad de la PCB, esto no hace diferencia alguna ya que los accesos toman suficiente tiempo como para que no influya.
Y efectivamente el juego ya pasó esta prueba, pero seguía con el problema de la EEPROM en 15B. Para probar si todo estaba bien, decidí simular el apretado del botón. Medí en mi Turtles in Time que sucedía al apretar el botón y ví que se necesitaba dejar pasar la tierra al apretarlo, así que usando una punta con caimán para poner tierra en la pista como si el botón no existiese la PCB inicializó la EEPROM, y el juego arrancó sin problemas.
Sin embargo y como comenté arriba, ya me ha sucedido que dicho botón se necesite para inicializar la NVRAM a veces durante el uso normal, así que debía sustituir el botón. Para colmo, al probar en mi PCB el efecto del botón, noté que mi juego no arrancaba con el fondo negro y las letras en blanco, todo se veía verde. Algo le estaba fallando y había sido reciente, pues lo había jugado hace un par de meses. Me encontraba en el dilema de cambiar el botón, para el cual tenía que buscar un sustituto exacto o un parche, o arreglar mi PCB que ahora resulta se veía mal.
En ese momento decidí arreglar mi PCB, cosa que dejaré para otro post, pero después regresé a terminar este trabajo que sólo fue cambiar el botón, tomado de otra PCB de Konami destruida más allá de algo recuperable.
P.D: el CPU de 12Mhz no se ha quejado trabajando a 16Mhz, de la documentación que he leído parece ser que aguantan el overclocking bastante bien, pero buscaré uno de 16Mhz para estar tranquilo... (video relacionado https://www.youtube.com/watch?v=MpViDHurF4o)