Jump to content
X-death

[PCB+SOFT] Lecteur de cartouche USB (MD-Dumper)

Recommended Posts

Bonjour,

 

J'ai décidé de publier mon projet de lecteur de cartouche Megadrive en USB.

Ce topic fait suite à celui de la création/développement du projet visible ici

 

post-4965-0-23858600-1485550100_thumb.jpg post-4965-0-50329400-1485603566_thumb.png

 

post-4965-0-41651200-1485601368_thumb.png post-4965-0-75242000-1485603656_thumb.png

 

 

Description du projet :

 

Le but est d'avoir un outil "moderne" et peu couteux qui permet de Lire les cartouches  des jeux de Megadrive.

 

Le lecteur fonctionne avec un processeur ARM et une architecture de communication USB HID qui est supporté de manière générique par tous les systèmes d'exploitation classique ( pas besoin de driver supplémentaire).

 

Pour le logiciel PC j'ai coder un outil simple type "shell" afin d'avoir une solution légère et portable ( pas d'installeur , pas de DLL et aucune dépendance).

 

post-4965-0-14515500-1485550661_thumb.png

 

Il est compatible avec la quasi totalités des jeux commerciaux sauf  :

-Super Street Fighter II et Virua Racing qui utilisent du hardware additionnel

-Certains jeux non licenciées qui utilisent des protections anti-copie ( UNL chinois ou jeux récent post SEGA).

 

Le support des sauvegardes fonctionnent rien ne vous empêche donc de commencer sur la console et de poursuivre sur un émulateur , dans un sens comme dans l'autre.

 

Les cartouches Master/System MARKIII peuvent être lues en utilisant un adaptateur officiel (ou celui de Tototek) jusqu’à une taille de 512 Ko.

 

Description du logiciel:

 

Pour installer MD_Dumper il vous suffit de vous rendre sur mon compte Github et de télécharger la version qui corresponds à votre système d'exploitation et placer l'exécutable dans le répertoire de votre choix.

 

Pour l'utiliser il suffit simplement d'insérer une cartouche dans le lecteur et d'appuyer sur le bouton reset ( celui du STM ou celui du PCB).

Le jingle USB de connexion doit se faire entendre , vous n'avez plus qu'a démarrer l’exécutable.

 

Vous pouvez ignorer les éventuels message de pilote il s'agit du DFU Bootloader qui n'est pas nécessaire au bon fonctionnement du lecteur.

 

Je vous conseille fortement de :

-débrancher la connexion USB pour chaque changement de cartouche.

-Faire un reset entre chaque action ( DUMP ROM - DUMP/WRITE SAVE )

 

Dès le démarrage du logiciel MD_Dumper commence par vérifier la bonne communication avec le STM32.

Si tout est OK la phrase "found HID Megadrive Dumper" doit apparaître.

Il reçoit ensuite les premières informations qui contiennent l'identification de la cartouche ( Megadrive ou Master System) et quelques autres informations utiles ( taille du jeu , taille de la sauvegarde).

 

Faites votre choix en écrivant le chiffre correspondant et valider avec entrée.

Voici une description des options possibles :

 

1. Dump SMD ROM :

 

Il s'agit de la fonction principale du lecteur.

Le contenu de la cartouche va être lu et enregistrer dans un format directement lisible par un émulateur.

Afin de déterminer la taille maximum à lire vous avez deux choix possible:

-Lire avec la taille déclarer dans les informations de la cartouche ( mode AUTO)

-Spécifier une taille de lecture Mode Manuel ( format décimal et en Ko).

Le temps de DUMP est d'environ 30s pour 512 Ko

 

2. Dump SMD Save :

 

Cette fonction permet de faire une copie du contenu de la mémoire de sauvegarde de la cartouche.

un fichier dump.srm sera créer au même endroit que l’exécutable.

 

post-4965-0-08020900-1485603154_thumb.png

 

tout comme la fonction DUMP ROM vous devez choisir entre les modes AUTO et Manuel.

beaucoup de jeux déclare mal la taille de la sauvegarde.

La taille classique pour les jeux à sauvegardes est 8 Ko sauf pour les derniers jeux à sauvegardes de la console qui font 32 Kb ( exemple La légende Thor , Shining Force II , Phantasy Star IV).

 

3. Write SMD Save :

 

Le fichier save.srm sera envoyer dans la sauvegarde de la cartouche.

Vous devez obligatoirement spécifier la taille de la mémoire car certains jeux ( ex: Phantasy Star II) contrôle l'intégrité des données lors du démarrage du jeu.

 

4. Erase SMD Save :

 

Cette fonction permet d'effacer entièrement le contenu d'une sauvegarde.

Pratique avant de faire un Cartmod car certains jeux ne proposent pas cette option.

 

5. Dump SMS ROM :

 

Si vous posséder un adaptateur Master System vers Megadrive vous pourrez également récupérer le contenu de vos jeux.

MD_Dumper doit détecter la cartouche de Master System dès le démarrage.

 

post-4965-0-72171500-1485601059_thumb.png

 

Vous devez obligatoirement spécifier une taille en Ko, il n'ya pas de mode automatique car quasiment tous les jeux de Master System déclare une fausse taille pour accélérer le boot du bios.

Un fichier dump.sms sera écrit à la racine du projet.

 

8/9 : Hex Viewer

 

Les deux dernières options permettent de naviguer dans la ROM en entrant une adresse ( format décimal).

Pratique pour vérifier la bonne écriture d'une sauvegarde ou d'un Cartmod

 

 

Description du circuit :

 

post-4965-0-66001200-1485686189_thumb.jpg

 

La soudure du circuit ne demande pas de compétences particulière ,Les composants sont de type traversant y compris le µC qui dispose de son propre circuit à souder par dessus.

 

Liste des composants :

 

- 1 x STM32 minimum développement Board
- 3 x 74LS273
- 1x Push Button
- 1x Megadrive Slot ( Card Edge Slot Socket Connector 32x2P )

- 1x câble MicroUSB vers USB

 

Voici à titre d'indication des liens d'achats vers chacun de ces composants :

 

STM32 ( Aliexpress )

STM32 (Ebay)

74LS273 ( Ebay ) |

Megadrive Slot ( Ebay)

Câble Micro USB ( Ebay)

Programmateur STM32

 

Je propose à la vente un pack STM32 flasher avec le programme + PCB ( sans composant) + envoi suivi 50g à 8,5€

 

Le mot de la faim :D:

 

Comme évoqué lors du topic de développement , je publie intégralité du projet aussi bien les codes sources que le circuit de fabrication toutefois cela est fait sous licence GPLV3.

Il s'agit d'une licence contaminante, c'est a dire que toute utilisation directe de code source licenciée GPL V3 implique que le reste du code source soit également GPL V3.

MD_Dumper est sous licence GPL V3 car j'utilise Libopencm3 pour le code ARM.

 

Pour résumer rapidement vous avez le droit de :

 

-Modifier le code/circuit pour répondre à vos besoins

-Redistribuer des copies du code/circuits à vos amis

-Partager avec d'autres vos modifications en privée en toute légalité

-Revendre votre propre circuit modifié en fixant votre propre tarif

 

En revanche vous n'avez pas le droit de :

 

-Faire une nouvelle mise à disposition public sans publier les sources avec vos modifications au format GPL3 + le fichier qui contient la copie de la licence.

-Retirer les mentions de propriété intellectuelle

-Faire une modification de la licence sur les fichiers existants

-Me réclamer une garantie ou une maintenance suite à vos modifications

 

Ce projet est la concrétisation de beaucoup d'heures de travail que je ne facture pas , je vous demande donc de respecter mon travail et de suivre ces règles.

Dans le cas contraire je ne partagerai plus ;)

 

N'hésitez pas à poser vos questions/remarques dans ce topic.

 

Bon Dump !

 

Sources du projet µC & soft :

 

https://github.com/X-death25/STM32_Projects/tree/master/Megadrive_HID

 

Remerciments:

 

-Ced2911 pour avoir trouver cette board STM32

-Paul Fertser pour son exemple USB Hid avec un STM32

-Ichigo pour son aide sur le portage et l'optimisation des routines

-SFC pour le magnifique Logo qu'il a fait en un temps records !

-Eikacy / X-calibur pour leurs participation aux tests.

firmware.zip

PCB_kicad.zip

Soft_Windows.zip

Soft_Linux.zip

Share this post


Link to post
Share on other sites

Allez ! C'est finis !

 

Des soirées de larmes, des humeurs massacrants s’entrechoquant dans le silence de nuit maussades et interminables....

 

Chacun à du se surpasser dans son domaine ! Des vapeur de flux et soudures se sont élevés d'entre les mains de fées des valeureux soudeurs / testeurs ! 

 

De pleurs et de rire nous somme fait ! De cette magie intemporelle émane ce projet.

 

Et crotte c'est déjà finis !

 

Allez on se reverra pour un autre projet ! :D

 

Et félicitation ! Vraiment ! 

 

Good Bye !!!!

 

Share this post


Link to post
Share on other sites

Coucou comme promis je te fait un retour. 

Pour ma part je trouve ça très bien facile à monter et le soft bien aussi.

C'est un peu lent pour une rom de 2Mo mais bon ce n'est pas non plus énorme :D

Pour une prochaine version de ton pcb moi je mettrais deux/trois trous histoire de pouvoir le fixer dans un boitier ou support car avec mes gros doigts ce n'est pas facile d'extraire la cartouche.

 

Voilou encore merci et bravo pour ton projet

 

post-5914-0-17062100-1487005768_thumb.jpg

 

 

 

-= Sega Megadrive USB Dumper -=

Detecting USB Device ...
found HID Megadrive Dumper !
Receiving game info ...

Megadrive/Genesis cartridge Detected !
Game Name : DRAGON BALL Z
Release Date : 1994.MAR
Game Size : 2048 Ko
Save Support : No
Region : E

---Menu---

1.Dump SMD ROM
2.Dump SMD Save
3.Write SMD Save
4.Erase SMD Save
5.Dump SMS ROM
8.SMD Hex View
9.SMS Hex View

What do you want ?

1
Dump mode :
1.Auto (Size from header)
2.Manual (Size from user)
1
Sending command Dump ROM
Dumping please wait ...
Dump completed in 78089 ms

 

Share this post


Link to post
Share on other sites

A la première connexion c'est "normal"

Y'a un driver DFU dedans qui est chargée pour le bootloader.

Normalement ce message ne doit apparaitre qu'une fois et ne gène pas la détection de HID MD Dumper.

 

tu doit pouvoir le détecter avec le Soft windows ?

Share this post


Link to post
Share on other sites

Au niveau des leds tu est comment ?

ça clignote constamment ou c'est fixe ?

J'ai normalement tester et flasher tous les STM32 que j'ai envoyer.

C'est pour ça que le sachet bleu qui contient le STM32 + barettes était découper et re-scotcher.

 

Je peu te passer un petit soft qui va scanner les périphériques USB et affiche toutes les infos.

 

Voici comme MD_Dumper doit être énumérer si il est correctement monter :

 

post-4965-0-03950500-1489874118_thumb.png

 

 

usbview.zip

Share this post


Link to post
Share on other sites

J'ai que la led Power qui est vert fixe. L'autre reste éteinte.

Même résultat sur 3 PCs différents.

Je veux bien le soft, on verra bien...


Pas mieux :
post-6149-0-67719100-1489874722_thumb.png

 

 

Edit : 

Je viens de vérifier, et évidemment, j'ai de quoi flasher les Altera, faire du TTL, du RS232, mais rien pour du STM32...

 

Ca irait ça : ? http://www.ebay.fr/itm/ST-Link-V2-STLINK-V2-USB-Programming-Unit-Mini-STM8-STM32-Emulator-Downloader-/401190575149

Share this post


Link to post
Share on other sites

J'ai normalement tester et flasher tous les STM32 que j'ai envoyer.

 

Sauf le mien  :lol: 

(je te taquine ^^)

 

 

@Krazy, oui il faut juste ce petit boitier usb pour flasher du stm32.

 

Attention aux cables usb, testes en plusieurs.

J'ai eu le coup aussi du truc pas détecté car le cable usb devait avoir des microcoupures.

Donc le stm était alimenté mais la connexion usb elle même ne marchait pas correctement.

Share this post


Link to post
Share on other sites

X-death est en train d'ajouter l'erase/write des eeproms/flash dans son MD Dumper.

Du coup en bricolant on a "customisé" un peu un de mes pcb + adaptateur MD de Krazy pour faire un pcb (re)flashable ^^

 

post-5150-0-46191600-1492261946_thumb.jpg post-5150-0-43305500-1492261928_thumb.jpg

C'était un mod de Water Margin avant ;)

Share this post


Link to post
Share on other sites

Pourquoi faire ?

Je vais faire une mise à jour du github et des photos mais l idée est surtout de pouvoir reprogrammer des cartmods déjà souder et ce quelque soit la réf de flash utilisée.

 

Fini la peur de l ecran noir/rouge et ça sera pratique pour les majs de traduction.

Share this post


Link to post
Share on other sites

Petite Maj du code qui bénéficie du travail de Fab sur son SMS Dumper.

 

-Ajout d'un indicatif de progression de dump en %

-Correction de bug USB sur les timings : maintenant ça devrait marcher sur tous les PC

 

Je met à jour l'exe dans le premier topic : les sources sont actualisée dans le github.

 

Le/Les personnes qui avaient des souçis peuvent elles faire un retour ?

Share this post


Link to post
Share on other sites

Pour aider notre X-death j'ai commencé à remettre à plat le code coté soft et coté stm.

 

En l'état j'ai obtenu quasi les meme perfs que sur mon sms dumper,

cad 512ko dumper en ~16sec (cad le max possible en hid avec requete send/receive d'1ms / paquet de 64bytes)

 

post-5150-0-71619300-1496323348_thumb.png

24s pour 768Ko.

 

- J'ai ajouté la verif de checksum après dump (peut aider a detecter un dump foireux par exemple)

- Nom du dump automatique via nom dans le header

Share this post


Link to post
Share on other sites

J'ai quasi fini de reecrire le code STM et soft du MD dumper de X-death.
(dump rom, dump save, erase save, write save, erase flash et write flash fonctionnels, me reste que la partie SMS ^^)

 

Ceux ayant un GQ4x pouvant lire / ecrire des 29LVxxx pourriez vous me faire qq relevés ?

 

il me faudrait au moins erase, lecture et ecriture de :

- 29LV160

- 29LV320

 

Merci !

(c'est pour comparer avec mes specs)

Share this post


Link to post
Share on other sites

juste par ecrit ca me suffira ;)

Merci !

 

 

De mon coté pour une 29W320 (idem à une 29LV320) avec une rom de 4Mo

 

Erase: 15 secondes (erase complet du chip, pas par secteurs)

Program: 3min10 (200 secondes)

Read: 2min25 (145 secondes)

 

Erase:

impossible d'aller plus vite (le xeltek met le meme temps)

je check le pin DQ7 pour savoir si c'est terminé (comme indiqué dans le datasheet)

 

Prog:

quasi idem, je check DQ7 pour la fin d'écriture d'un word (2 octets) et je suis limité par le hid et ses 64 bytes/ms

 

Read: limité par le hid 64 bytes/ms

 

pour aller plus vite :

- changer de protocole USB, mais nécessitera logiquement un driver adapté...

OU trouver un trick (si ca existe) pour passer plusieurs descripteurs/endpoint en HID (le protocol actuellement utilisé)

- ajouter du 12v pour bénéficier du "accelerated program/fast program" des chips (ne sert a rien si l'usb ne va pas plus vite)

Share this post


Link to post
Share on other sites

Voila les résultats en USB2 avec un GQ-4X :

 

29LV160DB:

- lecture : 12.37 Sec

- ecriture (ROM Ristar MD 2Mo) : 269.43 Sec

- erase : 23.26 Sec

 

Par contre j'ai pas de 29LV320, juste quelques 640, tu veux que je teste ?

Share this post


Link to post
Share on other sites

tu peux .

j'ai pas de 640 sous la main, mais quand j'en aurais je pourrai comparer !

Merci à toi ;)

 

PS t'es sur de tes temps lecture /ecriture ?

la différence entre les deux me parait monstrueuse !

 

de mon coté 29LV160DB

 

rom Ristar 2mo

Read : 72 sec

Erase : 11 sec

Write : 38 sec

 

J'arrive pas a baisser le read...

J'ai des desynchro entre le stm et l'ordi et je recup du coup de mauvaises données... sinon ce serait "un peu plus rapide" que le write.

 

Pour l'ecriture y'a aucun problem/mauvais envoi, c'est le STM qui fait quasi tout le boulot... l'ordi ne fait qu'envoyer les datas aussi vite qu'il peut (et le stm va plus vite que la connexion usb)

Share this post


Link to post
Share on other sites

×
×
  • Create New...