Cet été, je me suis lancé dans un petit projet simple et amusant... fabriquer des cartouches NeoGeo les moins chères possibles pour donner aux développeurs indépendants un moyen de diffuser leurs oeuvres.
Le déclencheur, c'est notre ami DomKid qui sort un jeu NeoGeo sympa tous les 2 mois, et qui le distribue sous forme de ROMs.
Les jeux indépendants sur NeoGeo, c'est 300€ environ. Alors certes il y a de la marge, mais le prix de revient de la cartouche est ENORME.
Malgré son vieil âge, la NeoGeo en avait un peu dans le ventre. Les cartouches se font violenter et elles sortent des débits de données parallèles de dingue.
Chaque cartouche embarque 2 PCB avec minimum 5 mémoires mortes parallèles, et on tape dans les centaines de mégabits. Le tout coordonné par des ASICS pour la logique de fond de panier.
J'ai commencé par réfléchir à un système du pauvre relatif, avec un microcontrôleur pas cher que je connais, et qui serait capable, lors de la mise sous tension, d'aller dumper de la NOR flash série (pas chère, lecture par blocks) dans de la PSRAM série (un peu plus chère, beaucoup plus rapide, lecture aléatoire).
Le RP2350 (puisqu'on parle de lui) fait tout ça très bien et sait gérer la logique de fond de panier avec ses PIO de zinzin.
Il peut intercepter les adresses sur les bus des cartouches (il y a 2 bus d'adresses par cartouche, potentiellement multiplexés avec un 3ème), aller lire les données dans la PSRAM, et les renvoyer sur les bus de données.
Et là, grosse déception... Aucun moyen d'accéder suffisamment rapidement à la PSRAM. Même avec des lignes super bien équilibrées et du QSPI qui déchire.. le temps de première mise à dispo du premier word sur la PSRAM dépasse le délai max de réponse des cartouches sur toutes les références de PSRAM que j'ai trouvées!
J'en suis donc arrivé au plan B, comme tout le monde. C'est à la fois plus simple et plus compliqué:
- des puces de mémoire NOR flash parallèles
- 2 CPLD
Ca, c'est la partie simple. Sauf qu'il faut programmer ces cartouches à un moment. Et si on veut faire des petites séries de cartouches, ça veut dire qu'il ne faut pas avoir à désouder des mémoires flash pour les programmer. Il faut pouvoir les faire assembler chez le fabriquant, et les flasher chez l'éditeur.
Les PCB arrivent donc avec en plus un connecteur latéral permettant de les piloter en mode écriture, et... un carte mère sur laquelle il faut venir les enfiler pour les programmer.
J'ai fait quelques simulations chez notre partenaires pour produire de telles cartes, et pour des petits volumes, on est quand même dans les 100€ par cartouche (2 PCB), hors boîtier, boîte, notice, ... J'ai tiré sur tous les prix possibles dans la mesure du raisonnable, avec des composants de qualité convenable et du routage sur 2 couches au lieu de 4 (c'est sportif).
Info qui a son importance : je travaille actuellement sur la version MVS des cartouches. La version AES est un peu (pas mal) différente, et vu que je n'ai pas d'AES, je ne peux pas m'amuser avec.
Si l'AES+ finit par sortir, je pourrai réfléchir à une adaptation, mais là encore, je vais en baver pour faire les tests, parce qu'il y a peu de chances que je puisse brancher un BricoNeo sur une AES+.
Tout ça pour en venir à une question pour vous (ou plusieurs, la discussion est ouverte):
- Est-ce que ça vous semble cher pour une cartouche de jeu homebrew
- Est-ce que si pour 2x le prix, vous avez une carte "mère" qui permet de les programmer pour mettre un autre jeu, ça vous semble toujours aussi cher?
Voilà l'état des travaux sur ces 2 PCB:




