Chapitre 2 : Installation du devKitSMS et un petit mot sur le processeur !Installation du SDK, du compilateur et d'autre outilPour programmer la Master System, nous avons besoin de plusieurs programmes sur votre ordinateur et le plus important, un compilateur* qui va permettre de transformer votre code en fichier binaire lisible par la master System. Vous avez besoin aussi d'un éditeur de texte. (Note Pad ++ par exemple) , d'un émulateur master system et un kit de développement. Pour le kit de développement , le devKitSMS est sympathique, il permet de coder en C avec des fonctions utiles pour la master system sans trop mettre la main dans l'assembleur*. Pour le compilateur, il utilise "SDCC", et l'emulateur, vous prenez celui que vous voulez. (Kega Fusion est pas mal pour tester, Meka est pas mal, permet de voir les palettes de couleur, ce qu'il y a dans la mémoire vidéo et bien d'autre encore. )
Notons que le devKitSMS permet de créer des jeux pour Master System/Sega Mark III, Game Gear et Sega Mark I (La SG100).
En premier lieu, télécharger le DevKit à cette adresse :
https://github.com/sverx/devkitSMS En haut à droit, il y a Clone or Dowload, cliquez dessus et utilisé Download Zip.
Déziper l'archive.
Télécharger et installer SDCC qui se trouve à cette adresse dans snapshop.
http://sdcc.sourceforge.net/snap.phpTélécharger la version adéquate à votre OS. Sur Windows, je vous conseille d'installer ça dans le disque dure / partition ou est installé votre OS. (Souvent le C mais ça peut changer)
Maintenant copier/coller ihx2sms.exe dans le dossier bin de SDCC (Si vous n'êtes pas sur Windows, il faut re-compiler le logiciel pour votre os)
Faite de même avec assets2banks.exe et older2c.exe. (Dans le fichier bin)
Le fichier SMSlib.lig lui se place dans le dossier lib/z80.
Voici une organisation parmi tant d'autre de votre dossier du projet.
-Faite un nouveau dossier avec le nom de votre projet, dedans :
--Faite un Dossier out qui va recevoir le fichier binaire compilé.
--Faite un Dossier rel Placez le fichier crt0-sms.rel dedans
--Faite un Dossier source, vous aller placer vos fichier en .c ici comme main.c
----Dans le dossier source, faite un dossier header, placez le fichier SMSlib.h
--Créer le fichier .bat de compilation dans la racine du dossier du projet. (Nous verrons plus tard ça)
--Placer le fichier ijx2sms.exe
--Placer le fichier peep-rules
--Placer le fichier SMSlib.lib
Voila un bon début. Vous pouvez télécharger un exemple ici :
Télécharger le ZipNote : si il manque un fichier, le compilateur va vous le dire de toute façon.
Avec un peu plus de connaissance, vous allez pouvoir organiser tout ça comme bon vous semble.
Pour l'écriture de votre jeu, vous pouvez utiliser un simple fichier texte renommé en . C ou .H suivant ce que vous aller faire. En mode simple, je vous conseille quand même un éditeur de text un peu plus évolué.
Notepad++ est pas mal à ce petit jeu.
Lien Mais il en existe d'aute bien sur. (Code Block,Eclipse,et j'en passe)
Pour l'émulateur, vous pouvez faire un tour sur planetemu.
LienIl y a d'autre outil à télécharger, mais nous verrons tout ça en temps utile.
Le Processeur c'est quoi vraiment ? :* Compilateur, Assembleur ?
Pour le moment si vous suivez le mode d'emploi, tout devrait bien se passer. Cette outil de développement pour la master system pour s'installe facilement. Même pour une personne qui si connaît pas trop. Mais deux mots sont la, Compilateur et Assembleur… J'ai du perdre du monde la. C'est le point culture du tuto !
Chaque type de machine informatique est construite de la même manière depuis la nuit des temps enfin presque. Que cela soit votre console préfère, votre smartphone de dernière génération, votre PC, la vielle console nes, la Master System, l'amstrad CPC pour rester dans le rétro ,elles Continnent les mêmes organes pour fonctionner ! (Bon maintenant c'est beaucoup plus puissant mais on reste toujours sur la même base)
*De la mémoire vive dit RAM qui permet de mémoriser les informations. (8 ko exploitable sur la Master System, 2Ko sur le nes, 128ko sur l'amstrad CPC 6128, 16Go pour mon PC Fixe à l'heure actuel. 1,5Go pour mon téléphone Samsung galaxy S5 mini. 3Go pour l'iphone 10..
*Un module graphique avec des fois de la mémoire dédiés, des fois non. Le CPC c'est le Gate Array qui s'occupe de balancer les images à l'écran mais n'a pas de mémoire dédiés. Elle est partagé avec la Ram centrale. Sur les PC actuel se sont les cartes Graphiques comme les G-force, Saphyre… avec des résolutions de ouf geudin par apport au passé (Carte VGA par exemple)La Master System c'est la carte TMS9918 qui permet d'afficher et gérer les image à l'écran les deux palettes de 16 couleurs, et possède une mémoire interne de 16ko sans bouffer sur la ram de la console !
*Le 3em composant indispensable se sont les entrées pour communiquer avec le système informatique. Clavier, manette de jeu, stylo optique, écran tactile…
*Le 4em élément sont les sorties ! Cela peut être une TV, une imprimante, un petit écran lcd sur les consoles voir rien du tout juste brancher sur d'autre pièce eletronique/mecanique pour faire des actions reçu en entrée.
*Et enfin le plus important, il faut un maître d'oeuvre, un chef d'orchestre. Et ça c'est le rôle du processeur ! Les I7/I5/Duale core, pantium4 pour les PC en passant aussi par les game des AMD, ceci dit c'est la même famille de processeur. (X86), nous avons les processeurs de type ARM, les vieux 68000 de motorola qui équipe les Amiga, Megadrive, premier Mac, Néo Géo, les Z80 de la Master System, Le fameux 6502 de la NES Atari 2600,du T800 !
Le processeur et le chef d'orchestre du system informatique, c'est lui qui donne les ordres comme par exemple : bon la dans ma petite mémoire interne je vais placer la valeur 50, et maintenant le contenue de cette valeur je vais la placer dans cette case mémoire, puis je vais additionner le contenu de cette case mémoire par la valeur contenu dans une autre case mémoire interne au processeur. Maintenant toi carte graphique, tu peux lire le contenu de cette casse mémoire pour la placer chez toi dans le case mémoire numéro X ou X la valeur contenu dans ma case mémoire pointé par le contenu de cette case mémoire interne à mon processeur. (ouf dure cette phrase xd).
Bref voila le rôle du processeur ! Jouer avec les nombres ! Et faire des actions que nous appelons des instructions ! Et vous savez quoi ? Un processeur sait lire que 10 valeurs ! Soit 0, soit 1.
(Heu ça fait que deux ça ?) .
Oui, pardon seulement deux valeurs. Votre processeur ne reconnais que des 0 et 1. C'est le langage "Binaire". Avec ça on fait plein de truc. Quand on assemble plusieurs des 0 et 1 (Un bit), cela permet d'avoir de multiple possibilité. La norme c'est de placer 8 bits à la suite pour former entre 0 et 255 possibilité(s). Ce qui fait 1 Octet.
Maintenant concrètement que fait votre processeur avec ça ? Ba il va lire séquentiellement (la liste octet du fichier. Les décoder en interne et faire une action qui se rapporte à l'octet ou plusieurs car il existe des instructions qui codés sur 1-2-3 voir plus d'octets).
Exemple concret :
Octet 1 : 00111110
Octet 2: 00001111
C'est un vrais code qui fonctionne ! Décryptage.
Le proco arrive, lit l'octet 1 qui est 00111110 en binaire. (62 en décimale)
Sans entrer dans les détaille, il sait qu'il va devoir mémoriser dans sa mémoire interne la valeur du prochain octet. Il va lire l'octet 2 qui est de 00001111 (15) et va le mémoriser dans sa mémoire interne. (Enfin une mémoire interne car il en possèe plusieurs.)
Tous programme informatique, votre os, votre jeu préféré, vos vidéos préférés, tous, tous, tous fonctionne comme ça. Et c'est le seul langage que votre ordinateur connaît. C'est ce que nous appelons le langage machine !
Sauf que écrire des programmes en 0 et en 1 c'est pas facile, c'est pas lisible du tout pour un être humain. Alors les programmeurs se sont dit, bon on va simplifier l'écriture de nos programme pour notre machine et on va associer des termes qui est facile à retenir pour les instructions de notre machine.
Donc 00111110, 00001111 devient LD A,%000011110 (ou) LD A,$F,($F =%0001111=15, c'est une valeur Hexadecimale).
Le nouveau logiciel va tous simplement remplacer LD A par 00111110, 15/$F par sa valeur binaire et continue comme ça. C'est une "compilation". Ou un assemblage. (Je pense faire un abus de langage mais bon) et voila le langage Assembleur est née !
Sauf que ! Notre LD A n'est valable que sur les processeur de la famille des Zilog 80. Sur un Windows PC, cela veut dire très certainement autre chose pour le processeur… C'est pour cela qu'un logiciel PC n'est pas compatible en lui même sur un téléphone mobile car les instructions ne sont pas les mêmes. Un programme Master Systeme ne peux pas fonctionne sur une NES. Ceci dit un programme NES peut être lu avec les mêmes jeu d'instruction sur une Atari 2600 ceci dit l'interprétation des donnés ne sera pas le même ! Idem avec le CPC d'amstrad et la master System. C'est le même processeur donc le même "langage" mais l'interprétation n'est pas la même.
Le CPC qui à une mémoire partagé avec la ram, aura le même code d'instruction, pour placer la valeur 255 à la case mémoire numéros 49152 et affichera un petit trait à l'écran, alors que sur Master System, la mémoire vidéo n'est pas branché sur cette case mémoire et ça sera une simple "variable" dans la console…
Maintenant passons un peu à nos moutons, nous avons installé un compilateur SDCC. C'est quoi ? C'est tous simplement une passerelle qui va permettre de créer un fichier binaire plus ou moins lisible avec les processeur de la famille des Z80. Il en existe d'autre mais notre ami DevKitSMS fonctionne avec celui la…
Qu'allons nous faire concrètement. Nous allons écrire notre programme dans un langage de programmation autre que celui de l'assembleur du Z80. Nous allons le faire en C.
Le compilateur va lire les fichier que nous avons écrire, et vas en gros les transformer en "langage machine" propre au Z80 puis assembler tous ça et nous créer un nouveau fichier binaire lisible sur une master system pour notre cas. Cool non ?
Un compilateur c'est ça, transformer notre code source dans un fichier lisible par la machine ciblé.
Dans le prochain chapitre nous allons compiler notre premier programme test complet pour voir si nous avons bien installé notre outil de développement.
(Vous pouvez quand même cliquez sur le fichier .bat du dossier télécharger, mais le fichier sms ne contient pratiquement rien) L'heure de vérité approche.