Autor Tema: [SOLUCIONADO] GUN.SMOKE - Pantalla negra  (Leído 2693 veces)

Marcos75

  • ****
  • Mensajes: 3042
  • Arcadero de los 80s
[SOLUCIONADO] GUN.SMOKE - Pantalla negra
« en: 28 de Marzo de 2016, a las 19:40 horas »
Hola a todos.

Hace mucho que no documento ninguna reparación. En primer lugar porque hago pocas últimamente, y en segundo lugar porque las que hago son similares a otras que ya hemos documentado. Pero me he animado con esta porque tiene pinta de ser bonita y distinta. Seguramente acabe siendo como en esta otra que hice, en la que el problema resultó ser una pista rota a la que llegué después de investigar desde atrás hasta el origen, pero qué aburrido si hubiese visto esa pista desde el principio, ¿no?

Esta placa venía en estas condiciones:



No se aprecia bien, pero la EPROM 3 está rota. Al intentar sacarla, se ha desintegrado en mil pedazos. Como sospechaba (esta placa es muy similar a la original en diseño), las ROMs 4 y 5 coinciden con la placa original, así que grabé la 3 de ese mismo set. Pero la placa sigue sin arrancar. No tengo reloj en la CPU principal.

Antes de seguir, decir que no hay esquemáticos del Gun.Smoke en la red, pero la parte de video se puede seguir con los esquemáticos del Ghosts'n'Goblins, y la parte de CPU con los esquemáticos del 1943. De hecho, esta placa arranca sin la subplaca inferior (lo comprobé tras conseguir que arrancara), aunque juegas con una pantalla en negro.

Estábamos en que la placa no tiene reloj. Nos centramos en esta zona:



La imagen es ya con la reparación hecha. El condensador del cuadrado rojo estaba partido, y los del cuadrado azul (no afectan al reloj) también. Los del cuadrado azul, por comparación con la placa original, son 101. De hecho esta bootleg mejora el diseño de la original, ya que la original lleva uno de esos dos 101s "a caballo" en el integrado. El del cuadrado rojo no está en la original, así que he supuesto que es un condensador de filtrado de ruido, y he puesto otro 101. Pruebas posteriores me han demostrado que la placa funciona aparentemente bien sin él.

Pero la placa sigue sin arrancar. Me fijo en el inversor del circuito oscilador (el que está justo debajo del cristal), y veo que algunas de sus patas no tienen nivel a su entrada (ni luz verde ni luz roja con la punta lógica). Como esta placa se ha tenido que llevar un fuerte golpe, dado que una EPROM estaba rota, sospecho del cristal. Lo desueldo, y veo que suena como un sonajero, así que tiene pinta de estar roto. Pongo otro, y la placa ya arranca.

Todo parece que va bien, pero no tengo sprites en pantalla. Lo demás parece funcionar todo bien.

Antes de contaros en otro post cómo estoy trazando el problema de sprites, deciros que me he encontrado con una cosa extrañísima: resulta que en la zona de gestión de sprites hay un 74LS74 con una salida (/Q), ¡cortocircuitada a masa! Un integrado de este estilo puede tener una entrada fija, pero nunca una salida. Esta salida no se usa en el circuito, aunque su complementaria (Q) sí. Además, el otro flip-flop que contiene este integrado tiene la entrada PRESET "flotando", sin conectar a nada, lo cual también es extraño. Aún así ese flip-flop parece estar funcionando con normalidad. Pues bien, comparando esta parte del circuito con una original, resulta que esa /Q atada a masa debería estar realmente conectada al PRESET flotante. No debe ser el origen de mi problema, puesto que esta placa habrá estado así en explotación muchos años, pero he corregido el fallo de diseño así:



Tras lo cual todo sigue igual.
« última modificación: 01 de Abril de 2016, a las 16:19 horas por Marcos75 »


Bubu

  • ***
  • Mensajes: 2750
  • Old, pero muuy old school
Re:GUN.SMOKE - Pantalla negra
« Respuesta #1 en: 28 de Marzo de 2016, a las 20:17 horas »
Cita de: Marcos75 en28 de Marzo de 2016, a las  19:40 horas
Hola a todos.

Hace mucho que no documento ninguna reparación. En primer lugar porque hago pocas últimamente (...)

Más bien porque un escalador loco ha acaparado toda tu sabiduría  8)
Si algo funciona... ¡¡ no lo toques !!

¡¡ ni de coña !!

Marcos75

  • ****
  • Mensajes: 3042
  • Arcadero de los 80s
Re:GUN.SMOKE - Pantalla negra
« Respuesta #2 en: 28 de Marzo de 2016, a las 20:50 horas »
Los esquemáticos del Ghosts'n'Goblins tienen varias páginas dedicadas a los sprites (objects):

1/9 -> 96 OBJECTS DATA RAM
2/9 -> 24 / 96 OBJECT CONTROLLER
3/9 -> OBJECT DATA CONTROL
4/9 -> OBJECT ROM
5/9 -> LINE BUFFER 1
6/9 -> LINE BUFFER 2

Desde que se generan, hasta que se pintan. Al tener el problema localizado muy al principio de la cadena (no tenemos nada de nada), nos centramos en la hoja 1, que contiene la RAM que guardará los punteros a los sprites que posteriormente se sacarán de las ROMs. Concretamente esa RAM es esta:



Las RAMs 2114 de 4 bits en 11E y 12E, en la Gun.Smoke es en realidad una única RAM 6116 de 8 bits, pero la idea es la misma. En seguida compruebo que en esa RAM /WE está siempre a nivel alto, con lo cual la RAM nunca se está escribiendo, lo que implica que no está apuntando a ningún sprite para sacarlo de las ROMs. Ahí está el problema. En la foto de arriba se ve que esa señal que va a /WE se llama /BLCNTEN en los esquemáticos.

Un poco más abajo en los esquemáticos vemos cómo se genera esa /BLCNTEN:



Previamente a pasar por el inversor en 12D que parece estar bien, se genera en un 74LS74 en 14D. Este es el 74LS74 con el fallo de diseño que os comentaba en el anterior post (de hecho, en los esquemáticos veis cómo /Q del flip-flop de la izquierda conecta al PRESET del flip-flop de la derecha). Dado que esta placa tenía ese fallo de diseño y todo estaría funcionando con normalidad, deduzco que en realidad ambos flip-flop son relativamente independientes, y que por tanto mi problema debe venir del de la derecha.

Tiene dos posibles entradas, D (que proviene de la subplaca superior - señal /AKB) y CLK (que proviene de la misma subplaca - hoja siguiente de los esquemáticos - señal 0B8). En este punto intercambio las subplacas entre la que estoy reparando y la original que funciona, y determino que el problema está en la subplaca superior, señal /AKB.

Además detecto que justo al meter moneda sí se generan pulsos negativos en el /WE de la RAM de punteros de sprites, y sí que se muestran los sprites en pantalla, justo congelados en ese instante. Así que hay temas de "interrupciones" de por medio. Es decir, deben faltar interrupciones en la CPU principal para actualizar la memoria de sprites, y al "forzar" yo una interrupción de otro tipo (meter moneda), la RAM se actualiza.

Para seguir tenemos que cambiar a los esquemáticos del 1943. Buscamos esa señal /AKB, y la vemos aquí:



Es decir, quitando el buffer de por medio, el 74LS367, que parece estar bien, /AKB es la señal /BUSAK que el Z80 saca tras un ciclo de /BUSRQ. Por lo poco que sé, esto es un tipo de interrupción del Z80, como habíamos intuido, en el cual un elemento externo "pide permiso" al Z80 para adueñarse de los buses, y utilizarlos a su antojo.

No tengo señal /BUSAK, aunque con la punta lógica veo como si /BUSRQ iluminase las luces roja y naranja. Quizá esa señal /BUSRQ no es la que debería ser, así que voy a investigarla. Es decir, busco el origen de /RQB, que es /BUSRQ al otro lado del buffer. Los esquemáticos me llevan de nuevo a la placa de video, pero yo sé que el problema está en la placa de CPU, así que investigaré un poco a ver que veo, esta vez con el osciloscopio (tiraré de artillería pesada).

Y aquí me he quedado. Cuando tenga avances os los contaré.

Un saludo.

P.D.: Bubu, en realidad soy yo el que tengo al escalador loco parado en el bajo. A ver si mañana mismo te mando eso.


Characa

  • Con experiencia
  • ***
  • Mensajes: 916
Re:GUN.SMOKE - Pantalla negra
« Respuesta #3 en: 28 de Marzo de 2016, a las 22:14 horas »
Marcos, supongo que habrás mirado y requetemirado si hay algún daño físico que se haya pasado por alto, ya que una de las EPROMs estaba hecha trizas.

Caray, has irrumpido con fuerza! menudo análisis.

Estas placas con varios procesadores, la verdad son un poco complicadillas con lo de la gestión de buses y toda la parafernalia que conlleva.

Un saludo.

« última modificación: 28 de Marzo de 2016, a las 22:19 horas por Characa »

Marcos75

  • ****
  • Mensajes: 3042
  • Arcadero de los 80s
Re:GUN.SMOKE - Pantalla negra
« Respuesta #4 en: 01 de Abril de 2016, a las 16:08 horas »
Hola de nuevo a todos.

Ya la tengo lista. La verdad es que ha sido una reparación bonita, le he dedicado unas cuántas horas con el osciloscopio tratando de averiguar lo que estaba pasando.

En primer lugar, he invertido mucho tiempo siguiendo pistas "falsas", como que el problema pudiera estar asociado a interrupciones, meter moneda, gestión del acceso directo a memoria (DMA) con las señales BUSRQ y BUSACK, y otras historias.

Así que me centré de nuevo en el origen del problema: no tengo /WE en la RAM de punteros de sprites, que se genera en las inmediaciones del 74LS74 de esta zona:



Comparando señales con la placa buena veo por qué las señales a la salida del flip-flop de la izquierda no son buenas:

- Tiene su entrada conectada a GND, con lo cual cuando llega un flanco negativo de CLK debe bajar a nivel bajo, y cuando llega un flanco negativo de PRESET debe pasar de nuevo a nivel alto.
- En la placa original ambas señales de control, CLK y PRESET, están separadas por unos 300 us, con lo cual el filp flop tiene como salida un pulso negativo de esa anchura, que a la postre es la señal BUSRQ, y que es el instante en el cual se incrusta en el bus de datos la información de sprites.
- En mi placa ambas señales de CLK y PRESET son prácticamente simultáneas, con lo cual el pulso negativo que tendría que ser de 300us es de apenas unos ns, con lo que "no da tiempo a nada".

Una señal que contribuye a la gestión de estos flip-flop es OVER96, que viene de una zona de la placa de video donde se controla la temporización, en función de las señales temporales "maestras" (las Hx y Vx, por ejemplo), que vienen de la subplaca superior (donde sé que está el fallo).

Fijaos la diferencia (el desplazamiento) de esa señal OVER96 (en verde) sobre la señal de salida de los flip-flop (RQB, que es la que "pide" al Z80 el bus, la que inicia el ciclo de DMA para escribir la información de sprites) (en amarillo).




Como veis la señal está desplazada, llega "tarde". En el segundo caso (placa mala) no se aprecia la señal en amarillo porque, como os decía, tiene una anchura muy inferior a la que debería tener. Es un pulso negativo en el centro de la pantalla.

Así que me fui al piso superior, a la zona de "temporización", y revisé los contadores que generan las señales "maestras" de tiempo, y unos 74LS74s y 74LS138s que generan señales auxiliares que se envían también a la placa inferior. En uno de los 138 veo una señal que llama mi atención, ya que es una señal típica que emite un pulso negativo cada 15,7 KHz, pero en este caso emite dos pulsos gemelos. He puesto otro 138, y la placa ya funciona.

Es un caso típico de "ruido digital", que probablemente haya provocado yo mismo, y os cuento: la salida del 138 que daba la señal "ruidosa" está conectada a uno de los condensadores que he cambiado porque estaban rotos (los que marcaba en un recuadro azul en el primer post). Puse unos idénticos a los que tiene la placa original, porque desconocía el valor que tenían, pero si hubiese probado con otros valores, quizá hubiese dado con uno que filtrase el ruido más eficazmente. Ya me pasó en una Konami GT que tuve que sustituir un condensador que venía "de fábrica" por uno un 50% superior, para eliminar una raya vertical en pantalla.

El 138 que he puesto se ve que es "menos ruidoso" que el que había ;)

Un saludo.


ID4

  • Con experiencia
  • ***
  • Mensajes: 353
Re:[SOLUCIONADO] GUN.SMOKE - Pantalla negra
« Respuesta #5 en: 01 de Abril de 2016, a las 22:10 horas »
Buenas

Enhorabuena por la reparación, he leido tu post y he flipado con el nivel que tienes, me pregunto si alguna vez yo llegaré a tanto.

Por cierto acabo de adquirir una Gun Smoke Bootleg.

¡Saludos!

ID4

Characa

  • Con experiencia
  • ***
  • Mensajes: 916
Re:[SOLUCIONADO] GUN.SMOKE - Pantalla negra
« Respuesta #6 en: 01 de Abril de 2016, a las 22:55 horas »
Enhorabuena por este nuevo logro Marcos, con lo jodidas que son las averías de "timings" y la sencillez de la que haces gala en la explicación de todo el proceso de reparación, todo un maestro.

Cuando tengas problemas de integrados ruidosos... acuérdate de los HCT ;)

Un saludo.