Un jour, je me suis acheté un genesis avec quelques jeux. J'en ai eu assez de jouer a Sonic et
Micro Machines alors j'ai décidé de construire une cassette reprogrammable. Il est possible
de faire plusieurs choses avec cette cassette:
- Développement:
Faire ses propres programmes ou jeux et avoir la chance de les essayer sur la vrai machine. (plutot
que dans un émulateur). Si cela vous intéresse, je crois que
la page de documentation technique sur le genesis chez
zophar est un bon point de départ.
- Musique:
Écouter de la musique de genesis (.gym) sur la vrai machine.
Il y a un rom nommé "Flavio's GYM Player v1.0" qu'on combine avec un
fichier .GYM pour ensuite l'exécuter dans un émulateur ou un vrai genesis.
- Utilisations de démos et roms dans le domaine publique:
Les démos sont de petites présentations ou jeux fait par une personne
ou un groupe avec de la musique est divers effets spéciaux permettant
de démontrer les capacités de(s) auteur(s).
- Utilisations de roms commerciaux:
On peut aussi télécharger des roms de jeux pour les utiliser avec cette
cassette. Malheureusement, c'est illégal. Certaines personnes prétendent que si on
efface le jeu dans les 24 heures qui suivent c'est légal (Je ne sais pas..). Aussi, la plupart de ces jeux
ne sont plus vendus et peuvent peut-être être considérés comme 'Abandonware'. (Encore là, je ne
sais pas...)
IMPORTANT:Ne me contactez pas pour savoir où trouver des roms, ni pour me demander
de vous en faire parvenir.
Images
Voici quelques images de la première version, qui supporte les jeux
d'au maximum 512K grace à 2 flash AT49F002 de 256K chacunes. Le
jeu en cours d'utilisation dans les images est MicroMachines:
Voici quelques images de la deuxième version, qui supporte les jeux/logiciels
d'au maximum 1024K (1Meg) grace à 2 flash AT49F040 de 512K chacunes.
Cette nouvelle version peut aussi contenir 2 jeux/logiciels de 512K. Dans le deuxième
cas, on peux alterner entre les deux jeux/logiciels avec le bouton reset de la console. Un
cavalier permet de choisir entre le mode 1x1024K ou 2x512K.
Olin s'est basé sur mon projet pour réaliser une version légèrement plus compacte. Les
fichiers gerbers pour la fabriquer sont disponibles sur github:
https://github.com/ole00/genesis_flash_cart_8mbit
Schémas
Voici le schéma pour la deuxième version de la carte. Des puces flash
de 512K de type AT49F040 sont utilisés. La carte peux contenir un jeu/logiciel d'une
taille de 1Meg (1024K) ou deux jeux/logiciels de 512K. Dans le deuxième cas, on peux
alterner entre les deux jeux/logiciels avec le bouton reset de la console:
Voici une version pdf: genesis_8mbit_cart.pdf
Deux flash sont utilisés car le BUS de donnés du Genesis est de 16 bit. Une flash s'occupe
des bits 0 à 7 et l'autre des bits 8 à 15.
L'ancienne version qui utilisait des flash AT49F002 n'avait pas 74ls90 pour alterner entre
deux segment. A18 n'était tout simplement pas connecté car l'addressage des flash
AT49F002 arrête à A17.
Datasheet des flash AT49F002 (256K): doc1017.pdf
Datasheet des flash AT49F040 (512K): doc0998.pdf
Circuits imprimés
J'ai utilisé un logiciel nommé PCB pour créer le circuit.
PCB est disponible à pcb.sourceforge.net et
fonctionne sous les systèmes Unix.
Voici les fichiers sources:
La deuxième version (1024K): cart_8mbit.pcb
La première version (512K): cart_512k.pcb
Voici les fichiers gerber: cart_8mbit_gerbers.zip Attention: Il y a de petites erreurs dans la version 512K du PCB. Prenez note de l'emplacement
des fils sur les photos. La version 1024K sur les photos avait des erreurs
aussi mais elles sont corrigés dans le fichier source.
Programmation
Pour programmer les flash, j'utilise un vieux programmeur universel de
xeltek. Vous pouvez acheter un programmeur universel
sur ebay pour environ 50$ US ou construire votre propre programmeur car les datasheet
expliquent comment programmer les flash.
Mon programmeur accepte les boitiers DIP seulement. Il accepte les plus grosses flash et les autres
types de boitier avec des adaptateurs mais je ne trouvais pas de plus grosses flash de plus que 512K.
J'aurais pu souder d'autres types de flash mais il m'aurait fallu construire un adaptateur.
Outils
smd2bin
Les roms de genesis sont généralement en format .smd (Super magic drive). On ne
peux pas simplement programmer ce fichier dans les flash, il faut tout d'abord le convertir
en binaire.
J'ai codé un simple outil de ligne de commande pour convertir un .smd en .bin qui
fonctionne sous linux. (c'est du C très simple, il est probablement facile de
compiler cela sous n'importe quel système d'exploitation):
L'utilisation est facile. Pour convertir goldnaxe.smd en goldnaxe.bin:
$ ./smd2bin goldnaxe.smd goldenaxe.bin
File has 32 16K blocks
Wrote 524288 Bytes (512 Kb)
J'ai utilisé l'information dans smdform.txt pour
programmer cet outil.
bin2hilo
Les BUS de donnés du genesis est de 16 bits. J'utilise deux flash de 8 bits alors
il faut séparer le fichier .bin qui est une suite de mots de 16 bits en deux fichiers,
un contenant les bits de poids fort et l'autre les bits de poids faible.
J'ai codé un simple outil de ligne de commande pour effectuer cette opération qui
fonctionne sous linux. (c'est du C très simple, il est probablement facile de compiler cela
sous n'importe quel système d'exploitation):
Vous pouvez maintenant programmer vos flash ou eprom avec ces deux nouveaux
fichiers.
Il est possible que le logiciel que vous utilisez avec votre programmeur de flash/eeprom ait une option
permettant de lire seulement les bits de poids fort ou faible lorsque vous chargez un fichier binaire. Dans ce cas,
l'utilisation de bin2hilo n'est pas nécésaire.
Références
Datasheet des flash AT49F002 (256K): doc1017.pdf
Datasheet des flash AT49F040 (512K): doc0998.pdf
Informations sur les cassettes de genesis (signaux et explications): genhw.txt
Informations sur l'en-tête des fichiers smd: smdform.txt
Je ne saurais être tenu responsable pour les dommages
que l'utilisation des informations ou la mise en œuvre des instructions présentées
sur cette page pourrait causer à votre équipement,
à vous-même ou à autrui. Aussi, je ne donne aucune garantie quant
à l'exactitude des informations et à leur fonctionnement.