Gamoover

Vous êtes nostalgiques des jeux vidéos de votre enfance ? Vous désirez acquérir, ou construire une borne d'arcade ? Vous trouverez ici les réponses a vos questions et une communauté de joueurs passionnés.

Zed Blade MVS - Remplacement V3 par 27C322 (mode 8bit vs 16bit)

Démarré par ldindon, Samedi 11 Janvier 2025, 19:44:50 PM

ldindon

Salut à tous !

Je suis en train de dépanner une cartouche MVS de Zed Blade qui a un soucis audio (manque des instruments).
Ce sont les maskroms V1, V2 et V3 qui stockent les samples audio. Afin de trouver laquelle a un soucis, j'ai créé des binaires remplis de 0x00, un pour chaque ROM:

dd if=/dev/zero ibs=1k count=2048  >076-v1.v1
dd if=/dev/zero ibs=1k count=2048  >076-v2.v2
dd if=/dev/zero ibs=1k count=1024  >076-v3.v3

ATTENTON: V1 et V2 sont des TC5316200CP (2Mo), et V3 est une TC538200AP (1Mo)

Pour info si on souhaite remplir de 0xFF (sous MacOs) il faut faire:
dd if=/dev/zero ibs=1k count=2048 | LANG=C tr "\000" "\377" >blank.bin

Ensuite j'ai remplacé une à une chaque ROM dans l'archive de Zed Blade puis j'ai lancé le jeu sous Mame (en ligne de commande pour qu'il ignore le mauvais CRC de la ROM remplacée).

Lorsqu'est arrivé le tour de V3 j'ai obtenu quasiment les mêmes problèmes audio qu'avec la cartouche. V3 est donc très probablement en cause.

Je l'ai donc déssoudée et effectivement son contenu ne correspond pas à celui de la ROM.

L'EPROM équivalente est une 27C800. Comme je n'avais que des 27C322 sous la main, je me suis dit que je pourrais en utiliser une en quadruplant la ROM d'origine. C'est ce que j'ai fait et bien évidemment ça n'a pas fonctionné !  >:D

En regardant de plus près je me suis rendu compte que les 27C322 sont des EPROMs 16bit uniquement tandis que les 27C800 (et 27C160) gèrent les modes 8bit et 16bit.
Dans le cas de Zed Blade, le mode est qui est utilisé est le mode 8bit. La pin /BYTE (32) est reliée à Vss.

Dans ce cas on ne peux donc pas remplacer cette 27C800 par une 27C322. Je pourrais commander quelques 27C800 ou 27C160 mais pour le fun (et pour utiliser mon stock), je souhaiterai quand même tenter le coup.

Je pense qu'il est possible de réarranger le contenu de la maskrom V3 pour le flasher sur une 27C322. Voici la procédure que j'ai en tête:

  • Séparer les octets de V3 dans 2 fichiers:
    romwak /b 076-v3.v3 even.v3 odd.v3
  • Créer un fichier blank de 512ko contenant des 0xFF:
    dd if=/dev/zero ibs=1k count=512 | LANG=C tr "\000" "\377" >blank.v3
  • Combiner chaque octet pair avec un 0xFF:
    romwak /m even.v3 blank.v3 V3-even.bin
  • Combiner chaque octet impair avec un 0xFF:
    romwak /m odd.v3 blank.v3 V3-odd.bin
  • Container les fichiers obtenus:
    romwak /c V3-even.bin V3-odd.bin V3.v3
  • Doubler le résultat final pour remplir les 4Mo de la 27322:
    romwak /c V3.v3 V3.v3 V3-27C322.v3

C'est « un peu » la procédure inverse qui est utilisée pour relire des maskroms TC5364205AP en mode 27C322 proposée par @Ptchnk ici: https://www.neogeo-system.com/t10279p25-lire-les-maskroms-tc5332204ap-tc5364205ap-et-tc531000-update#372712

Vous en pensez quoi ?

ldindon

#1
La procédure n'est pas bonne. Au final c'est très simple, l'idée est d'insérer 0xFF entre chaque octet de la ROM d'origine.

Par exemple si nous avons:

01 BC 18 1A ... 2C 4A

Il faut générer:

01 FF BC FF 18 FF 1A FF ... 2C FF 4A FF

Voici donc les commandes pour générer ce fichier:

  • Créer un fichier blank de 1024ko contenant des 0xFF:
    dd if=/dev/zero ibs=1k count=1024 | LANG=C tr "\000" "\377" >blank.v3
  • Combiner chaque octet de la ROM d'origine avec un 0xFF:
    romwak /m 076-v3.v3 blank.v3 V3-27C322.bin

Le fichier généré fait donc 2Mo. Ce n'est pas la peine de doubler pour arriver à 4Mo car la pin d'adresse A20 de la 27C322 sera automatiquement à Vss (donc 0), puisque celle-ci est sur la pin 32 qui correspond à /BYTE. Ce dernier étant relié à Vss sur le PCB.

ldindon

Bon c'est pas encore ça. J'avais oublié cette histoire de Q15A-1 (pin 30) qui est utilisé en mode 8bit pour choisir entre la partie basse ou haute des 16bit de données.

Sur la 27C322, la pin 30 n'a qu'une fonction et correspond à Q15. Il faudra donc que je lève cette patte ainsi que A20 (pin 32). Et que je je relie A20 au pad du PCB correspondant à Q15A-1.

Il faudra aussi que je réorganise mes octets dans l'EPROM en conséquence. Mais j'y réfléchirai demain...

Little_Rabbit

Salut,

Je n'ai lu qu'en diagonale ce que tu cherches à faire, et je ne connais pas ces références d'EPROM.

Mais pour ta réorganisation d'octets, ne te suffirait-il pas sur ton programmateur d'EPROM de dumper l'EPROM vierge : cela te remplira ton buffer de $FF. Puis tu charges ton fichier binaire, en précisant qu'il s'agit de la zone d'adresses impaires, et cela te donnera l'alternance $FF-$xx que tu sembles chercher à obtenir non ? :)

Encore une fois je ne suis pas sûr d'avoir bien compris ta démarche d'utiliser une EPROM 16 bits pour finalement l'utiliser en 8 bits... Il faudrait que je recharge leur datasheet ;).

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

ldindon

Citation de: Little_Rabbit le Samedi 11 Janvier 2025, 23:53:34 PMMais pour ta réorganisation d'octets, ne te suffirait-il pas sur ton programmateur d'EPROM de dumper l'EPROM vierge : cela te remplira ton buffer de $FF. Puis tu charges ton fichier binaire, en précisant qu'il s'agit de la zone d'adresses impaires, et cela te donnera l'alternance $FF-$xx que tu sembles chercher à obtenir non ? :)

Je ne savais pas que l'on pouvait faire ça avec le soft du programmateur. Mais de toute façon réorganiser les octets n'est pas un soucis. L'outil romwak est très pratique pour ça.

Citation de: Little_Rabbit le Samedi 11 Janvier 2025, 23:53:34 PMEncore une fois je ne suis pas sûr d'avoir bien compris ta démarche d'utiliser une EPROM 16 bits pour finalement l'utiliser en 8 bits... Il faudrait que je recharge leur datasheet ;).

C'est juste que j'ai beaucoup de 27C322 en stock et pas d'EPROM 8bit assez grosse. Je pensais que ça allait être facile mais apparement il y a quelques subtilités.

C'est clair que sans le pinout et les datasheets en tête ou sous les yeux mon post c'est du chinois !