Page 1 sur 3

[TUTO] Initiation pour faire faire un Homebrew

Message non luPosté: 16 Mai 2009, 12:52
par DemonYunther_1
Bonjour à tous.
Je me lance à faire ce tutoriel pour donner envie et comprendre la programmation sur wii, Tout d'abord j'ai fait un petit début pour débutant ceux qui partent à zero et vois si ca leur interesse si oui je propose d'apprendre sur un site , qui est trés bien fait.

Dont je me suis partiellement inspiré dans la schématisation de celui-ci


Voici une petite introduction:

Sommaire
[iurl=#I]I - Introduction[/iurl]
[iurl=#II]II - Les Outils de développement[/iurl]
[iurl=#III]III - Votre premier programme[/iurl]
[iurl=#IV]IV - L'apprentissage Pur[/iurl]
[iurl=#V]V - Etudes d'homebrews[/iurl]

[anchor=I]I - Introduction[/anchor]

Tout d'abord qu'est ce que la programmation?

Déjà il faut savoir ce que c'est un programme , par exemple sur votre ordinateur "Paint" est un programme.
Ainsi que sur Wii tout les homebrews sont des programmes.
En fait la programmation consiste à donner des instructions à la machine.
Tels que "affiche cela:", "calcul ça:" ect.... mais pas encore le café  ;D
Tout cela dans un langage, nous c'est le C que nous allons apprendre , Il existe bien d'autre langages qui se rapprochent + ou - du langage machine qui est du binaire [01].
Un langage simple est éloigné du langage machine est appelé langage de haut niveau alors que le contraire est un langage de bas niveau.
Donc un langage de haut niveau est simple pour l'utilisateur alors que le bas niveau est plus complexe.
On va dire que le C est un langage de moyen niveau , mais qui est très poussé car il par exemple un accès direct à la RAM et de modifier.
Lorsque que vous programmer en C vous aurez besoin d'un IDE (environnement de développement) qui inclus le compilateur et le débugger.
Le but du compilateur est de convertir le langage C en langage machine: est ainsi donner un exécutable.
Sur Wii les exécutable sont des fichier .elf ou .dol et sur ordinateur c'est des fichiers .exe , c'est fichiers exécutable sont en langage binaire un langage compréhensible par votre machine qui ne connait malheureusement pas le français.
Une dernière chose vous avez entendu parler de C et C++ quel est la différence et pourquoi on apprend le C?
En fait le C++ est une amélioration du C qui inclus la gestion d'objets donc le mieux et de commencer par le C.
Enfin je vais rester simple pour ne pas vous embrouiller et de ne pas vous donnez la migraine.

Tout au long du tutoriel je vous parlerez de machine pour être général car vous apprendrez à la fois le C et sur Wii.

Quel connaissances pour programmer?

Il faudra avoir un minimum de connaissances en mathématiques : tel que l'addition , la soustraction , la multiplication et la division
Cela dit c'est plutôt simple et il n'y a pas besoin de 10 ans d'études.
Mais on va apprendre petit à petit vous ne serez pas capable de faire un jeux vidéo en 3D sur Wii dès le lendemain.
Toutefois si vous avez la motivation,du courage et de la logique se ne seras sans aucun soucis car il faut savoir que en général un programme ne marche jamais du premier coup.
Donc tout le monde peut apprendre!

[anchor=II]II - Les Outils de développement[/anchor]

Bon comme vous l'avez compris pour crée les Homebrew il nous faudra un IDE, et le régler pour compiler notre code en .dol pour la wii et non en .exe qui est pour windows.
Pour commencer je pense que DevkitPro est bien adapté.
Je vous conseille donc d'aller télécharger le dernier version via ce lien:
[img width=164 height=37]http://download.wiigen.fr/Images/Downloadwiigen.png[/img]
A l'heure ou je vous écris la dernière version est la "devkitProUpdater-1.5.0.exe" 
Je vais vous décrire rapidement comment il fonctionne.
Déjà le projet est l’ensemble des fichiers source en C ou C++ de votre programme qui diffère selon l'IDE choisis.
Vous lancez l'installer récemment télécharger et vous aurez ceci:
[img width=510 height=397]http://demonyunther.free.fr/img/tuto/devkiti.JPG[/img]
En appuyant sur - "Next" séléctionnez Download and install/ install from downloaded files"
                       - "Keep Downloaded files"
Pour ne pas avoir de problème garder en type d'installation Full:
[img width=510 height=397]http://demonyunther.free.fr/img/tuto/devkitf.JPG[/img]
Enfin "Next" est vous choisissez le répertoire d'installation: Par exemple "C:\devkitPro" Ainsi lorsque que vous explorerez votre Disque C avec le poste de travail vous aurez le dossier devKitPro à la racine.
Et vous pouvez finir en installant:
[img width=510 height=397]http://demonyunther.free.fr/img/tuto/devkitd.JPG[/img]
Maintenant, nous allons faire un dossier qui servira de base pour vos projets.
      -Créez un dossier Projets ou vous voulez dans votre disque.
      -Copiez le contenu du répertoire “C:\devkitPro\examples\wii\template” dans le dossier Projets.
      -Créez les sous dossiers suivant dans le dossier “template” si ils n’existent pas :
          -source
          -include
          -ressource
          -data
       -Ouvrez le fichier “makefile” avec un éditeur de texte (avec Programmers Notepad de devKitPro par exemple) et modifiez les lignes suivantes :

  Changer:
   "INCLUDES :="
par :
   "INCLUDES := source include"
   
            -Renommez le fichier “template.c” du répertoire source en “main.c”
            -Double-cliquez sur le fichier “template.pnproj”, l’éditeur va s’ouvrir :
            -Cliquez sur le répertoire “source” à gauche avec le bouton droit et sélectionnez “properties”, une fenêtre s’ouvre :
            -Dans le champ “Include Files”, remplacez la totalité par : *.c;*.cpp;*.h;*.hpp;*.s
            -Cliquez sur 'OK' et fermer l’éditeur.
            -Si le dossier “BUILD” existe, supprimez-le.

Bon bah voila, vous un avez un dossier modèle pour crée vos projets il suffira de copier le dossier "template" et de le renommer avec le nom de votre projet par exemple "Helloworld" (Évitez les espace dans les dossier qui contient les projets car j'ai déjà eu des problèmes à cause de cela).

Pour compiler votre projets , regarder la barre du haut et cliquer sur "Make" comme le montre l'image:
[img width=695 height=559]http://demonyunther.free.fr/img/tuto/devkitm.JPG[/img]
Si la compilation se passe sans aucun problème , les fichiers .ELF et .DOL seront créés.
Sinon il y a d'éventuels erreurs vous les verrez tout en bas, dans un cadre il suffira de cliquer sur la ligne et l'éditeur vous positionnera sur la ligne concernée.

[anchor=III]III - Votre premier programme[/anchor]

Bon vous devez préparer votre dossier pour notre premier programme.
Vous pouvez faire comme moi:
[img width=800 height=599]http://demonyunther.free.fr/img/tuto/devkitdo.JPG[/img]
Comme vous le voyez bien j'ai crée le dossier helloworld qui sera notre premier programme : Il affichera un message à l'écran de la wii.
Mais ce n'est pas tout de suite car je n'ai pas l'intention de manger des étapes.
Bon une fois le dossier crée vous cliquer sur template.pnproj qui est le fichier projets qui permettra à devKitPro d'indexé tous vos fichiers.
[img width=800 height=612]http://demonyunther.free.fr/img/tuto/devkitdfi.JPG[/img]
Je vous laisse ouvrir le fichier main.c qui contiendra un exemple de code.
Que vous ne pouvez malheureusement pas comprendre pour le moment.
Mais on va y venir  :D.

Les libraires:

#include
#include
#include
#include

Alors qu'est ce que cela?
Ce sont des lignes de codes que l'on ne voit qu'en haut des fichiers source car c'est nécessaires vous allez comprendre pourquoi.
Ces lignes spéciales, on les appelle directives de préprocesseur reconnaissable par un # en début. Ce sont des lignes lues par le compilateur lors de la compilation.

Que signifient c'est lignes?

"include" en francais donne "inclure" , En fait elle nous permet d'inclure au programme des fichiers , qui sont en fait des librairies.
Ici on inclus 4 fichiers:
-stdio.h
-stdlib.h
-gccore.h
-wiiuse/wpad.h  [Cette libraire permet de gérer la wiimote tels que les mouvement effectués, le viseur, les boutons ect...]

Ce sont des fichiers qui existe déjà et qui se trouve dans votre IDE (Parfois vous aurez des librairies non disponible il faudra les rajoutés vous même dans l'ide).
L'exécution de celle-ci se passe au niveau du compilateur pour qu'il comprenne comment il doit utiliser les instructions pour les rendre compréhensible à la machine.
C'est pour cela que on doit mettre en tête les librairies pour que la machine comprenne les instructions qui suivent les librairies.
Donc pour utiliser des instructions vous devez utiliser la libraires qui contient ces instructions.
Un petit rappel :
[img width=679 height=155]http://demonyunther.free.fr/img/tuto/rappel.JPG[/img]
[Ce que vous voyez est un petit bout de code qui permet d'afficher un message sur l'ordinateur en mode console.
Mais la il n'y a rien pour laisser afficher la fenêtre donc pour ceux qui veulent testé sur windows rajouté "system("PAUSE");"
juste avant "return 0;" ]

Par exemple dans les libraires "stdio.h" et "stdlib.h" cela vous permet d'afficher un message à l'écran
L'instruction qui permet d'afficher un message à l'écran est "printf" qui est définie dans ces librairies.
Sans ces librairies, écrire du texte à l'écran aurait été mission impossible. La machine à la base ne sait rien faire. Faut tout lui expliquer,
c'est la galère  ;D
Enfin avec ces librairies on pourra afficher un message à l'écran sans difficulté.

Mettre à jour les libraires:
Il suffit de télécharger les libraires et de les mettres dans l'endroit ou vous avez installé devKitPro
Exemple: C:\devKitPro\libogc

Afficher un message à l'écran:
Pour le moment on ne pas s'occuper de la partie haute du programme du fichier main.c que vous avez devant vous :D
Donc de "// Initialise the video system" , à "// e.g. printf ("\x1b[%d;%dH", row, column ); "
on s'en occupe pas.

Sur l'ordinateur tout cela n'est pas nécessaire car windows le fait pour nous.  ;D
Mais sur la wii , il faut initialisé l'affiche à l'écran, les wiimotes régler en Pal ou Ntsc ect...
On va seulement s'intéressé à cet partie pour le momment:
printf("Hello World!");

En fait "printf" demande à la machine d'afficher à l'écran ce qui est entre ("").
Donc lorsque que vous voulez afficher quelque chose ne vous tromper pas ("ICI") biens à l'intérieur des parenthésés est entre des guillemets.
Mais c'est quoi le ";" à la fin?
En fait cela permet d'informer que l'instruction se termine car la machine ne sais rien faire faut tout lui dire.
Si vous l'oubliez le compilateur sera pas content et il vous le fera remarqué  :).
Donc ce que vous pouvez essayer c'est de mettre votre propre message, le compiler prendre le .dol , le renommer en boot.dol et de l'exécuter soit avec la faille de comex (il faudra la mettre à la racine ) soit la hbc (pour hbc il faut mettre le boot.dol dans un dossier qui lui même se trouvera dans apps.
Donc SD:\apps\helloworld\boot.dol
Une fois le texte affiché qui est automatique il suffira de faire le bouton home pour revenir à la HBC.
On verra pourquoi plus tard.
Mais vous remarquerez que tout s'écris sur la même ligne et si on faisait un retour à la ligne?
il vous suffira de mettre un "\n" (Pour afficher la barre il suffira de faire "Alt Gr" + "8" le 8 se situe au dessus des lettres et non pas celui du pavé numérique.
un petit exemple:
printf("Bienvenue sur wiigen et sur mon tutoriel\nBonne continuation!")
Et la vous me demandez et si je veux afficher "\n" dans mon texte comment je fais?
il suffit de doubler la barre "\\n".
Il y a aussi \t qui permet de faire un Tab.
Une petite photo du rendu sur ma télé (la télé est moisi et mon appareil photo a du mal sur les télé cathodique):
[img width=500 height=112]http://demonyunther.free.fr/img/tuto/rendu.JPG[/img]
j'ai pris la première télé que j'ai trouvé, j'ai trop la flemme d'installer la carte d'acquisition vidéo.

Je vous recommande de tester ce que j'écris régulièrement pour bien retenir .

[Attention:
Maintenant que vous voyez un peu comment ça fonctionne, j'aimerais vous prévenir que lorsque que vous télécharger un homebrew sur internet , faite attention à ce qu'il soit testé et qu'il soit disponible sur un site connu (pour être sur).
Car c'est totalement possible dés le démarrage de l'homebrew que celui ci supprime le Nand, le préloader (pour vous empêcher de récupérer le brick) ect...
En gros qui vous donner un bon gros brick , et tout cela sans aucun de message d'avertissement ou de confirmation.]

Les commentaires:

Maintenant avant de se lancer j'aimerais vous expliquer comment utilisé des commentaires, trés important dans un programme pour s'y retrouver se rappeler à quoi cela sert...
Pour faire un commentaire sur une seule ligne il suffit juste de faire "\\" et faire suivre votre commentaire
exemple: \\C'est ici que l'on initialise l'affichage vidéo.
Mais si vous voulez faire un paragraphe comment on fais ???
Tous est prévu
il suffit de commencer le paragraphe avec "/*" et le finir avec "*/"
exemple:
/* Ici on l'initialise l'affichage,
On initialise la wiimote
Et on la synchronise.
*/
Et voila je vous recommande vivement d'utiliser les commentaires vous verrez c'est très utile.
Par contre lors de la compilation ses commentaires seront ignorés et n'augmentera pas la taille de votre programme.

[anchor=IV]IV - L'apprentissage Pur[/anchor]

Maintenant que vous ayez une tout petite idée de ce que cela donne et que cela vous interesse je vous propose d'aller suivre ce cours entièrement:
(Dont je me suis inspirer pour plus ou moins dans mon tutoriel.)
Lien:
http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html

[anchor=V]V - Etudes d'homebrews[/anchor]

[Reprise du tuto vers le début de juillet , Pour cause d'indisponibilité]

Re : [Tuto] Apprendre un faire en Homebrew [Cours C>Wii]

Message non luPosté: 16 Mai 2009, 13:00
par Xtend Masuda
enfin, un tuto bien détaillé avec photos pour programmer, merci  ;)

Re : [Tuto] Apprendre un faire en Homebrew [Cours C>Wii]

Message non luPosté: 16 Mai 2009, 13:05
par DemonYunther_1
Merci bien , j'essaye de faire le mieux possible.

Re : Re : [Tuto] Apprendre un faire en Homebrew [Cours C>Wii]

Message non luPosté: 16 Mai 2009, 13:08
par Xtend Masuda
demonyunther Wrote:Merci bien , j'essaye de faire le mieux possible.


j'ai hâte de voir le cours en entier

juste une question, c'est que du C, ou il y a du C++ ?

Re : [Tuto] Apprendre un faire en Homebrew [Cours C>Wii]

Message non luPosté: 16 Mai 2009, 13:12
par DemonYunther_1
Pour le moment que C on va pas griller des étapes.
En fait cet après midi je pars donc je continuerai ce soir ou demain matin.
En tout cas c'est long le C à apprendre donc le tuto le sera aussi.

edit: J'avais même pas vu que j'ai fait une faute dans le titre du tuto la honte.

Re : Re : [Tuto] Apprendre un faire en Homebrew [Cours C>Wii]

Message non luPosté: 16 Mai 2009, 13:39
par Xtend Masuda
demonyunther Wrote:Pour le moment que C on va pas griller des étapes.
En fait cet après midi je pars donc je continuerai ce soir ou demain matin.
En tout cas c'est long le C à apprendre donc le tuto le sera aussi.

edit: J'avais même pas vu que j'ai fait une faute dans le titre du tuto la honte.


bon, je vais me contenter de voir le C, on verra plus tard pour le C++ ;D (-> je sens que ça va être dur et long déjà)

Re : [Tuto] Apprendre à faire un Homebrew [Cours C>Wii]

Message non luPosté: 16 Mai 2009, 14:23
par jibweb
magnifique !! moi qui avait envie de comprendre les bases (savoir compiler entre autre) je pouvais pas voir un meilleur tuto arriver !!!
en plus il est bien fait et très propre !! vivement la suite ;)

Re : [Tuto] Apprendre à faire un Homebrew [Cours C>Wii]

Message non luPosté: 17 Mai 2009, 08:26
par DemonYunther_1
Je me suis levé de bonne heure je continue le tuto.

Bon je tiens à préciser que hier , je ne savais trop comment expliquer le fonctionnement des libraires j'ai fait un exemple un peu bizarre.
Car ça ne se passe pas exactement comme ça en réalité .
Sinon pour les "librairies" j'ai fait une fautes je les écrivais de cette manière "libraires" , Retenez bien que c'est librairies.

Re : [Tuto] Apprendre à faire un Homebrew [Cours C>Wii]

Message non luPosté: 17 Mai 2009, 11:34
par DemonYunther_1
Bon pour continuer le tuto je me pose une question.

Est ce que vous souhaitez que je distingue le partie Pc et la partie Wii de la programation en C?

Re : [TUTO] Apprendre à faire un Homebrew [Cours C>Wii]

Message non luPosté: 18 Mai 2009, 09:36
par arasium
A mon avis, tu vas jamais en finir si tu commence aussi a expliquer le fonctionnement du C :) Moi je pense que le mieu serait de les rediriger vers le site du zero pour le C pur et dur et que ton tuto s'appuis surtout sur ce qu'il faut savoir en plus du C de base pour programmer.

Re : [TUTO] Apprendre à faire un Homebrew [Cours C>Wii]

Message non luPosté: 18 Mai 2009, 17:44
par DemonYunther_1
ouais c'est pas faux :) Mais je ne sais pas trop par ou commencer , alors j'ai voulu faire comme si on partais à zéro.

Re : [TUTO] Apprendre à faire un Homebrew [Cours C>Wii]

Message non luPosté: 21 Mai 2009, 14:38
par Linkdu64
Merci beaucoup pour se tuto qui donne envie...  :)