Quoi de neuf ?
FlipperFrance

Quoi comment ! Pas encore membre ! Franchissez le pas, inscrivez vous avec le mail de votre F.A.I (VPN exclus), et participez à la vie Flippéristique

Tutoriel Traduction francais ROM Bally 6803 Special Force

F

flipbzh

Non Membre
ikoo

Achevant la restauration d'un Special Force, je trouvais dommage de ne pas disposer d'une ROM en Français. Après avoir glané des informations à droite et à gauche, j'ai réussi à modifier les 2 ROMS (U2 et U3) pour disposer de menus en Français. (je n'ai traduit que les informations affichées par le jeu en mode Freeplay - je n'ai pas traduit les menus de diagnostique et configuration notamment). J'ai surtout modifié les infos affichées pendant la partie (ex: SOLDIER => SOLDAT).
Avant de détailler la méthode que j'ai utilisé, j'insiste sur le fait que je ne garantis aucun résultat ou ne suis responsable des dommages que de telles manipulations pourraient engendrer sur votre flipper (la moindre erreur de programmation dans une ROM peut rendre votre jeu hors-service, voire l'endommager). Il s'agit d'une expérimentation menée à titre privé.
La méthode consiste à éditer le fichier binaire de chaque ROM dans un éditeur hexadécimal (ex: HxD), puis à modifier les valeurs d'affichage que l'on repère facilement dans l'éditeur. Pour modifier ces valeurs, il faut observer l'affichage d'origine (en anglais) et modifier le texte en prenant en compte l'espace disponible pour l'affichage (7 digits par afficheur). Il ne faut pas modifier la taille du fichier (toujours remplacer un caractère par un autre)
Point très important : avant d'effectuer les modifications d'affichage sur un fichier, il faut préalablement calculer le checksum-16 (dans mon cas 90FF pour U2 et 6FFF pour U3).
Lorsque les modifications d'affichage sont terminées, il faut rétablir le checksum à sa valeur d'origine (car les modifications changent sa valeur). (si un checkum n'est pas correct, la CPU ne démarrera pas)
Deux cas sont possibles :
- le nouveau ckecksum est inférieur à celui d'origine (c'est la solution la plus "confortable" et que j'ai rencontré avec U2). Dans ce cas, il faut repérer des zones vides de la ROM (000000 etc ..), généralement en fin de fichier, puis ajouter des valeurs hexadécimales à la place des 0000 pour rétablir le checksum d'origine
- le nouveau checksum est supérieur à celui d'origine (cas de U3 dans mon cas). Dans ce cas, il faut se débrouiller pour baisser la valeur. Pour cela, j'ai modifié un menu de configuration peu utilisé (dans mon cas, dans U3, j'ai modifié la valeur "GERMAN PRIZE" au niveau des valeurs hexadécimales pour mettre des 00000 afin de faire baisser le checksum)
Et après programmation des EPROMS puis test sur la CPU (à noter que certains testent d'abord dans un émulateur type PINMAME).
Je ne vous cache pas que j'ai du tâtonner en faisant plusieurs essais, mais au final, cela fonctionne. J'ai fait pas mal de test, y compris dans les menus de configuration, et pas de problème particulier, a voir dans la durée... Je pense que cette méthode peut s'appliquer à tous les jeux basé sur la CPU 6803.
Les points clés : ne pas modifier la taille du fichier, corriger le checksum en trouvant des zones "neutres" (00000 ou texte peu utile). Je peux communiquer les 2 fichiers ROM U2 et U3 pour ceux qui le souhaite, mais je le répète, cela demeure une opération risquée à n'effectuer que sous votre propre responsabilité.
 
J'ai aussi fait des modifs dans ce genre (les initiales des scores par defaut) le mieux serait d'avoir la "formule" qui calcul le checksum et/ou modifier la rom cpu avec le nouveau checksum ...
 
J'ai pas mal chercher pour comprendre la formule du checksum mais en vain. (il existe un logiciel pour la génération antérieure de bally, mais je n'ai pas essayé sur un CPU 6803). J'ai essayé un desassembleur pour voir, mais vraiment trop complexe pour moi.
Concernant la traduction, il y a un élément que je n'ai pas réussi à trouver/traduire, c'est le "BALL x" qui s’affiche en début de jeu... Tout le reste OK.
 
Le Checksum est la valeur de la pile de la mémoire
Lis ta mémoire avec un programmateur
Prend le checksum en 8 bits
Cela te donnera une valeur hexa
A inserer ou il se doit dans la mémoire (zone à trouver ...) car là je sais pas où ils otn fichus celles des sys6803
Tu peux chercher sur les mémoires d'origine
Tu lis le checksum
Tu cherches avec un éditeur Hexa les deux valeurs qui se suivent
 
Le checksum en 8 bits donne FF. Le pb, c'est qu'il y a plein de FF dans le fichier.
Même si on sait ou se trouve le checksum dans, je crois qu'il ne suffit pas que de le copier, il faut en effet que la valeur de checksum insérée soient cohérent avec le nouveau checksum calculé avec ce nouveau checksum. C'est un peu l'oeuf ou la poule :) Il doit surement exister une formule magique pour faire ce calcul...
 
OUi pardon 16 bits
J'avais la tête ailleurs (très occupé pour le transfert avec le nouveau serveur ....)
Au besoin pour les mémoires d'origine je te donnerai les Checksums de U2 et U3

regarde déjà sur le net, tu vas trouver de nombreux articles sur la " Valeur de la pile", ou inscrire la pile dans la mémoire, checksum
 
Retour
Haut Bas