Cassette Genesis reprogrammable

L'idée

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.

Le voici:
Flavio's GYM Player V1.0 (PD).zip

Téléchargez les fichiers de musique depuis l' archive de zophar

- 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).

Il y a quelques démos de genesis sur ces pages:
http://www.gameasylum.com/demoscene.html
http://www.zophar.net/roms/genesis.html
Et ici:
Flavio's Color Bar Screen (PD).zip
Flavio's DMA Test (PD).zip
Flavio's GYM Player V1.0 (PD).zip
Flavio's Raster Effects Test (PD).zip

- 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:
schematic thumnail
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):

smd2bin.tar.gz Code source et Makefile.
smd2bin.c Code source.
smd2bin.exe Executable windows 32 bit.

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):

bin2hilo.tar.gz Code source et Makefile.
bin2hilo.c Code source.
bin2hilo.exe Exécutable windows 32 bit.
$ ./bin2hilo movie_trailer_demo.bin movie_trailer_demo_h.bin movie_trailer_demo_l.bin
wrote 2 245760 Bytes (240 Kb) files
		
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

Pour le développement de logiciels, il y a de l'information sur le genesis ici:
http://cgfm2.emuviews.com/gen.php
http://www.zophar.net/tech/genesis.html




Avertissement

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.