Jump to content
X-death

[Tuto] Prenez le contrôle de votre Megadrive avec SGDK

Recommended Posts

Bonjour,

 

Je souhaite proposer à travers ce tuto un moyen simple et facile d'installer une suite de développement ( ou toolchain) pour la Megadrive.

Les outils que je propose sont tous gratuits et libres et la toolchain est très légère.

La console ciblée étant la Megadrive il n'y aura pas besoin d'installer un IDE lourd ni même d'autre langage en surcouche ( Python , Perl).

 

Je souhaite prendre le temps de partager ma méthode qui sera compatible avec les futures démos qui vont arriver.

Cela donnera peut être envie à certains d'entre vous d'essayer le Dev MD dans de bonnes conditions.

 

Nous sommes en 2017 et vous allez pouvoir coder facilement et rapidement sur Megadrive :)

 

I) Logiciels requis:

 

-La dernière version de SGDK qui est la suite de développement écrite par Stef ( le créateur de GENS ).

 

-Notepad ++ qui servira pour l'écriture du code et les appels des scripts. ( si vous l'avez déjà mettez le à jour).

 

-Mon pack d'outil RTU ( Ready To USE) qui contient deux émulateurs + mes scripts et un exemple.

 

C'est tout, ni plus ni moins et ça sera amplement suffisant ;)

 

II) Installation de SGDK:

 

1) Commencez par créer un répertoire ProgMD dans C:/

2) Décompressez le contenu de l'archive de SGDK + le pack RTU dans le répertoire ProgMD de manière à avoir l’arborescence suivante :

 

post-4965-0-84830600-1492854986_thumb.png

 

3)Ouvrez les paramètres de variables d'environnement de Windows : ( propriété système > variable d'environnement)

ajouter C:\ProgMD\sgdk\bin; à la variable système Path

 

post-4965-0-89724100-1492853682_thumb.png

 

Fermer toutes les fenêtres actives et retourner dans le dossier ProgMD.

le plus dur est fait le reste sera automatisé ;)

 

4) Ouvrez le dossier script et exécuter le script setup_SGDK en administrateur.

Celui ci va créer pour vous les deux dernières variables utilisateurs nécessaires au bon fonctionnement de SGDK.

Si vous retournez dans les variables d'environnement vous devriez maintenant avoir ceci :

 

post-4965-0-53686400-1492853980_thumb.png

 

A ce stade il est nécessaire de redémarrer l'ordinateur pour finaliser la bonne prise en compte des variables d'environnement.

 

5) Exécuter le script build_SGDK qui va compiler toutes les librairies du kit une fois celui-ci terminé SGDK est maintenant prêt à être utilisé.

Vous pouvez vérifier la bonne compilation des libs en regardant la date du fichier  libmd.a dans le répertoire sgdk/lib

 

6)Vous pouvez maintenant tester SGDK en compilant ma démo 16 colors qui se trouve dans le dossier exemple.

Pour cela exécuter Genbuild.bat depuis le dossier 16_Colors et le fichier résultat rom.bin doit apparaitre dans 16_Colors/out/

 

post-4965-0-92752400-1492854518_thumb.png

 

L'image provient de DeluxePaint dont la première version est sortie en novembre 1985 sur Amiga

 

III) Optimisation:

 

les scripts quand il sont placés à la racine d'un projet permettent de faire les actions suivantes :

 

Genbuild : Compiler le projet courant et créer rom.bin dans le dossier /out

testkmods : Copie / Colle  la rom du projet dans le dossier du Kmods et l'execute

testRegen : Copie / Colle  la rom du projet dans le dossier de Regen et l’exécute

 

GensKmods et Regen sont des émulateurs dont le développement n'est plus actif.

Kmods possède plein d'outils qui permettent notamment de visualiser le contenu de la RAM vidéo , des infos sur les sprites etc..

Regen possède un excellent Débugger et une émulation plus précise de la Megadrive.

Ces deux émulateurs seront largements suffisant et ont un bon compromis résultats / ressources nécessaires.

 

Il peut être vite contraignant de devoir exécuter les scripts manuellement à chaque modification du code , la partie suivante va vous montrer comment les incruster directement à Notepad++ :)

 

1) Ouvrez le fichier main.c avec notepad ++ , le langage est directement détecté et Notepad réalise lui même une coloration syntaxique.

2) Allez dans l'onglet complément > Plugin Manager > Show Plugin manager.

Installer le plugin Npp_Exec et redémarrer Notepad ++.

Vous devriez maintenant avoir le résultat suivant :

 

post-4965-0-34656300-1492855906_thumb.png

 

3) Nous pouvons maintenant appeler des scripts batch depuis notepad ++ pour cela ouvrez l'option execute de Npp_Exec ( ou appuyez sur F6).

Il est nécessaire de spécifier les options d'appels pour les scripts ( cette action n'est a faire qu'une seule fois pour chaque nouveau script).

 

placez vous sur temporary script et copier coller les lignes suivantes :

 

 

NPP_CONSOLE OFF                         // ne pas afficher la console NppExec
NPP_SAVE                                           // sauvegarder le fichier courant
CD $(CURRENT_DIRECTORY)     // se placer dans le dossier du fichier courant
NPP_RUN genbuild.bat

 

Cliquez sur save et appeller le script genbuild par exemple.

Faites la même opération pour testkmods et testregen :

 

 

NPP_CONSOLE OFF                      // ne pas afficher la console NppExec
NPP_SAVE                                     // sauvegarder le fichier courant
CD $(CURRENT_DIRECTORY)     // se placer dans le dossier du fichier courant
NPP_RUN testkmods.bat

 

 

NPP_CONSOLE OFF                      // ne pas afficher la console NppExec
NPP_SAVE                                     // sauvegarder le fichier courant
CD $(CURRENT_DIRECTORY)     // se placer dans le dossier du fichier courant
NPP_RUN testregen.bat

 

4) Sauvegardez et retournez  dans l'onglet advanced option  et ajouter chacun des scripts dans le menu avec le nom de votre choix.

 

post-4965-0-47558600-1492856430_thumb.png

 

5) Redémarrer Notepad ++ les scripts peuvent maintenant être appelés directement depuis le menu Macro

 

post-4965-0-39765900-1492856857_thumb.png

 

6) Vous pouvez également affecter un raccourci clavier à un script depuis le menu Macro > modifier macro > Plugin Command 

 

post-4965-0-67254700-1492856990_thumb.png

 

A ce stade tout doit fonctionner, vous devez pouvoir compiler vos démos et les tester d'un simple raccourci.

 

Pour résumer pour chaque nouveau projet vous aurez a copier coller les scripts genbuild et test a la racine du projet.

Après il vous suffit d'éditer le fichier avec notepad ++ et vous pourrez appeler les macros :)

 

je suis preneur de suggestion d'amélioration ( plus tard il y aura un script de Flash avec MD_Dumper ;) )

 

Bon coding !

PackRTU.zip

  • Upvote 1

Share this post


Link to post
Share on other sites

Intéressant ! On peut développer en quels langages ? Tu parles du python, perl et je vois une prise d'écran avec du C.

Si je me rappelle bien à l'époque, tous les dév utilisaient l'assembleur car il n'étaient pas possible d'avoir des jeux avec des perf raisonnables même en C.

 

J'ai une MD FR et un autre JP avec un linker pour pouvoir tester sur les vrais machines. Je regarderai peut être ce qu'on peut faire avec tout ça.

Share this post


Link to post
Share on other sites

C'est du C le language et c'est suffisant pour des petites démos.

Pour tester les démos sur la vrai console depuis un script ça sera possible avec MD Dumper et les adaptateurs KrazyP

Share this post


Link to post
Share on other sites

Désolé de ressortir ce topic, mais déjà, je te remercie X-Death pour le taf, c'est énorme, je vais avancer mon projet et peut être qu'un jour je pourrai le poster dans la section prog MD, qui sait.

J'aimerais ajouter un truc qui n'apparait pas dans ton tuto, il faut absolument avoir java installé sur la machine, j'ai un vieux PC pour les devs de ce type et pas de java dessus, du coup j'avais un pépin au niveau de la compil, après installation, tout roule.

Voilà, merci encore.

  • Like 1

Share this post


Link to post
Share on other sites

Bonsoir,

Merci beaucoup pour ton retour , je suis content qu'il ai pu te servir.

Il faut être honnête aujourd'hui Notepad ++ est quand même un peu dépasser ( même si je l'utilise encore ).

Je vais regarder pour tester ça prochainement ( car je vais avoir du dev Megadrive à faire :) ) , faire fonctionner SGDK avec VScode qui est beaucoup plus moderne

https://github.com/pleft/SEGA_VSCode_Template

Des raccourcis doivent pouvoir être rajouter à la main dans le task.json

 

Share this post


Link to post
Share on other sites
il y a 22 minutes, X-death a dit :

Il faut être honnête aujourd'hui Notepad ++ est quand même un peu dépasser ( même si je l'utilise encore ).

Ouep, mais effectivement je l'utilise toujours quotidiennement en plus d'eclipse sur mon poste pro, et pour ma petite bécanne prévue pour le dev MD, entre autre, c'est très léger ;) et ça c'est plutôt pas mal.

Share this post


Link to post
Share on other sites
Il y a 1 heure, X-death a dit :

Hésite pas à nous présenter ton projet sur Megadrive ;)

Ouep, pour l'instant le projet c'est d'essayer de faire le hello world, ensuite je vais étudier certaines sources pour ingérer les mécaniques, et je voir pour faire un remake du logo sega de sonic, mais avec une petite modification, j'ai ma petite idée, ensuite on verra, mais je posterai si j'ai des trucs 'intéressants'.

Share this post


Link to post
Share on other sites

Salut,

J'ai fait un test avec le hello world mais un peu modifié, je vais terminer ça ce soir et je le posterai en exemple, parce que la librairie a changée et du coup le script de base n'est plus valide, et comme j'ai ajouté un petit effet avec du commentaire, ça pourra peut être aider.

Mais avant tout, j'ai une question, si je souhaite porter ma rom sur une eprom pour l'utiliser directement sur la MD, je l'exporte tel quel et ça fonctionne ? la genisis.h et toutes ses dépendances sont une surcouche à l'assembleur utilisé directement par la machine ?

Désolé si la question parait triviale, mais c'est la première fois que je fais du dev sur console dans un langage qui n'est pas le langage natif à priori, et je dois recevoir d'ici demain j'espère une PCB de test pour MD, du coup je pourrai tester sur une eprom mais je me pose la question.

Je veux me familiariser avec le fonctionnement de la machine avec un langage dont la sémantique me parle avant de tenter un truc en ASM, ça fait trop longtemps que je n'en ai pas fait et surtout j'avais juste effleuré le truc à l'époque.

Merci

Share this post


Link to post
Share on other sites
Il y a 11 heures, killerklown a dit :

Salut,

[...]

Mais avant tout, j'ai une question, si je souhaite porter ma rom sur une eprom pour l'utiliser directement sur la MD, je l'exporte tel quel et ça fonctionne ? la genisis.h et toutes ses dépendances sont une surcouche à l'assembleur utilisé directement par la machine ?

 

Bonsoir , lors de la compilation ton code C est transformé/compilé en langage directement compréhensible par la machine , dans le cas de la Megadrive l' assembleur 68000 du nom de son processeur principal le Motorola 68000.

il suffit donc de flasher ta rom binaire dans une cartouche Flash ou dans une EPROM.

Dans le cas d'une EPROM bien pensé à faire un Swap-Byte ( les cartouches flash ainsi que MD-Dumper le font automatiquement)

pour ta question sur SGDK  déclarer genesis.h permet d'inclure en une ligne l'ensemble des fonctions du kit de Stef.

 

Il y a 11 heures, killerklown a dit :

Désolé si la question parait triviale, mais c'est la première fois que je fais du dev sur console dans un langage qui n'est pas le langage natif à priori, et je dois recevoir d'ici demain j'espère une PCB de test pour MD, du coup je pourrai tester sur une eprom mais je me pose la question.

Pas de souçis , cette section du forum est la pour ça.

Honnêtement je vais profiter de ta remarque sur la cartouche de test EPROM pour faire un peu de placement de produit :1244481969_EmojiSmiley-56:

J'ai conçu un lecteur de cartouche Megadrive qui fonctionne en USB , celui-ci est fait pour dumper des jeux et sauvegardes mais permet aussi de réecrire certaines mémoires Flash.

Les EPROMS n'en font pas partie car leurs système de fonctionnement fait qu'il faut une tension élever pour les programmer ainsi qu'une exposition assez longue aux UV pour les effacer.

J'ai conçu une cartouche simple à mémoire flash d'une capacité de 1Mo qui est parfaite pour tester du code ( voir même certain jeux ) , avec le lecteur on peut la reprogrammer en quelques secondes sans avoir à ouvrir la cartouche.

Voici une photo du kit et de la cartouche.

1717050307_MDDumper.thumb.JPEG.ad2347be0a15b35387bf9233f4bbc164.JPEG1556907197889.thumb.JPEG.153925ee65a24f92e80eb8684ffc8dd4.JPEG

 

Je ne sais pas combien tu as acheter ton pcb mais je propose des kits ( lecteur / dumper + cartouche ) prêt à l'emploi pour 25€.

Share this post


Link to post
Share on other sites

J'avais regardé le dumper, mais étant habitué au cartmodding, j'en fait en MD, SNES et surtout MVS, j'ai pris la solution la plus simple, j'ai payé 18€ environ chez relecktronic.

Pour le include genesis.h, la question était plutôt, est ce nécessaire de la garder dans la rom finale que je vais bruler sur l'eprom ?

Pour le reste, je n'ai jamais étalé mes compétence ici car ce n'est pas l'objet, mais je fais de la prog objet depuis pas mal d'années sur un paquet de langages, bizarrement le c n'en faisait pas trop partie jusqu'ici, mais la sémantique me parle donc ça roule, c'est plus l'application au monde de la MD qui me manque.

Merci d'avoir pris le temps de me répondre en tout cas, et beau boulot pour ton MP Dumper, je ne dis pas que je ne te le prendrai pas à un moment ou un autre.

Share this post


Link to post
Share on other sites

×
×
  • Create New...