Le DS Motion quoi ?
Vous avez très bien lu, le
DS Motion Pak (non il ne manque pas un "c"

).
Qu'est-ce que c'est ? Il s'agit d'un accéléromètre (un appareil qui mesure les mouvements de l'objet sur lequel il est fixé) pour votre Nintendo DS. Il se met dans le SLOT 2 (port GBA) et ressemble à ceci (cliquez pour agrandir) :
Il existe une version qui se met dans le SLOT 1 (port NDS),que je n'utiliserai pas dans ce tutoriel, appelé
DS Motion Card (pour ceux qui mettent leurs
homebrews sur un linker GBA) :
Bien sûr, ce n'est pas gratuit

. En effet, il faut compter 30 à 40 € pour l'un ou l'autre.
Mais je ne regrette pas l'achat. On peut contrôler des éléments, et tout ça sans bouton (donc ça nous libère des possibilités pour créer un jeu certes moins compatible, mais plus poussé). De plus, ça met une ambiance à la Wii

. Un conseil, évitez de vous faire filmer quand vous jouez à un jeu nécessitant le Motion

...
Maintenant que les présentations sont faites, je vais vous annoncer une bonne nouvelle :
PALib implémente totalement le Motion !
Tout d'abord, il faut initialiser le système Motion avec
void PA_MotionInit(void);
.
Ensuite, il faut savoir si le DS Motion Pak est inséré. Pour ça il existe la fonction
u8 PA_CheckDSMotion();
. Cette fonction retourne 0 si le DS Motion Pak n'est pas inséré ou 1 s'il l'est.
Et comment faire pour récupérer les données de l'accéléromètre ?
Il existe une variable
Motion de type
motion_struct.
Voici ses attributs :
- X : la rotation dans les X. Cette valeur varie entre -128 (droite) et 128 (gauche).
- Y : la rotation dans les Y. Cette valeur varie environ entre -134 (console verticale, vous ne voyez pas les écrans) et 114 (console verticale, écrans vers vous).
- Z.
- Vx.
- Vy.
- Vz.
- AccelX.
- AccelY.
- AccelZ.
- Zrot.
- Vzrot.
- Angle.
- Force.
Sachez que dans tous les codes utilisant
Motion, seuls les membres
X et
Y sont utilisés. Vous pouvez cependant tester les membres avec
PA_OutputText en tournant et en déplaçant votre Nintendo DS dans tous les sens

!