[Programmation Wii] Création du premier programme Wii

Tutoriels PC pas à pas : émulateurs, configuration, optimisation, réparation de Windows, outils et astuces pour tirer le meilleur de votre PC.
Champion des challenges en titre Avatar de l’utilisateur
Tgames
Geek
Administrateurs
Messages : 3909
Inscription : dim. 21 sept. 2008 09:15
Wi-Fi : Oui
Firmware Wii : 4.1E
cIOS Wii : Cios57 Rev19
Type de DS : 3DS
Linker DS : M3i Zero
Firmware PS3 : 4.00
CFW PS3 : 3.55 PS3MFW
Dongle PS3 : PS3Key
Type de PSP : Slim
Firmware PSP : 5.00-M33 CFW
Localisation : France

[Programmation Wii] Création du premier programme Wii

Message par Tgames »


Image indisponible (supprimée par son hébergeur)
1. Initialisation de l'homebrew

Tout d'abord ouvrez "Programmer's Notepad", et faites "File" et "New" => "C/C++".

Allez c'est partit on code !

Ajoutez ces lignes, ce sont les libraries que nous allons appeler dans notre programme.

Code : Tout sélectionner

#include <stdio.h>
#include <stdlib.h>
#include <gccore.h>
#include <ogcsys.h>
#include <unistd.h>
#include <ogc/pad.h> // Librairie pour la Manette Gamecube
#include <wiiuse/wpad.h>  // Librairie pour la Wiimote
Ajouter ensuite ces lignes qui permettent d'initialiser la vidéo, l'affichage du texte, et l'initialisation de la manette Wii

Code : Tout sélectionner

#define gotoXY(x,y) printf("\x1b[%i;%iH", x, y)

static void *xfb = NULL;
static GXRModeObj *rmode = NULL;

//---------------------------------------------------------------------------------
int main(int argc, char **argv) 
{
   VIDEO_Init(); //Initialise la vidéo
   WPAD_Init(); // Initialise la wiimote
   rmode = VIDEO_GetPreferredMode(NULL);
   xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
   console_init(xfb,0,0,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
   VIDEO_Configure(rmode);
   VIDEO_SetNextFramebuffer(xfb);
   VIDEO_SetBlack(FALSE);
   VIDEO_Flush();
   VIDEO_WaitVSync();
   if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync(); 
Sans le code des initialisations rien ne se passera dans le programme, rappelez vous de cela c'est très important !

2. Utilisation des manettes. Utlisons la wiimote, la Manette Gamecube, Manette Classique, Manette Nunchunk ! (et oui sa fait beaucoup !)

Wiimote :

Code : Tout sélectionner

printf("Premier Programme Wii -- https://www.tgames.fr"); // Écrit à l'écran ces mots
gotoXY(2, 3); // Emplacement du texte à l'écran 
 
u32 pressed;
	   struct expansion_t ext;
if (b & WPAD_BUTTON_A)
		wpad_status &= PSX_BUTTON_START;

	   
	   WPAD_ScanPads();

/* Voici différentes lignes qui sont identiques mais fonctionnent toutes différemment.
Ces lignes servent à synchroniser les boutons à la reconnaissance sur la wii
A l'appui sur un touche un condition se déroule, si elle n'est pas respecté elle est remplacé par une autre  */

// Etat des bouttons de la Wiimote avec WPAD_ButtonsDown
	   pressed = WPAD_ButtonsDown(WPAD_CHAN_0); 
	   gotoXY(5, 3);
	   printf("Boutons Wiimote avec WPAD_ButtonsDown: ");
	   if (pressed & WPAD_BUTTON_A)     { printf ("A"); }      else { printf (" "); }
	   if (pressed & WPAD_BUTTON_B)     { printf ("B"); }      else { printf (" "); }
	   if (pressed & WPAD_BUTTON_1)     { printf ("1"); }      else { printf (" "); }  
	   if (pressed & WPAD_BUTTON_2)     { printf ("2"); }      else { printf (" "); }                    
	   if (pressed & WPAD_BUTTON_MINUS) { printf ("-"); }      else { printf (" "); }
	   if (pressed & WPAD_BUTTON_PLUS)  { printf ("+"); }      else { printf (" "); }      
	   if (pressed & WPAD_BUTTON_LEFT)  { printf (" Gauche"); } else { printf ("       "); } 
	   if (pressed & WPAD_BUTTON_RIGHT) { printf (" Droit");  } else { printf ("      ");  } 
	   if (pressed & WPAD_BUTTON_UP)    { printf (" Haut");   } else { printf ("     ");   } 
	   if (pressed & WPAD_BUTTON_DOWN)  { printf (" Bas");    } else { printf ("    ");    } 	   
	   
	   // Etat des bouttons de la Wiimote avec WPAD_ButtonsHeld
	   pressed = WPAD_ButtonsHeld(WPAD_CHAN_0); 
	   gotoXY(6, 3);
	   printf("Boutons Wiimote avec WPAD_ButtonsHeld: ");
	   if (pressed & WPAD_BUTTON_A)     { printf ("A"); }      else { printf (" "); }
	   if (pressed & WPAD_BUTTON_B)     { printf ("B"); }      else { printf (" "); }
	   if (pressed & WPAD_BUTTON_1)     { printf ("1"); }      else { printf (" "); }  
	   if (pressed & WPAD_BUTTON_2)     { printf ("2"); }      else { printf (" "); }                    
	   if (pressed & WPAD_BUTTON_MINUS) { printf ("-"); }      else { printf (" "); }
	   if (pressed & WPAD_BUTTON_PLUS)  { printf ("+"); }      else { printf (" "); }      
	   if (pressed & WPAD_BUTTON_LEFT)  { printf (" Gauche"); } else { printf ("       "); } 
	   if (pressed & WPAD_BUTTON_RIGHT) { printf (" Droit");  } else { printf ("      ");  } 
	   if (pressed & WPAD_BUTTON_UP)    { printf (" Haut");   } else { printf ("     ");   } 
	   if (pressed & WPAD_BUTTON_DOWN)  { printf (" Bas");    } else { printf ("    ");    } 
	   
	   // Etat des bouttons de la Wiimote avec WPAD_ButtonsUp
	   pressed = WPAD_ButtonsUp(WPAD_CHAN_0); 
	   gotoXY(7, 3);
	   printf("Boutons Wiimote avec WPAD_ButtonsUp:   ");
	   if (pressed & WPAD_BUTTON_A)     { printf ("A"); }      else { printf (" "); }
	   if (pressed & WPAD_BUTTON_B)     { printf ("B"); }      else { printf (" "); }
	   if (pressed & WPAD_BUTTON_1)     { printf ("1"); }      else { printf (" "); }  
	   if (pressed & WPAD_BUTTON_2)     { printf ("2"); }      else { printf (" "); }                    
	   if (pressed & WPAD_BUTTON_MINUS) { printf ("-"); }      else { printf (" "); }
	   if (pressed & WPAD_BUTTON_PLUS)  { printf ("+"); }      else { printf (" "); }      
	   if (pressed & WPAD_BUTTON_LEFT)  { printf (" Gauche"); } else { printf ("       "); } 
	   if (pressed & WPAD_BUTTON_RIGHT) { printf (" Droit");  } else { printf ("      ");  } 
	   if (pressed & WPAD_BUTTON_UP)    { printf (" Haut");   } else { printf ("     ");   } 
	   if (pressed & WPAD_BUTTON_DOWN)  { printf (" Bas");    } else { printf ("    ");    } 
Passons maintenant à la reconnaissance des extensions branchés à la wiimote (Nunchunk, Manette Classique...)

Code : Tout sélectionner

// Extension Wiimote
	   WPAD_Expansion(WPAD_CHAN_0, &ext);
	   gotoXY(9, 3);
	   printf("Extension: ");
	   switch (ext.type)
	   {
		   case WPAD_EXP_NONE:        printf ("Aucun            "); break;
		   case WPAD_EXP_NUNCHUK:     printf ("Nunchuk          "); break;
		   case WPAD_EXP_CLASSIC:     printf ("Manette classique"); break;
		   case WPAD_EXP_GUITARHERO3: printf ("Guitar Hero 3    "); break;
		   case WPAD_EXP_UNKNOWN:     printf ("Manette inconnue "); break;
	   }
Utilisation du Nunchunk.

Code : Tout sélectionner

// Etat des bouttons de la Wiimote avec WPAD_ButtonsDown
	   pressed = WPAD_ButtonsDown(WPAD_CHAN_0); 
	   gotoXY (3, 5);
	   printf("Boutons Nunchuk avec WPAD_ButtonsDown: ");
	   if (pressed & WPAD_NUNCHUK_BUTTON_Z)     { printf ("Z"); } else { printf (" "); }
	   if (pressed & WPAD_NUNCHUK_BUTTON_C)     { printf ("C"); } else { printf (" "); }
 	   
	   
	   // Etat des bouttons de la Wiimote avec WPAD_ButtonsHeld
	   pressed = WPAD_ButtonsHeld(WPAD_CHAN_0); 
	   gotoXY (3, 6);
	   printf("Boutons Nunchuk avec WPAD_ButtonsHeld: ");
	   if (pressed & WPAD_NUNCHUK_BUTTON_Z)     { printf ("Z"); } else { printf (" "); }
	   if (pressed & WPAD_NUNCHUK_BUTTON_C)     { printf ("C"); } else { printf (" "); }
	   
	   // Etat des bouttons de la Wiimote avec WPAD_ButtonsUp
	   pressed = WPAD_ButtonsUp(WPAD_CHAN_0); 
	   gotoXY (3, 7);
	   printf("Boutons Nunchuk avec WPAD_ButtonsUp:   ");
	   if (pressed & WPAD_NUNCHUK_BUTTON_Z)     { printf ("Z"); } else { printf (" "); }
	   if (pressed & WPAD_NUNCHUK_BUTTON_C)     { printf ("C"); } else { printf (" "); } 
	   
     
	   // Joypad du nunchuk
	   WPAD_Expansion(WPAD_CHAN_0, &ext);
	   gotoXY (3, 9);
	   printf("Joypad Position  X:%3i - Y:%3i      ", ext.nunchuk.js.pos.x,    ext.nunchuk.js.pos.y);
	   printf("Joypad Center    X:%3i - Y:%3i      ", ext.nunchuk.js.center.x, ext.nunchuk.js.center.y);
	   gotoXY (3, 10);
	   printf("Joypad Min       X:%3i - Y:%3i      ", ext.nunchuk.js.min.x,    ext.nunchuk.js.min.y);
	   printf("Joypad Max       X:%3i - Y:%3i      ", ext.nunchuk.js.max.x,    ext.nunchuk.js.max.y);
       
	   X = ext.nunchuk.js.pos.x - ext.nunchuk.js.center.x;
	   Y = - (ext.nunchuk.js.pos.y - ext.nunchuk.js.center.y);
	   gotoXY (3, 12);
	   printf ("Valeur joypad par calcul  X:%4i - Y:%4i ", X, Y);
	   
	   X /= 4*2; Y /= 8*2;
	   gotoXY (35,   20);  
	   printf ("+");
	   gotoXY (35+X, 20+Y);
	   printf ("*");
Utilisation de la manette classique.

Code : Tout sélectionner

 WPAD_ScanPads();
	   gotoXY (20+X1, 22+Y1); printf (".");	   
	   gotoXY (55+X2, 22+Y2); printf (".");
	   
	   // Etat des bouttons de la Wiimote avec WPAD_ButtonsDown
	   pressed = WPAD_ButtonsDown(WPAD_CHAN_0); 
	   gotoXY (3, 5);
	   printf("Boutons Nunchuk avec WPAD_ButtonsDown: ");
	   if (pressed & WPAD_CLASSIC_BUTTON_LEFT)   { printf ("G"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_RIGHT)  { printf ("D"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_UP)     { printf ("H"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_DOWN)   { printf ("B"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_A)      { printf ("A"); }    else { printf (" "); }
	   if (pressed & WPAD_CLASSIC_BUTTON_B)      { printf ("B"); }    else { printf (" "); }
	   if (pressed & WPAD_CLASSIC_BUTTON_X)      { printf ("X"); }    else { printf (" "); }
	   if (pressed & WPAD_CLASSIC_BUTTON_Y)      { printf ("Y"); }    else { printf (" "); }                   
	   if (pressed & WPAD_CLASSIC_BUTTON_PLUS)   { printf ("+"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_MINUS)  { printf ("-"); }    else { printf (" "); }    
	   if (pressed & WPAD_CLASSIC_BUTTON_ZL)     { printf (" ZL");  } else { printf ("   ");  }
	   if (pressed & WPAD_CLASSIC_BUTTON_ZR)     { printf (" ZR");  } else { printf ("   ");  }
	   if (pressed & WPAD_CLASSIC_BUTTON_FULL_L) { printf (" L");   } else { printf ("  ");   }
	   if (pressed & WPAD_CLASSIC_BUTTON_FULL_R) { printf ("R ");   } else { printf ("  ");   }
 	   if (pressed & WPAD_CLASSIC_BUTTON_HOME)   { printf ("Home"); } else { printf ("    "); }
	   
	   
	   // Etat des bouttons de la Wiimote avec WPAD_ButtonsHeld
	   pressed = WPAD_ButtonsHeld(WPAD_CHAN_0); 
	   gotoXY (3, 6);
	   printf("Boutons Nunchuk avec WPAD_ButtonsHeld: ");
	   if (pressed & WPAD_CLASSIC_BUTTON_LEFT)   { printf ("G"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_RIGHT)  { printf ("D"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_UP)     { printf ("H"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_DOWN)   { printf ("B"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_A)      { printf ("A"); }    else { printf (" "); }
	   if (pressed & WPAD_CLASSIC_BUTTON_B)      { printf ("B"); }    else { printf (" "); }
	   if (pressed & WPAD_CLASSIC_BUTTON_X)      { printf ("X"); }    else { printf (" "); }
	   if (pressed & WPAD_CLASSIC_BUTTON_Y)      { printf ("Y"); }    else { printf (" "); }                   
	   if (pressed & WPAD_CLASSIC_BUTTON_PLUS)   { printf ("+"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_MINUS)  { printf ("-"); }    else { printf (" "); }    
	   if (pressed & WPAD_CLASSIC_BUTTON_ZL)     { printf (" ZL");  } else { printf ("   ");  }
	   if (pressed & WPAD_CLASSIC_BUTTON_ZR)     { printf (" ZR");  } else { printf ("   ");  }
	   if (pressed & WPAD_CLASSIC_BUTTON_FULL_L) { printf (" L");   } else { printf ("  ");   }
	   if (pressed & WPAD_CLASSIC_BUTTON_FULL_R) { printf ("R ");   } else { printf ("  ");   }
 	   if (pressed & WPAD_CLASSIC_BUTTON_HOME)   { printf ("Home"); } else { printf ("    "); }	
	   
	   
	   // Etat des bouttons de la Wiimote avec WPAD_ButtonsUp
	   pressed = WPAD_ButtonsUp(WPAD_CHAN_0); 
	   gotoXY (3, 7);
	   printf("Boutons Nunchuk avec WPAD_ButtonsUp:   ");
	   if (pressed & WPAD_CLASSIC_BUTTON_LEFT)   { printf ("G"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_RIGHT)  { printf ("D"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_UP)     { printf ("H"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_DOWN)   { printf ("B"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_A)      { printf ("A"); }    else { printf (" "); }
	   if (pressed & WPAD_CLASSIC_BUTTON_B)      { printf ("B"); }    else { printf (" "); }
	   if (pressed & WPAD_CLASSIC_BUTTON_X)      { printf ("X"); }    else { printf (" "); }
	   if (pressed & WPAD_CLASSIC_BUTTON_Y)      { printf ("Y"); }    else { printf (" "); }                   
	   if (pressed & WPAD_CLASSIC_BUTTON_PLUS)   { printf ("+"); }    else { printf (" "); } 
	   if (pressed & WPAD_CLASSIC_BUTTON_MINUS)  { printf ("-"); }    else { printf (" "); }    
	   if (pressed & WPAD_CLASSIC_BUTTON_ZL)     { printf (" ZL");  } else { printf ("   ");  }
	   if (pressed & WPAD_CLASSIC_BUTTON_ZR)     { printf (" ZR");  } else { printf ("   ");  }
	   if (pressed & WPAD_CLASSIC_BUTTON_FULL_L) { printf (" L");   } else { printf ("  ");   }
	   if (pressed & WPAD_CLASSIC_BUTTON_FULL_R) { printf ("R ");   } else { printf ("  ");   }
 	   if (pressed & WPAD_CLASSIC_BUTTON_HOME)   { printf ("Home"); } else { printf ("    "); }
	   
     
	   // Joypads
	   WPAD_Expansion(WPAD_CHAN_0, &ext);
	   gotoXY (3, 9);
	   printf("Joypad Pos.      Left X:%2i Y:%2i     Right X:%2i Y:%2i ", ext.classic.ljs.pos.x,    ext.classic.ljs.pos.y,    ext.classic.rjs.pos.x,    ext.classic.rjs.pos.y);
	   gotoXY (3, 10);
	   printf("Joypad Center    Left X:%2i Y:%2i     Right X:%2i Y:%2i ", ext.classic.ljs.center.x, ext.classic.ljs.center.y, ext.classic.rjs.center.x, ext.classic.rjs.center.y);
	   gotoXY (3, 11);
	   printf("Joypad Min       Left X:%2i Y:%2i     Right X:%2i Y:%2i ", ext.classic.ljs.min.x,    ext.classic.ljs.min.y,    ext.classic.rjs.min.x,    ext.classic.rjs.min.y);
	   gotoXY (3, 12);  
	   printf("Joypad Max       Left X:%2i Y:%2i     Right X:%2i Y:%2i ", ext.classic.ljs.max.x,    ext.classic.ljs.max.y,    ext.classic.rjs.max.x,    ext.classic.rjs.max.y);
       
	   X1 =   ((ext.classic.ljs.pos.x - ext.classic.ljs.center.x) * 200 / (ext.classic.ljs.max.x - ext.classic.ljs.min.x));
	   Y1 = - ((ext.classic.ljs.pos.y - ext.classic.ljs.center.y) * 200 / (ext.classic.ljs.max.y - ext.classic.ljs.min.y));
	   X2 =   ((ext.classic.rjs.pos.x - ext.classic.rjs.center.x) * 200 / (ext.classic.rjs.max.x - ext.classic.rjs.min.x));
	   Y2 = - ((ext.classic.rjs.pos.y - ext.classic.rjs.center.y) * 200 / (ext.classic.rjs.max.y - ext.classic.rjs.min.y));
	   gotoXY (3, 14);
	   printf ("Valeur joypad par calcul    Left X:%4i Y:%4i    Right X:%4i Y:%4i ", X1, Y1, X2, Y2);
	   
	   X1 /= 4*3; Y1 /= 8*3;
	   gotoXY (20,    22);    printf ("+");
	   gotoXY (20+X1, 22+Y1); printf ("*");
	   
	   X2 /= 4*3; Y2 /= 8*3;
	   gotoXY (55,    22);    printf ("+");
	   gotoXY (55+X2, 22+Y2); printf ("*");
Et enfin pour la manette Gamecube !

Code : Tout sélectionner

           u32 pressed;
           PAD_ScanPads();
	   gotoXY (20+X1, 22-Y1); printf (".");	   
	   gotoXY (55+X2, 22-Y2); printf (".");
	   
	   // Etat des bouttons de la manette GameCube avec PAD_ButtonsDown
	   pressed = PAD_ButtonsDown(PAD_CHAN0);
	   gotoXY(3, 5);
	   printf("Boutons manette GameCube avec PAD_ButtonsDown: ");
	   if (pressed & PAD_BUTTON_A)     { printf ("A"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_B)     { printf ("B"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_X)     { printf ("X"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_Y)     { printf ("Y"); }      else { printf (" "); }
	   if (pressed & PAD_TRIGGER_Z)    { printf ("Z"); }      else { printf (" "); }
	   if (pressed & PAD_TRIGGER_L)    { printf ("L"); }      else { printf (" "); }
	   if (pressed & PAD_TRIGGER_R)    { printf ("R"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_LEFT)  { printf (" Gauche"); } else { printf ("       "); }
	   if (pressed & PAD_BUTTON_RIGHT) { printf (" Droit");  } else { printf ("      ");  }
	   if (pressed & PAD_BUTTON_UP)    { printf (" Haut");   } else { printf ("     ");   }
	   if (pressed & PAD_BUTTON_DOWN)  { printf (" Bas");    } else { printf ("    ");    }
	   
	   // Etat des bouttons de la manette GameCube avec PAD_ButtonsHeld
	   pressed = PAD_ButtonsHeld(PAD_CHAN0);
	   gotoXY(3, 6);
	   printf("Boutons manette GameCube avec PAD_ButtonsHeld: ");
	   if (pressed & PAD_BUTTON_A)     { printf ("A"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_B)     { printf ("B"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_X)     { printf ("X"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_Y)     { printf ("Y"); }      else { printf (" "); }
	   if (pressed & PAD_TRIGGER_Z)    { printf ("Z"); }      else { printf (" "); }
	   if (pressed & PAD_TRIGGER_L)    { printf ("L"); }      else { printf (" "); }
	   if (pressed & PAD_TRIGGER_R)    { printf ("R"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_LEFT)  { printf (" Gauche"); } else { printf ("       "); }
	   if (pressed & PAD_BUTTON_RIGHT) { printf (" Droit");  } else { printf ("      ");  }
	   if (pressed & PAD_BUTTON_UP)    { printf (" Haut");   } else { printf ("     ");   }
	   if (pressed & PAD_BUTTON_DOWN)  { printf (" Bas");    } else { printf ("    ");    }
	   
	   // Etat des bouttons de la manette GameCube avec PAD_ButtonsUp
	   pressed = PAD_ButtonsUp(PAD_CHAN0);
	   gotoXY(3, 7);
	   printf("Boutons manette GameCube avec PAD_ButtonsUp:   ");
	   if (pressed & PAD_BUTTON_A)     { printf ("A"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_B)     { printf ("B"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_X)     { printf ("X"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_Y)     { printf ("Y"); }      else { printf (" "); }
	   if (pressed & PAD_TRIGGER_Z)    { printf ("Z"); }      else { printf (" "); }
	   if (pressed & PAD_TRIGGER_L)    { printf ("L"); }      else { printf (" "); }
	   if (pressed & PAD_TRIGGER_R)    { printf ("R"); }      else { printf (" "); }
	   if (pressed & PAD_BUTTON_LEFT)  { printf (" Gauche"); } else { printf ("       "); }
	   if (pressed & PAD_BUTTON_RIGHT) { printf (" Droit");  } else { printf ("      ");  }
	   if (pressed & PAD_BUTTON_UP)    { printf (" Haut");   } else { printf ("     ");   }
	   if (pressed & PAD_BUTTON_DOWN)  { printf (" Bas");    } else { printf ("    ");    }
	   
	   
	   // Etat des joypads de la manette GameCube
	   X1 = PAD_StickX(PAD_CHAN0);
	   Y1 = PAD_StickY(PAD_CHAN0);	
	   X2 = PAD_SubStickX(PAD_CHAN0);
	   Y2 = PAD_SubStickY(PAD_CHAN0);  
	   
	   gotoXY (3, 9);
	   printf("PAD_StickX:   %3i - PAD_StickY:   %3i ", X1, Y1);
	   gotoXY (3, 10);
	   printf("PAD_SubStickX:%3i - PAD_SubStickY:%3i ", X2, Y2);
	   gotoXY (3, 11);
	   printf("PAD_TriggerL: %3i - PAD_TriggerR: %3i ", PAD_TriggerL(PAD_CHAN0), PAD_TriggerR(PAD_CHAN0));
	   
	   X1 /= 4*2; Y1 /= 8*2;
	   gotoXY (20,    22);    printf ("+");
	   gotoXY (20+X1, 22-Y1); printf ("*");
	   
	   X2 /= 4*2; Y2 /= 8*2;
	   gotoXY (55,    22);    printf ("+");
	   gotoXY (55+X2, 22-Y2); printf ("*");

3.Utilisation des modes de redémarrages de la wii ! Désormais j'ai évoqué tout ce qui concerne l'utilisation des manettes, nous allons parler des modes de redémarrage de la wii, éteindre la wii, retour au loader.

Pour cela ajouter la ligne pour la wiimote :

Pour retour au loader :

Code : Tout sélectionner

if ( pressed & WPAD_BUTTON_HOME ) { exit(0); }
Ou pour retour au menu wii

Code : Tout sélectionner

if ( pressed & WPAD_BUTTON_HOME ) { SYS_ResetSystem(SYS_RETURNTOMENU,0,0); }
Ou pour redémarrer la wii

Code : Tout sélectionner

if ( pressed & WPAD_BUTTON_HOME ) { SYS_ResetSystem(SYS_RESTART,0,0); }
Ou pour éteindre la wii

Code : Tout sélectionner

if ( pressed & WPAD_BUTTON_HOME ) { SYS_ResetSystem(SYS_POWEROFF,0,0); }

A ajouter après les autres if (pressed & WPAD_BUTTON_xx )....

Pour la manette classique il sufit de remplacer
pressed & WPAD_BUTTON_HOME par pressed & WPAD_CLASSIC_BUTTON_HOME

Cela marchera toujours.

Pour la manette Gamecube il suffit de remplacer
pressed & WPAD_BUTTON_HOME par pressed & PAD_BUTTON_START

Voilà nous avons fini pour le tutoriel sur les fonctions Manettes, initialisation vidéo/manettes et sur les modes de redémarrage de la wii !!

Si vous voulez créer un bon jeu 2D, commencer à lire la section 2 du site de Zéro, SDL est aussi présent sur wii, il vous permettra de réaliser des programmes complexe. ;)
Youtube Officiel du forum Tgames : ICI
Avatar de l’utilisateur
kyno
Gamer
Membres
Messages : 1096
Inscription : sam. 18 oct. 2008 10:32
Wi-Fi : Oui
Firmware Wii : 3.4E
cIOS Wii : CIOS57Rev19+hermesv5
Firmware PS3 : 4.00
Dongle PS3 : Aucun

Re: [Programmation Wii] Création du premier programme Wii

Message par kyno »

J'ai pas trouver sur le site du zéro o_O , tu peux m'aider stp ? :lol:
Champion des challenges en titre Avatar de l’utilisateur
Tgames
Geek
Administrateurs
Messages : 3909
Inscription : dim. 21 sept. 2008 09:15
Wi-Fi : Oui
Firmware Wii : 4.1E
cIOS Wii : Cios57 Rev19
Type de DS : 3DS
Linker DS : M3i Zero
Firmware PS3 : 4.00
CFW PS3 : 3.55 PS3MFW
Dongle PS3 : PS3Key
Type de PSP : Slim
Firmware PSP : 5.00-M33 CFW
Localisation : France

Re: [Programmation Wii] Création du premier programme Wii

Message par Tgames »

Youtube Officiel du forum Tgames : ICI
Avatar de l’utilisateur
kyno
Gamer
Membres
Messages : 1096
Inscription : sam. 18 oct. 2008 10:32
Wi-Fi : Oui
Firmware Wii : 3.4E
cIOS Wii : CIOS57Rev19+hermesv5
Firmware PS3 : 4.00
Dongle PS3 : Aucun

Re: [Programmation Wii] Création du premier programme Wii

Message par kyno »

a ok :lol: dsl je croyer qu'il y avait une section wii :lol: :lol: (on voit tout de suite mon intelligence ^^)
Pour la manette Gamecube il suffit de remplacer
pressed & WPAD_BUTTON_HOME par pressed & PAD_BUTTON_START
et si on veux appuyer sur le bouton z par exemple , on mais Pour la manette Gamecube il suffit de remplacer
pressed & WPAD_BUTTON_HOME par pressed & PAD_TRIGGER_Z ??
CashMan
Novice
Membres
Messages : 34
Inscription : dim. 21 sept. 2008 12:07
Wi-Fi : Oui
Firmware Wii : 3.3J
cIOS Wii : IOS38 rev14

Re: [Programmation Wii] Création du premier programme Wii

Message par CashMan »

GRRLIB 3.0.1 est plus sur pour la programmation 2D sur Wii que la SDL ;)
Avatar de l’utilisateur
floriolink
Novice
Membres
Messages : 88
Inscription : sam. 18 oct. 2008 11:25
Wi-Fi : Oui
Firmware Wii : 3.2U
cIOS Wii : Cios 36rev6

Re: [Programmation Wii] Création du premier programme Wii

Message par floriolink »

comment on fait pour compiler en .dol ou .elf?
Avatar de l’utilisateur
floriolink
Novice
Membres
Messages : 88
Inscription : sam. 18 oct. 2008 11:25
Wi-Fi : Oui
Firmware Wii : 3.2U
cIOS Wii : Cios 36rev6

Re: [Programmation Wii] Création du premier programme Wii

Message par floriolink »

Je trouve vraiment pas meme avec devkit pro.Quand je fais make il me met que le fichier spécifié est introuvable.
aidez moi svp
Champion des challenges en titre Avatar de l’utilisateur
Tgames
Geek
Administrateurs
Messages : 3909
Inscription : dim. 21 sept. 2008 09:15
Wi-Fi : Oui
Firmware Wii : 4.1E
cIOS Wii : Cios57 Rev19
Type de DS : 3DS
Linker DS : M3i Zero
Firmware PS3 : 4.00
CFW PS3 : 3.55 PS3MFW
Dongle PS3 : PS3Key
Type de PSP : Slim
Firmware PSP : 5.00-M33 CFW
Localisation : France

Re: [Programmation Wii] Création du premier programme Wii

Message par Tgames »

faut être dans le dossier où se trouve le fichier make (sans extension)
Youtube Officiel du forum Tgames : ICI
Avatar de l’utilisateur
floriolink
Novice
Membres
Messages : 88
Inscription : sam. 18 oct. 2008 11:25
Wi-Fi : Oui
Firmware Wii : 3.2U
cIOS Wii : Cios 36rev6

Re: [Programmation Wii] Création du premier programme Wii

Message par floriolink »

ça marche toujours pas,tu peux essayer d'etre plus précis stp?!
Champion des challenges en titre Avatar de l’utilisateur
Tgames
Geek
Administrateurs
Messages : 3909
Inscription : dim. 21 sept. 2008 09:15
Wi-Fi : Oui
Firmware Wii : 4.1E
cIOS Wii : Cios57 Rev19
Type de DS : 3DS
Linker DS : M3i Zero
Firmware PS3 : 4.00
CFW PS3 : 3.55 PS3MFW
Dongle PS3 : PS3Key
Type de PSP : Slim
Firmware PSP : 5.00-M33 CFW
Localisation : France

Re: [Programmation Wii] Création du premier programme Wii

Message par Tgames »

A l'aide d'un invité de commande (CMD), tu tape les cd pour arriver dans le dossier qui comporte les sources et qui as aussi un fichier makefile ou wiimakefile ou make (sans aucune extension).

Exemple: je veux compiler un programme ce trouvant dans le répertoire C:\DevKitPro\Exemple\Wii\MonHB

tu fait : cd... plusieurs fois pour arriver sur c:/

Puis tu fais cd DevkitPro, ensuite cd Exemple, etc...

Ensuite tu tape make

Voilà c'est tout.
Youtube Officiel du forum Tgames : ICI
Avatar de l’utilisateur
floriolink
Novice
Membres
Messages : 88
Inscription : sam. 18 oct. 2008 11:25
Wi-Fi : Oui
Firmware Wii : 3.2U
cIOS Wii : Cios 36rev6

Re: [Programmation Wii] Création du premier programme Wii

Message par floriolink »

Merci tgames pour ton aide mais ça ne marche malheuresement pas et je voudrais montrer l'étendu du problème:
Déja mon projet se nomme:my programme wii.dol et est placer là:C:\DevKitPro\Exemple\Wii\Mon application\my programme wii.dol
L'erreur lors de l'action make est:
> "make"
> Failed to create process: Le fichier spécifié est introuvable.
> Process Exit Code: 0
> Time Taken: 00:00
J'ai fait tout le code puis je lance le fichier:template.PNPROJ,là je clique sur make et ça me met l'erreur,aidez moi svp :cry:
J'ajoute que lorsque je lance le fichier main.c qui était déja dans l'archive télécharg avec devkit pro et que je fais make ça marche pas
Avatar de l’utilisateur
floriolink
Novice
Membres
Messages : 88
Inscription : sam. 18 oct. 2008 11:25
Wi-Fi : Oui
Firmware Wii : 3.2U
cIOS Wii : Cios 36rev6

Re: [Programmation Wii] Création du premier programme Wii

Message par floriolink »

auriez vous une idée svp

Tout sur PC chez Tgames