Tests

Détecteur de mouvement pour Nintendo DS

Après avoir acheté la version GBA de l'accessoire de Keith Epstein, voici que ce dernier nous livre une version pour Nintendo DS.

Comme déjà expliquer sur GBA, cet accessoire permet de détecter les mouvements et donc de les retranscrire dans nos homebrews. Les applications peuvent être multilples au niveau jeu avec ce genre d''outil.

La jouabilité devient vraiment différente et je me souviens encore de SpoutGBA qui prend une toute autre dimension avec l'accélèromètre.

Liens

Site de l'auteur : http://www.ndsmotion.com
Site de vente : http://www.dspassme.com (aux USA) et http://www.ic2005.com (à Hong Kong)
On peut maintenant se le procurer en Europe sur le site http://shop.01media.com/info.asp?ProductID=33353
[17/02/2007]Pour la france, il est maintenant disponible au prix de 28euros sur http://www.metashop-fr.com
Forum : http://forum.gbadev.org/viewforum.php?f=22 (en Anglais)

Ce dernier contient un accéléromètre triaxial et un gyroscope simple-axe. Il se loge dans le slot1 de la DS et fonctionne aussi bien sur DS Fat que DS Light. L'accélèromètre mesure les mouvements dans toutes les directions et le gyroscope la vitesse de rotation par rapport à un axe perpendiculaire à l'écran du bas de la DS, on peut ainsi gérer le tilt dans des jeux comme les flippers ^^.

C'est, à l'heure actuelle, le seul accéléromètre tri-axes qui peut être employé pour le développement hombrews sur DS. Sur le site de l'auteur, on peut trouver le quickstart guide de cette version DS (comme on avait aussi le quickstart guide sur GBA ...).

Contenu

Le DS Motion m'a été livré dans sa boite définitive et on peut dire qu'il ne risque rien car cette dernière est très solide.

Il n'est pas contre livré avec aucun CD ou documentation, il faut donc se rendre sur le site de l'auteur et télécharger le QuickStart guide pour connaître la façon de le faire fonctionner. L'auteur a préféré cette méthode pour éviter de faire grimper le prix du DS Motion.

Le DS Motion est de même taille qu'une carte DS, un peu transparent, ce qui permet de voir, à l'arrière, le circuit imprimé et les composants de ce dernier ^^.

Il faut savoir que le DS Motion n'est pas un PassMe, il prend donc la place de ce dernier dans le slot1. Il se loge parfaitement dans le Slot 1 et ne dépasse pas (la photo ci-dessous le montre non encore inséré complétement).

Comment faire fonctionner nos homebrews me direz-vous ? Il faut donc avoir une DS flashée ou retirer son passme une fois le programme lancé. N'ayant pas de DS flashée (et ne voulant pas les flasher !), c'est donc cette dernière solution que je vais utiliser avec ma DS Lite et mon M3.

J'ai donc testé les quelques programmes du site de l'auteur. Le premier, l'adaptation de SpoutDS ne fonctionne pas chez moi car il utilise une ancienne librairie fatlib qui ne reconnait pas mon M3 ...

Les 2 autres, WaterDrops et DSaSketch fonctionnent très bien et les réponses du DS Motion aux mouvements sont formidables sur WaterDrops ! J'avoue avoir plus de difficultés à bien gérer le mouvement sur DSaSktech, adaptation simple de l'ardoise magique.

Programmation du DS Motion

Le QuickStart guide contient en fait 2 fichiers ndsmotion.c et ndsmotion.h à inclure avec ses développements pour l'appel à toutes les fonctions permettant de connaître l'état du DS Motion.

// waits while SPI transfer is taking place#include <nds.h>
#define CARD_WaitBusy() while (CARD_CR1 & /*BUSY*/0x80);
// enables SPI bus at 4.19 MHz#define SPI_On() CARD_CR1 = /*E*/0x8000 | /*SEL*/0x2000 | /*MODE*/0x40 | 0;
// disables SPI bus#define SPI_Off() CARD_CR1 = 0;
// sends and receives 1 byte on the SPI busunsigned char SPI(unsigned char in_byte);
// turn on the accelerometervoid enable();
// read the X accelerationsigned int readX();
// read the Y accelerationsigned int readY();
// read the Z accelerationsigned int readZ();
// read the Z rotational speedsigned int readGyro();
// check whether a DS Motion Card is plugged inint check_ndsmotion();

Le nom des fonctions est, je pense, assez clair et permet de se faire une idée de ce que l'on doit utiliser dans ses homebrews pour faire fonctionner le DS Motion. Le fichier main.c, livré en exemple, permet de comprendre aussi à quel moment on peut utiliser telle ou telle fonction.

Il faut aussi savoir que la dernière version de libnds (compatible devkitpro r20) contient la gestion du ndsmotion (il faut inclure le fichier ndsmotion.h). Les fonctions sont alors nommées motion_xxx.

J'aime ce genre de produit qui permet de changer notre manière de jouer sur console (comme pour la Wii et sa télécommande). Il va de soit que, comme pour GBA, il ne demande qu'à se développer et c'est à nous, auteurs de Homebrews de permettre ce développement.
Donc, un achat conseillé, en espérant que de plus en plus de Homebrews vont le supporter.

Points forts

+ Se loge dans le Slot1 de la DS
+ Modification mineure des sources pour le faire fonctionner
+ Très bonnes "sensations" dans les jeux

Points faibles

- Ne fait pas PassMe
- Peu de compatibilité à l'heure actuelle

Merci à Keith de m'avoir envoyé gratuitement cet exemplaire pour le test.