Pagina 1 di 1

[Repair log] Mario Bros

Inviato: 15/06/2015, 15:07
da janniz
Sebbene proceda molto più lentamente di quanto vorrei, continua la pubblicazione dei miei repair log...
Questa volta sarà un po' meno dettagliata delle precedenti, ma sto ancora cercando una sorta di trovare un punto di equilibrio tra quanto/cosa vale la pena dettagliare e il costo in termini di tempo necessario per scendere a certi livelli di dettaglio...

Spluciando l'elenco dei miei appunti questa volta tocca a un gran classico Nintendo: Mario Bros

Background della scheda
Scheda acquistata come non funzionante dall'utente maxxximoma.
Si tratta della versione su due layer di Mario Bros. I due PCB che la compongono sono marchiati rispettivamente TMA1-02-CPU e TMA1-03-VIDEO.
PCB CPU
PCB Video
Immagini di repertorio dei due PCB che compongono il gioco (Come al solito mi sono scordato di fotografare la mia prima della riparazione). Come scritto più sopra la scheda CPU in mio possesso differisce da quella indicata sopra per il silk screen che indica TMA1-02-CPU invece di TMA1-05-CPU.

Malfunzionamento
La scheda si accende, ma non va oltre una prima schermata composta da un pattern pressoché fisso.
mariobros_01_01.jpg
Ispezione visiva
A una prima ispezione visiva la scheda si presenta in buone condizioni generali. A causa di un urto subito in passato, lo zoccolo in 4P si presenta parzialmente divelto. Fortunatamente i piedini sono integri ed una leggera pressione sul telaio in plastica lo riporta in sede senza evidenziare apparenti danni. Mancano inoltre tutte le etichette di copertura delle finestre di cancellazione delle eprom.

Guardando con attenzione il PCB scopro che nella locazione 5D sulla scheda CPU c'è uno Z80 CPU, tuttavia lo schematico presente nel service manual nella medesima locazione riporta il controller DMA della linea Z80. Probabilmente in seguito a un tentativo di riparazione maldestro, il vecchio DMA controller, marchiato Z80, è stato sostituito dalla versione, più nota e diffusa, dello Z80, vale a dire la CPU.
mariobros_01_02.jpg
Interventi effettuati
-= Ripistino del DMA controller =-
Dopo aver acquistato e rimpiazzato il controller DMA lo stato delle cose sembra migliorare, ed effettivamente ora la sequenza di boot termina con successo e il gioco si avvia... Purtroppo però il risultato non è ancora quello atteso:
mariobros_01_06.jpg
mariobros_01_08.jpg
Gli sprite di Mario, Luigi e dei nemici sono corretti, invece le scritte e gli sprite componenti lo sfondo sono chiaramente errati.

Vista la tipologia del problema ritengo possa trattarsi di un difetto di indirizzamento, probabilmente su un banco di RAM. Vado quindi a verificare i banchi installati sul PCB e alla fine riesco a ritrovare il colpevole. Si tratta della SRAM 1kx4 2114 in posizione 3D sulla scheda VIDEO. Mi appresto perciò a sostituirlo con un AM2148 (funzionalmente equivalente) prontamente zoccolato per rimpiazzare il componente difettoso:
mariobros_01_13.jpg
Dopo aver effettuato anche questo intervento i difetti grafici allo sfondo, spariscono completamente, e diventa quindi possibile giocare normalmente.

Tuttavia il tutto non è ancora esente da difetti in quanto tutti i colori risultano contaminati da una forte componente blu:
mariobros_01_11.jpg
Senza indugio inizio quindi a studiare il funzionamento della parte di logica deputata alla generazione dei colori in Mario Bros.

-= Palette =-
La generazione dei colori relativa alle tre componenti RGB avviene nella scheda CPU come schematizzato nell'immagine sottostante:
mariobros_01_33.png
Sostanzialmente la PROM @4P è una PROM 28S42 512x8, vale a dire 512 parole da 8 bit. Ogni segmento da 8 bit rappresenta un colore, codificato secondo la seguente tripletta: 2B,3G,3R.
La ROM risulta divisa in due blocchi accessibili in maniera mutuamente esclusiva. Il primo blocco, caratterizzato dall'avere A8 (MSB del bus indirizzi) posto a 0, lo si ottiene quando il ponticello CL2 è integro e quindi chiuso. Tale blocco referenzierà le triplette che hanno come codifica i colori invertiti, così come richiesti nella configurazione originale Nintendo. Tagliando il ponticello CL2 invece l'indirizzo A8 viene portato al valore logico alto, referenziando quindi la parte di memoria alta della ROM contente la codifica colore standard per i monitor arcade (E' possibile notare come i due blocchi di memoria contengono effettivamente uno i valori binari negati dell'altro).
Anche se non è pertinente con questo repair log, è comunque degna di nota la sezione a destra dello schematico, dove la presenza dei ponticelli CL4 e SL3 permette di selezionare la tipologia di CSYNC desiderata :CL4 chiuso e SL3 aperto -> -CSYNC (default), CL4 aperto e SL3 chiuso +CSYNC.

Il colore da visualizzare a schermo viene pertanto indirizzato tramite CADR[0..7]. Il valore da visualizzare a schermo sarà quindi riportato sull'uscita D[0..7], dove i singoli bit, rispettivamente in stato logico alto o basso, riporteranno diversi valori di tensione sui tre partitori, uno per ciascun canale, che piloteranno le uscite sul pettine JAMMA attraverso i transistor Q5-Q8.

Essendo marcatamente esagerata la componente blu, presente anche quando i due bit D[0..1] erano impostati a zero, ho pensato che potesse trattarsi di uno dei transistor che andasse erroneamente in saturazione. Ho quindi provveduto a rimuovere i tre transistor C828 e montare degli zoccoli per poter effettuare delle prove agevolmente (Prestare attenzione al fatto che i C828 non hanno il classico layout con la base al centro E B C, ma bensì un meno standard E C B):
mariobros_01_20.jpg
Purtroppo la mia supposizione iniziale si è rivelata sbagliata, quindi per poter cercare di identificare meglio il problema ho deciso di provvedere a modificare la palette originale contenuta nella PROM con delle palette custom che mi permettessero di indagare più a fondo il problema.

-- 28S42 --
Un po' di storia... Le memorie PROM (Programmable ROM) sono una tipologie di memoria molto diffuse all'inizio degli anni 80. Una PROM è una PLA (Pragrammable Logic Array) composta da una matrice AND fissa, e da una matrice OR programmabile tramite fusibili bruciabili in fase di programmazione applicando una tensione elevata al fusibile che si intende bruciare. In tal modo si viene a creare un circuito aperto e l'interconnessione viene interrotta. Queste memorie erano utilizzate al posto delle EPROM laddove i tempi di accesso di quest'ultime fossero stati eccessivamente alti.

Al giorno d'oggi, vista la loro natura non cancellabile, questo tipologie di memorie sta diventando sempre più raro, e di conseguenza costoso. Inoltre, dovendo utilizzarle per fare degli esperimenti sulla palette ho per forza necessità di utilizzare memorie riprogrammabili.

Come visto sopra, la PROM 28S42 è una PROM ampia 4096 bit, organizzata in 512 parole da 8bit. Di questi 4096 bit tuttavia abbiamo appena visto che a me ne servono solamente 2048 (quelli della palette positiva).
Un possibile sostituto per delle PROM è costituito solitamente da PAL/GAL, la cui logica interna è molto simile a quella delle PROM. In queste ultime infatti ad essere immutabile è la matrice delle OR, mentre la matrice delle AND puo' essere programmata (e riprogrammata nel caso delle GAL) a piacimento.
Purtroppo pero' dopo aver dato in pasto le equazioni da sintetizzare e ridurre al PC mi sono reso conto, tristemente, che il contenuto della PROM non poteva essere riportato in un equivalente GAL a causa del numero e della tipologia dei dati contenuti.

Senza perdermi d'animo mi sono messo a cercare se, al giorno d'oggi, esistessero delle EPROM sufficentemente veloci da poter rimpiazzare efficacemente il 28S42. Fortunatamente, dopo breve ricerca, ho trovato un possibile candidato nella EEPROM Winbond W27C512-45Z che con il suo tempo di accesso di 45ns si rivela un valido componente per sostituire per la memoria originale.
Come è noto, purtroppo, non c'è rosa senza spine, e le spine della nostra EEPROM sono sostanzialmente tutte nel diverso fattore forma (la EEPROM della Winbond è un 600 mil) e soprattutto il diverso pinout tra i due. Si rende quindi necessario costruire un adattatore:
mariobros_01_16.jpg
mariobros_01_17.jpg
mariobros_01_30.jpg
Genero dunque due diverse immagini della PROM, opportunamente modificate per visualizzare, nella schermata di test, le palette di Mario e Luigi colorate nelle varie sfumature di verde e di rosso nella prima, e di blu e con una palette di calibrazione nella seconda:
mariobros_01_23.jpg
mariobros_01_24.jpg
mariobros_01_25.jpg
Ed agendo sulla calibrazione del monitor riesco ad ottenere un risultato più che buono:
mariobros_01_26.jpg
mariobros_01_28.jpg
Soddisfatto del risultato mi appresto a rimettere la PROM originale... e qui faccio la belinata del secolo <-dash-> <-dash-> <-dash-> <-dash-> <-dash-> <-dash->
Vuoi la stanchezza, vuoi la fretta, ho inserito l'integrato al rovescio nello zoccolo!!!
Risultato: PROM bruciata e tante imprecazioni! Per cercare di risolvere un non problema (la tonalità blu) sono andato a cercarmente uno ancora più grande. Per fortuna, disponendo del dump della PROM originale, posso riprogrammare la mia EEPROM adattata per sopperire temporaneamente alla mancanza della PROM.
mariobros_01_32.jpg
mariobros_01_29.jpg

Re: [Repair log] Mario Bros

Inviato: 22/06/2015, 23:49
da frame
Leggo sempre con massima ammirazione di cose che sono fuori della mia portata...nemmeno avendo un'altra vita di studi da zero credo ce la farei..

Volevo chiedere (poi comprendo se rimane lettera morta):

1.
janniz ha scritto: SRAM 1kx4 2114 in posizione 3D sulla scheda VIDEO. Mi appresto perciò a sostituirlo con un AM2148 (funzionalmente equivalente)
Che difetto aveva quella RAM (come te ne sei accoro..con che verifica), e dove trovi le "equivalenze" di compatibilità dei vecchi pezzi con quelli più receneti


2. curioristà: ...il "4P" genera RGB senza SYC (il quale proviene dalla pista 31 se leggo bene)? ..solitamente gli "encoder" (credo si chiamino così) provvedono a tutta la parte video..


3. la "28S42" sostituita con una EPROM ad accesso adeguato, ti ha tolto il dubbio ( dopo la sostituzione del Q6) che probabilmente la PROM originaria fosse "malfunzionante".. ma poi non ho capito come mai alla fine l'hai voluta rimontare (la stessa?.) anche se poi la stanchezza ti ha tradito il verso... ma: ne hai trovata una uguale, ma da programmare?...se si, come riesci a programmare una PROM?..cosa usi?

Re: [Repair log] Mario Bros

Inviato: 23/06/2015, 16:22
da Morra76
Sei un grande! Ho una fila di pcb che pressano per finire sotto le tue grinfie.... <-thumbup->

Re: [Repair log] Mario Bros

Inviato: 23/06/2015, 17:13
da biasini
Ottimo janniz...ormai di queste cose qui se ne vedono poche purtroppo...

Re: [Repair log] Mario Bros

Inviato: 23/06/2015, 17:28
da baritonomarchetto
Giá... e non capisco perché non vengano pinnate (al contrario dei "venditori di potenza")

Re: [Repair log] Mario Bros

Inviato: 23/06/2015, 17:35
da arcadeslow
io sarei arrivato a soffiarla col compressore e passare le piste con il wd 40, e se non andava nella differenziata elettronica...

Re: [Repair log] Mario Bros

Inviato: 23/06/2015, 20:48
da motoschifo
Complimenti! <-clap->
Io sono l'ultimo che può commentare perchè di elettronica ci capisco poco... ma vedere questi log mi piace sempre molto! :)

Re: [Repair log] Mario Bros

Inviato: 24/06/2015, 20:09
da janniz
I complimenti fanno sempre piacere... le critiche, quando sensate ed educate, pure...
Grazie a voi per aver letto questo log...

Re: [Repair log] Mario Bros

Inviato: 25/06/2015, 17:48
da devil78
Wow :)

Re: [Repair log] Mario Bros

Inviato: 27/06/2015, 7:21
da ratmuskè
Grande Janniz, purtroppo però non mi piace la perdita dell'originalità della scheda, oggi programmare una prom è un dolore nell'ano, lo so.
Non potresti provare a sentire Hobby Roms?
è un ragazzo disponibilissimo ed in pochi giorni avresti la prom a casa tua dal Canada al costo di una 20ina di dollari complessivi, provato personalmente per le prom colori del D.K. Junior.

Re: [Repair log] Mario Bros

Inviato: 08/07/2015, 10:15
da janniz
ratmuskè ha scritto:Grande Janniz, purtroppo però non mi piace la perdita dell'originalità della scheda, oggi programmare una prom è un dolore nell'ano, lo so.
E si... purtroppo ho imprecato non poco per l'errore...

Subito mi ero lasciato solleticare dall'idea di ricomprare la PROM e riprogrammarla... purtroppo le PROM vuote oggi costano più dell'oro e sinceramente non avevo voglia di spendere una ventina di euro tra spedizione e pezzo per poi comunque NON avere ugualmente il pezzo originale... (in primis mancherebbe l'adesivo, che dovrei ricreare perché la vedo dura staccarlo dalla eprom guasta).
La soluzione migliore (l'unica soluzione che preserverebbe realmente l'originalità credo) sarebbe procurarsi una scheda morta di Mario bros e andare a cannibalizzarla... In quel senso sarebbe ripristinata totalmente l'originalità.

In tutti gli altri casi, PROM riprogrammata, EEPROM sostitutiva, PROM prelevata da bootleg (ne ho giusto uno che attende di essere rivisto) sarebbero delle sostituzioni IMHO perfettamente equivalenti dal punto di vista elettrico/elettronico, ma NON preserverebbero l'originalità del pezzo (Per capirci, sarebbe un po' come mettere un ricambio aftermarket su un auto d'epoca).

Poi, sto cercando di farmi una mia idea su quella che è la preservazione/conservazione di questi "reperti storici", purtroppo linee guida riconosciute non ce ne sono... o meglio, anche leggendo forum esteri, ognuno dice la sua, ma non essendoci un mercato specifico con regole specifiche potremmo discutere di tutto e del suo contrario ed avere ragione entrambi.

Detto questo, dubito che questa scheda lascerà casa mia... quindi se negli anni a venire inciampassi in un altro Mario Bros morto/cadavere/spacciato/irrecuperabile sai già come procederò... :-D

Re: [Repair log] Mario Bros

Inviato: 08/07/2015, 20:02
da ratmuskè
Si Janniz, il Mario Bros originale in Italia ho visto soltanto la tua nella storia, credo sia l'unica!
la mia l'ho acquistata negli USA non testata quando ancora era conveniente prendere le PCB da li.
Tu pensa che ho speso in totale una 70ina di euro per ripristinare le prom del DKJ, era stato convertito in mario ros e quindi ho dovuto sostituirle tutte e 3.
Caius mi ha aiutato prendendole "nuove" e cercando di programmarle, ma prima di trovarne tre buone e veramente vergini ho dovuto comprarle a prezzo salato svariate volte...
Alla fine mancandone ancora una ho deciso di prenderla sul sicuro già programmata da Hobbyroms, tra l'altro in versione ceramica.
Negli anni mi sono specializzato nel riprodurre le etichette con Photoshop, questo è un esempio :
Immagine