Le Deal du moment :
Cartes Pokémon 151 : où trouver le ...
Voir le deal

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160

Aller en bas

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Empty Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160

Message par ldindon Mar 14 Juin 2022 - 15:24

Salut à tous les bricoleurs MVS !

Je suis en train de redonner vie à une pauvre cartouche MVS de Fatal Fury. Je ne sais pas ce qui s'est passé mais elle a morflé la pauvre:

- P1: HS
- P2: HS
- V1: HS
- V2: HS

J'ai changé les 4 MASKROMs par 4 EPROMs compatibles (en théorie).

Pour V1 et V2 qui sont à la base des TC538200 et donc équivalentes à des EPROMs 27C800, n'ayant pas de 27C800 en stock, j'ai utilisé des 27C160 et j'ai doublé la ROM car les 27C160 ont le double de la capacité des 27C800. Une fois les EPROMs en place j'ai retrouvé le son.

Pour P2 qui est à la base une TC531024 et donc équivalente à une EPROM 27C1024, j'ai bien utilisé une 27C1024.

Pour P1 qui est à la base une TC534200 et donc équivalente à une EPROM 27C400, n'ayant pas de 27C400 en stock, j'ai utilisé une 27160 et j'ai quadruplé la ROM ! La 27160 à 42 pins contre 40 pour la 27C400 mais il la PCB est compatible 40/42 pins.

Une fois tout ce petit monde en place le jeu était fonctionnel, SAUF qu'aléatoirement j'avais des crashs. Après avoir failli abandonner et même avoir transformé la CHA board en carte de test Z80, j'ai tenté un petit truc qui s'est avéré être la solution mais je ne comprends pas pourquoi. scratch

Pour mieux comprendre voici un petit schéma qui montre les équivalences MASKROM / EPROM qui nous intéressent:

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 40_0_a10

La 27160 a donc 2 pattes en plus par rapport à la 27C400. Tout le reste est identique. Sur la PCB on a la pin 1 (A18) qui est reliée à une pin du connecteur de la cartouche. Par contre la pin 42 (A19) est elle délibérément flottante. Ca ne devrait donc pas poser de soucis car en fonctionnement, A19 étant flottant, le signal sera interprété  parfois à l'état haut et parfois à l'état bas. Mais comme j'ai recopié le contenu original 4 fois les données lu seront les mêmes.

Comme j'avais des crashs aléatoires j'ai tenté en dernier recours de forcer A19 à la masse. J'ai donc soudé un fil de la pin 42 vers la pin 31 (Vss). Et depuis plus de crash du tout !!!
Je me suis dit que j'avais peut-être fait une mauvaise manipulation en gravant en 4 fois avec mon TL866. Comme aujourd'hui j'ai un Wellon VP-280, j'ai donc déssoudé l'EPROM pour la relire en une fois. Puis j'ai découpé le binaire obtenu en 4. J'ai ensuite passé les 4 morceaux un à un sur ROMIDENT. A ma surprise ils étaient tous bon.

Je vais remettre tout ça en place (ou commander une 27C400), mais j'aurais bien aimé comprendre ce phénomène.
Donc si quelqu'un (@Bouz par exemple) a une idée, ça serait top !

_________________
Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Rila-breakers-stance
ldindon
ldindon
Used
Used

Messages : 284
Date d'inscription : 07/06/2022
Age : 49
Localisation : Metz

Revenir en haut Aller en bas

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Empty Re: Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160

Message par Bouz Mar 14 Juin 2022 - 19:27

J'essaie de te faire une réponse complète ce soir Wink.
Bouz
Bouz
Scellé
Scellé

Messages : 3008
Date d'inscription : 11/06/2019
Age : 46
Localisation : Saint Bauzille de Putois

https://www.youtube.com/@AurelienBricole

Revenir en haut Aller en bas

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Empty Re: Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160

Message par Bouz Mar 14 Juin 2022 - 21:35

Alors je commence par une petite explication théorique pas compliquée (edit: pas forcément, désolé) sur le dysfonctionnement avec une broche flottante, et je finirai avec un "j'avais prévenu" Wink.
C'est parti...

Alors une EPROM (ou une MASK ROM, d'ailleurs), ça fonctionne de manière assez basique du point de vue de l'électronicien numérique amateur que nous sommes:
- On met une valeur sur le bus d'adresses
- On passe active la sortie (/CE et /OE)
- On récupère les valeurs sur le bus de données

Dans les faits, ce n'est pas beaucoup plus compliqué, mais il y a quand même des timings à respecter. Souvent, le processeur (au moins quand il est rapide) utilise les circuits de gestion de la mémoire pour gérer des temporisations en fonction de son interlocuteur. C'est le cas du 68000, qui a même des broches qui lui permettent de gérer un handshake avec ses périphériques mémoire.
La partie "visible" du timing, c'est la mention à la fin de la référence des puces, qu'on voit souvent sur la RAM sous la forme -90, ou -12, ou -10 (90ns, 120ns, 100ns respectivement). C'est le temps minimum d'un cycle de lecture, à savoir le temps entre l'affectation des valeurs sur le bus d'adresses, et l'arrivée de données fiables sur le bus de données.

Bref, le timing qui nous intéresse ici, il est là (dans le datasheet des EPROMS, les durée dépendent des références):

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Double10

Tu observes que les données sont acheminées vers le bus de données pendant la période tOE. C'est le temps qu'il faut au décodeur d'adresses pour... décoder l'adresse (+ le délai de propagation de la matrice mémoire vers les buffers de sortie, + le délai de propagation des buffers en question).
Avant cette durée tOE, la sortie vaut à peu près n'importe quoi. Ca peut être la valeur précédente, quelque chose d'aléatoire, n'importe quoi de lié au fonctionnement torturé du décodeur d'adresses (qui reste actif même quand la sortie est désactivée, au passage). Bref, ce n'est pas fiable et il ne faut pas compter dessus.

Le décodeur d'adresses, pour référence:

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Double13

Maintenant, qu'est-ce qui se passe quand une broche du bus d'adresses reste flottante?
Flottante, ça veut dire que la broche n'a pas de lien, même assez faible, avec un point de tension de référence par rapport à la masse (+5V, 0V, n'importe quoi même si ce n'est pas un niveau TTL). Et dans les faits, cette broche n'étant tirée vers aucune tension (reliée à la masse, au VCC, en direct ou via une résistance pullup/pulldown), elle prend effectivement n'importe quelle valeur. Si on sonde ça à l'oscilloscope, même avec une impédance de sonde de 10GOhms, on observe le signal qui oscille joyeusement. Au mieux, à 50Hz à cause du réseau électrique qui nous irradie d'ondes électromagnétiques, au pire à plusieurs kHz s'il y a une alim à découpage ou une bobine dans les parages (ou un téléphone, ou un micro-ondes, ou... un compteur Linky (je plaisante)).
Bref, la broche fait n'importe quoi.
Au passage, rien ne limite la tension, dans un sens ou dans l'autre, et on peut dépasser les seuils limites que les puces peuvent supporter. Pour le TTL, c'est du costaud. Pour du CMOS, on peut les flingues en faisant ça.
En règle générale: on ne laisse pas les entrées flottantes (c'est valable sur à peu près tout ce qui est une entrée).

Alors si on en revient à notre diagramme de temps de tout là-haut, et qu'on considère que l'une des broches du bus d'adresses fait n'importe quoi (la puce peut même recevoir encore plus de variations, vu qu'elle fait n'importe quoi quand la tension n'est pas dans un intervalle TTL valide), on voit qu'on a un souci si une variation se produit pendant (ou même après) la durée tOE. Le circuit de décodage entre en action, renvoie n'importe quoi le temps de se stabiliser sur la valeur attendue, et retourne la bonne valeur. Le fonctionnent attendu est que les lignes d'adresses ne changent plus une fois la broche /OE activée.
Du coup, si on récupère la valeur sur le bus de données pendant cet intervalle, le résultat est aléatoire (et donc a priori, soit le programme crashe, soit les sons sont pourris, soit les grahismes ont des glitches alétoires).

J'espère ne pas avoir trop fait trainer et que c'est à peu près clair. La bonne nouvelle, c'est que maintenant, on a un topic pour en discuter Wink.

Ah, oui, et pour finir, comme convenu, mes messages plus ou moins récents sur des chaînes de réparateurs (que j'aime bien) sur le sujet et les réponses que j'ai reçues Smile
C'est un combat me concernant, je ne peux pas m'empêche de commenter quand je vois faire ce genre de choses!

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Double12

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Double11
Bouz
Bouz
Scellé
Scellé

Messages : 3008
Date d'inscription : 11/06/2019
Age : 46
Localisation : Saint Bauzille de Putois

https://www.youtube.com/@AurelienBricole

Revenir en haut Aller en bas

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Empty Re: Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160

Message par ldindon Mar 14 Juin 2022 - 22:05

Merci @Bouz c'est super clair et super détaillé ! Je n'en demandais pas temps mais de ce que j'ai compris ce sujet te tiens à coeur Smile

D'habitude quand je m'amuse à doubler les ROMs ça marche bien mais les pins ne sont pas flottantes. Dans le cas de la PROG board de Fatal Fury, je pense que l'emplacement a été prévu pour du 27C400 ou du 27C800. Dans le premier cas la pin 42 n'existe pas et dans l'autre elle n'est connectée à rien dans la puce. Donc pas de soucis.

Pour corriger le problème j'ai fait un joli pont entre la pin 42 (A19) et la pin 41 (A8). C'est propre et ça marche nickel. J'ai pu aller jusqu'au boss pour me faire défoncer.

_________________
Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Rila-breakers-stance
ldindon
ldindon
Used
Used

Messages : 284
Date d'inscription : 07/06/2022
Age : 49
Localisation : Metz

Revenir en haut Aller en bas

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Empty Re: Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160

Message par Bouz Mar 14 Juin 2022 - 22:20

Parfait! Juste parce que je suis un peu un chieur quand même, je dirais que ça fait commuter 2 fois plus de courant par ma puce de commande (je ne sais plus qui c'est), mais je ne suis pas comme ça Wink.
Les cartes sont prévues pour supporter plusieurs types de puces en fonction du jeu. Après, ils font des trous dedans pour couper les pistes inutiles. Ta ligne d'adresse doit être dans ce cas...?

Si ça t'intéresse, je parlais ici de puces double taille bricolée pour faire une cartouche de test Z80 sans flinguer mon magnifique bootleg Puzzle de Pon:

https://www.neogeo-players.com/t3785-wip-100-reparation-d-un-slot-mv-1fs-en-erreur-z80-creation-d-une-cartouche-de-test-audio#132714
Pull up (ou down?) + interrupteur.

Mince, si, je suis un chieur! Je me dévoile un peu plus chaque jour!

Edit: en plus on s'en fout un peu, il doit y avoir 5 autres puces sur le bus, on n'est pas à ça près!
Bouz
Bouz
Scellé
Scellé

Messages : 3008
Date d'inscription : 11/06/2019
Age : 46
Localisation : Saint Bauzille de Putois

https://www.youtube.com/@AurelienBricole

Revenir en haut Aller en bas

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Empty Re: Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160

Message par theWave Mer 15 Juin 2022 - 8:49

Le plus simple c'est pas de mettre la même référence de puce, au delà du défi bien sûr ???

_________________
Sanjuro a écrit:en Special Guest Star, WRC dans le rôle de theWave
ancien directeur du service de renseignements NGS, il a le bras long comme un anaconda sous stéroïdes, si un gros bonnet doit se coucher, c'est qu'il en a donné l'ordre.
theWave
theWave
Pièce unique
Pièce unique

Messages : 10095
Date d'inscription : 25/10/2015

Revenir en haut Aller en bas

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Empty Re: Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160

Message par ldindon Mer 15 Juin 2022 - 9:47

theWave a écrit:Le plus simple c'est pas de mettre la même référence de puce, au delà du défi bien sûr ???

Oui c'est le plus simple. Le soucis dans ce cas c'est que je n'en avais pas sous la main ET SURTOUT que les 27C400 sont très chères comparées aux 27C800 ou 27C160 (7 € pièce contre 1€ pièce). Pour un titre à 300 balles je veux bien mais pas pour un pauvre Fatal Fury. Les 27C400 sont probablement plus recherchées car utilisées pour les Amiga ou alors simplement qu'on en trouve moins.

Bouz a écrit:
Les cartes sont prévues pour supporter plusieurs types de puces en fonction du jeu. Après, ils font des trous dedans pour couper les pistes inutiles. Ta ligne d'adresse doit être dans ce cas...?

Il me semble que le pad est tout seul, aucune piste n'en part pour ce jeter dans un trou. Par contre je l'ai vu sur d'autres composants. Je regarderai par curiosité si c'était sur des pins d'adresses ou de données. De mémoire c'était des données.

Bouz a écrit:
Si ça t'intéresse, je parlais ici de puces double taille bricolée pour faire une cartouche de test Z80 sans flinguer mon magnifique bootleg Puzzle de Pon:

https://www.neogeo-players.com/t3785-wip-100-reparation-d-un-slot-mv-1fs-en-erreur-z80-creation-d-une-cartouche-de-test-audio#132714
Pull up (ou down?) + interrupteur.

Oui j'avais vu et j'avais trouvé ça super cool et bien pensé ! Je l'ai d'ailleurs noté dans ma TODO list.
D'ailleurs je suis en train de lire toutes tes vidéos histoire de gratter quelques astuces. Evidement je te gratifie d'un yesss après chaque visionnage (au passage ta fille m'a bien fait marré quand elle a présenté les jeux Neo Geo  ptdr ).

_________________
Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Rila-breakers-stance
ldindon
ldindon
Used
Used

Messages : 284
Date d'inscription : 07/06/2022
Age : 49
Localisation : Metz

Revenir en haut Aller en bas

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Empty Re: Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160

Message par Bouz Mer 15 Juin 2022 - 12:27

ldindon a écrit:D'ailleurs je suis en train de lire toutes tes vidéos histoire de gratter quelques astuces. Evidement je te gratifie d'un yesss après chaque visionnage (au passage ta fille m'a bien fait marré quand elle a présenté les jeux Neo Geo  ptdr ).

Tant mieux si ça sert à quelque chose. C'était donc toi qui regardais? Merci Smile.
On s'est bien marrés aussi, on a fait 12 prises parce qu'elle n'arrivait pas à dire "ptérodactyle". On a fini par dire "dinosaure" Wink.
Bouz
Bouz
Scellé
Scellé

Messages : 3008
Date d'inscription : 11/06/2019
Age : 46
Localisation : Saint Bauzille de Putois

https://www.youtube.com/@AurelienBricole

Revenir en haut Aller en bas

Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160 Empty Re: Fatal Fury MVS - P1 - Remplacement 27C400 par 27C160

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum