まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

IQS−PGM - Cartouche de jeu DIY N°1

Suite de l'aventure précédente :
Nous allons donc ici fabriquer les 3 jeux CAVE − ESPGaluda, Ketsui, et Dondonpachi Dai-Ou-Jou − supportés par la cartouche de Fluffy, membre du forum Arcade Project, qui partage le fruit de son travail permettant de reproduire ces jeux sur IGS−PGM (mais pas les graines).

Sur celle-ci est indiqué un tableau avec la liste des jeux disponibles sur le système IGS−PGM, par catégories technologiques.
En effet, d'après ce que j'ai compris, certains jeux embarquent des puces d'encryptage de données rendant la reproduction des jeux impossible pour le moment, listés en rouge.
Faut-il donc comprendre qu'il serait possible de reproduire les jeux listés en vert ? Je n'ai pas de réponse à cette question, n'ayant pas suffisamment creusé le sujet, faute de ressources facilement accessibles, ou que je n'ai su trouver…(mon sentiment est que ça partage dans l'entre-soi, probablement sur des fils discord de fait privé, et moins sur les forums qu'il faut fouiller en profondeur, ce qui n'est pas simple. Encore moins publiquement donc comme ce qui va suivre)

  • Je vais également fournir les fichiers nécessaires, (une archive complète en annexe à ce billet : fluffy_ressources_pgm.zip) et même si internet n'oublie jamais − ce qui serait quasiment faux si archive.org n'existait pas − ça fera une copie de sauvegarde, et simplifiera les choses pour cette ressource en Français.


Première étape, Les plaques de circuits imprimés :

  • Fluffy fournit deux archives zip, RomgravePgmChar.zip et RomgravePgmProg.zip, contenants les fichiers gerber nécessaires à la fabrication des plaques. Il précise aussi des options d'usinage particulières à respecter impérativement.
Settings:
- PCB thickness: 1.6mm 
- Surface finish: ENIG (this is a chemical gold plating process)
- Gold Fingers: Yes (this adds a process for gold plating slot connectors)
- 30 degree chamfer: Yes (This adds a bevel to the slot connector)
- with jlcpcb you can set "remove order number" to "specify location", which should move the production code under one of the EPROMs.
The remaining settings can be left as a default. I selected a red solder mask to make the pcbs make stand out, but any colour works. Colours other than green cost extra.

J'ai effectué des captures d'écrans des réglages à appliquer chez JLCPCB, il faudra les adapter si on choisis une autre usine :
La carte « program » a 4 couches et sera donc la plus chère, autour de 47€ les 5 exemplaires.
La carte « character » a 2 couches coûte quand à elle 28€ à fabriquer.
En fonction des frais de ports et diverses taxes, le prix pourra varier. J'ai reçu les miennes pour 125€.

  • Pour une cartouche de jeu, nous aurons besoins de ces composants :
Qt  |  Désignation
10  |  EPROMs 27c322, UVproms d'occasions
 2  |  GAL16V8 réf: ATF16V8B-15PU
 2  |  CI 74LS257
 1  |  CI 74LS139
 1  |  CI 74LS138
16  |  Condensateurs de 100 nF
 4  |  Condensateurs de 10 µF 16v (électrolytique polarisé)
 1  |  Résistances de 100 Ω
 2  |  Réseaux de 8 résistances de 10 kΩ
 3  |  Socket ou support tulipe de 42 pin
 2  |  Socket ou support tulipe de 20 pin
 3  |  pin header + jumper, au pas de 2.54mm
  • Une fois soudés (presque) tous les composants passifs et supports :



Deuxième étape, Le boîtier :

Certaines personnes achètent des jeux originaux bon marchés, parmi les moins aimés de la ludothèque PGM et récupèrent donc le boîtier pour leurs jeux DIY. Cette pratique est critiquable et pourrait-être débattue, mais ne me plaît pas. Et tant qu'à fabriquer, allons jusqu'au bout !

  • J'ai tenté d'imprimer le premier dessin de boîtier que j'ai trouvé sur le forum.

Il n'est pas très joli et relativement imparfait pour ce qui est de correctement aligner les cartes électroniques, mais il a fait l'affaire durant quelques temps.

  • J'ai par la suite trouvé ce dessin d'un autre membre du forum, nmap, dont les fichiers STL sont partagés via printables (mais pas les sources, décidément…), et j'ai passé un peu − beaucoup − de temps à reprendre les STL pour refaire la modélisation à ma sauce !

En effet je souhaitais faire ressembler le plus possible la cartouche à une originale, et le dessin de nmap était une bonne base pour cela.
L'occasion de me créer un compte sur la plate-forme de Mr Prusa (après tout j'utilise une de ses premières imprimantes) et de proposer un remix des objets, avec les sources pour FreeCAD :) !

  • En voici une galerie de photos:





Troisième étape, La programmation :

  • On commence par le jeu ESPGaluda

1 − Extraire les binaires pour les EEPROM 27c322 :
Télécharger sur le net la rom mame avec la mention « BL », ici : espgalbl.zip
À priori celle-ci devrait peser 19,8 Mio (20822813 octets)

  • À l'aide du script python rom_gen.py disponible en annexe à ce billet, qu'on aura pris soins d'extraire préalablement, exécuter :
python3 rom_gen.py espgalbl.zip


Qui va générer le dossier « espgal_rg » contenant les binaires à flasher sur les puces. (le dossier « bios_rg » n'est pas utile)

2 − Programmer les EEPROM 27c322 :
J'utilise le programmateur TOP2040 dont je parlais ici.

  • On commence par ouvrir l'arborescence d'eeprom et rechercher M27C322, et lorsqu'on valide on nous présente l'onglet Placement. On peut alors placer l'UVprom comme indiqué.


  • Ensuite on veut vérifier si la puce est bien vide, en cliquant sur Check blank chip, et après quelques secondes doit répondre : Blank…Complete. Si ce n'est pas le cas, il faut repasser la puce dans la cabine UV (en principe munie d'une lampe à 253.7 nm de longueur d'onde) pendant 10 min, voir plus pour être sûr.


  • Puis on ouvre le premier fichier binaire, on laisse les options par défaut et on clique ok, ce qui charge le binaire dans le buffer du logiciel. On clique alors Write Code to chip et on patiente… on patiente… on patiente… Ça prend un peu plus de 8 minutes, avant, si tout se passe bien, de répondre : Write…Complete.


  • Et enfin on clique Compare chip with the file buffer, pour donc vérifier que le binaire lu sur la puce est identique à celui qu'on viens d'écrire. On patiente quelques secondes et on espère obtenir : Vérify…Complete.


Sinon on recommence tout, effacement, vérification, écriture, vérification. Il arrive en effet que certaines eeproms soient un peu récalcitrantes à se laisser effacer complètement, étant donné leurs grand âge, mais aussi que malgré tous ces efforts il soient impossible d'en tirer quoique ce soit, et de devoir les déclarer alors HS. Moralité, prévoir un surplus à l'achat.

  • Ensuite, on procède de même pour les 9 autres eeproms, en leur collant des étiquettes sur les fenêtres des puces, pour éviter qu'elles ne s'effacent à la lumière du jour, et y écrire la référence du binaire programmé.


3 − Placer les EEPROM 27c322 sur les PCB :
Se référer pour cela aux sérigraphies, et faire attention au sens d'orientation des puces !

4 − Programmer la GAL : ATF16V8B qui va en position U6 :
Écrire le fichier PGM-RG-U6.jed.
Même principe avec le TOP2040, la différence principale ici c'est que cette puce est effaçable électriquement, donc on pourra si besoin l'effacer sur le programmateur grâce à l'icône en forme de gomme (qui est maintenant accessible car on a bien sélectionné le type de puce concernée).

5 − Programmer la GAL : ATF16V8B qui va en position U5 :
Écrire le fichier PGM_RG_U5_ESP.jed.

NB : Dans le cas de ce jeu, les jumpers ne servent à rien.

Quatrième étape, Mise en cartouche et tests :


  • Une petite vidéo :

Et d'un !
Je m'occuperais des deux autres plus tard !

À Suivre…



Ressources :
Les PGM en général :
https://www.neogeo-players.com/t659-dossier-pgm-poly-game-master-by-igs
https://www.youtube.com/watch?v=iyJ_NyLePLA
http://www.igspgm.com/
Les versions de PCB :
http://www.gc8tech.com/
Changer la pile du slot PGM :
http://www.jamma-nation-x.com/jammax/tutorials.html?show=pgmbat
Topic PCB Fluffy:
https://www.arcade-projects.com/threads/pgm-single-game-pcb-interest-check.9373/
https://www.arcade-projects.com/threads/any-pgm-conversion-info-out-there.4812/
https://www.arcade-projects.com/threads/pgm-single-game-pcb-assembly-and-troubleshooting.10015/
https://www.neo-arcadia.com/forum/viewtopic.php?t=80723
Fichier PCB :
https://www.arcade-projects.com/attachments/pgm-pcb-zip.133581/
Casing PGM :
https://www.arcade-projects.com/threads/3d-printed-replacement-cases-for-carts.10897/
Fichier 3D :
https://www.arcade-projects.com/attachments/pgm-new-zip.86830/
https://www.printables.com/model/1401132-igs-pgm-cartridge-shell-200-mm
Labels PGM :
https://www.arcade-projects.com/threads/cave-pgm-conversion-labels-igs-polygame-master.9562/

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet