Ce soir, je vais parler de l’utilisation de la Wiimote dans un homebrew, car il y a quelques pièges à éviter pour gagner du temps.

Il faut distinguer deux parties dans la Wiimote, la partie Bluetooth qui transmet des informations et la partie récepteur infra-rouges qui calcule sa position par rapport à la sensor-bar.

1 - Sans infra-rouge

Dans ce cas, un code basique ressemblerait à :

// Header contenant les fonctions pour utiliser la Wiimote
#include <wiiuse/wpad.h>
...
// Initialisation
WPAD_Init();
...
// Dans la boucle principale
WPAD_ScanPads(); // On scanne toutes les Wiimotes pour regarder les évenements qui ont eu lieu
if (WPAD_ButtonsDown(0) & WPAD_BUTTON_HOME) exit(0); // Si le bouton Home a été appuyé,
	//quitter l'application

Ce code détecte simplement un appui sur la touche Home à chaque passage dans la boucle principale du programme. C’est bien, mais ça n’exploite pas grand chose de la manette. Voyons donc comment activer et utiliser l’infra-rouge.

2 - Avec infra-rouge

Voici un extrait de code plus évolué :

// Header contenant les fonctions pour utiliser la Wiimote
#include <wiiuse/wpad.h>
...
// Initialisation
WPAD_Init();
// Utilisation de l'infra-rouge
WPAD_SetDataFormat(0, WPAD_FMT_BTNS_ACC_IR);
...
s32 res; // Résultat de la détection de la Wiimote
WPADData *wd = NULL; // Données retournée par la Wiimote
// Dans la boucle principale
WPAD_ReadPending(WPAD_CHAN_ALL, NULL); // On lit les informations en attente sur toutes
	// les Wiimotes connectées. Le deuxième argument est un pointeur de fonction,
	// pouvant être appelé en même temps.
res = WPAD_Probe(WPAD_CHAN_0, NULL); // On vérifie que la Wiimote n°1 est bien présente.
	// Le deuxième argument permet de récupérer l'extension branchée sur la Wiimote
	// (comme le nunchuck)
if (res == WPAD_ERR_NONE) { // Si la manette est bien présente
	wd = WPAD_Data(WPAD_CHAN_0); // On récupère un pointeur vers la structure
		// contenant toutes les informations sur l'état de la manette.
 
	if (wd->btns_h & WPAD_BUTTON_HOME) exit(0); // Si le bouton Home est appuyé,
		// quitter vers le menu
}

Ce code fait exactement la même chose que le précedent. Mais alors, pourquoi compliquer les choses, me direz-vous ? Tout simplement parce-que l’activation de l’infra-rouge oblige ce genre de contrôle. Sans quoi, dès que la Wiimote perdra la sensor bar de vue, l’application se bloquera.

Pour un exemple plus complet utilisant toutes les possibilités de la Wiimote, essayez d’exécuter ce code. Il donne un excellent aperçu des valeurs récupérables.

Conclusion

L’utilisation de la Wiimote est assez simple, grace aux fonctions de la libogc.

La prochaine fois, nous aborderons la partie graphique.

Note personnelle : j’ai ouvert un compte sur le Wiki de Wiibrew, afin de pouvoir contribuer en traduisant et en améliorant des articles. N’hésitez pas à contribuer également ;)

Tags: , , , ,

Comments Pas de commentaire »

Ça fait des mois qu’elle me tente, j’ai fini par craquer. Je me lance à partir de maintenant dans le développement sur Wii. La machine offrant énormément de possibilités ludiques, j’ai hâte de pouvoir coder plein de choses dessus.

Les articles de cette section seront consacrés à ma découverte du homebrew sur Wii. J’y expliquerai ce que je découvre au fur et à mesure. Notez bien que mon but n’est pas d’expliquer comment obtenir ou utiliser gratuitement du contenu payant pour Wii. Je ne cautionne pas ce genre d’activité, inutile de me contacter à ce sujet. Mon seul but est de découvrir les capacités techniques de la machine et d’y exécuter du code libre. Ça, c’est fait ;)

1 - Activation de la console

Pour commencer, il faut utiliser Zelda, Twilight Princess pour installer une chaîne supplémentaire dans le menu Wii. Je ne m’étends pas sur le procédé, les deux liens précédents expliquent clairement comment faire.

2 - Installation du kit de développement

Il faut ensuite installer DevKitPro, un portage de Gcc & co pour l’architecture de divers consoles. Une fois de plus, c’est vraiment bien fait, il y’a des binaires pour toutes les architectures, donc ça s’installe facilement. Il y a même quelques exemples à compiler et à lancer directement avec wiiload, un utilitaire qui envoie un binaire depuis un PC vers une Wii sur la chaine Homebrew, via intranet. Ça peut paraître déroutant, mais c’est vraiment facile à faire fonctionner, il suffit de suivre les tutoriaux.

C’est tout pour ce soir. Le prochain billet parlera de l’utilisation de la WiiMote et contiendra de vrais morceaux de code, cette fois.

Tags: , ,

Comments Pas de commentaire »

Bienvenue sur la nouvelle version de mon site.
Après des années de “je fais tout à la main” et de “Vi > tout le reste”, j’ai enfin cédé aux sirènes du Web 2.0. Et je dois admettre que je ne regrette pas du tout. Wordpress est vraiment un excellent outil. Et même s’il a fallu hacker un peu de PHP pour en arriver à ce résultat, ça s’est mieux passé que prévu.

Voilà la liste des plugins utilisés :

Le thème est la version française de ColorVoid.

Il ne reste plus qu’à développer ce site. ;)

A bientôt !

Tags:

Comments Pas de commentaire »