Il est peut-être un peu tôt pour écrire un article sur le homebrew NDS, mais les choses commençant à s'accélérer, un article résumant les ténants et aboutissants du homebrew est le bienvenu.
Et pis le homebrew Nintendo, c'est aussi une fantastique aventure de bricolage, bidouille et autre :) .
Homebrew ? Késako ?
Homebrew $$À l'origine, le terme homebrew ("brassé à la maison") était utilisé pour les bières faites maison, justement. Les programmeurs seraient-ils des alcooliques ? ^^$$ est le terme utilisé pour le développement de logiciel non-officiel (le plus souvent des jeux) pour console.
Le homebrew n'est pas tout récent, vu qu'on trouve les premières traces d'homebrew vers le début des années 90 sur Atari 2600 (et ils sont toujours actifs sur cette plateforme ^^). Outre l'Atari 2600, on peut trouver du homebrew sur quasiment toutes les consoles, la NES, la GBA et l'Atari 2600 étant les plate-formes les plus utilisées (selon wikipédia).
Le développement homebrew est également et évidemment très lié au piratage, les développeurs en herbe devant trouver un moyen de contourner les protections mises en place par les constructeurs, et ce faisant, ouvrir la porte à des dump sauvages de jeux. Il faut également préciser qu'il est évidemment beaucoup plus aisé de tester son bout de code sur le PC avec un émulateur que sur la console (même si la finalité c'est de le faire marcher sur console ^^).
L'homebrew étant très borderline, je n'essayerai de ne pas trop parler piratage.
Exécuter du code maison sur NDS
Il est tout a fait possible d'exécuter du code homebrew via le mode GBA de la NDS, (et avec une des nombreuses cartouches flashable disponibles sur le marché). Mais du code lancé en mode GBA n'utilisera qu'un seul des deux processeurs de la NDS [1] . Pour utiliser l'autre processeur, les développeurs ont du passer par un moyen ésotérique : ils passent par une cartouche NDS modifiée pour exécuter du code DS qui se trouve sur la cartouche GBA (la technique est appelé Passthrough).
Vous allez me dire, pourquoi ne pas directement utiliser la cartouche NDS ? Simplement parce que la NDS crypte ses données après que le lancement de la cartouche NDS soit lancé. Les cryptages modernes étant difficilement crackables, cette méthode est privilégiée par les gens de la scène.
Vu qu'effectuer ces bidouilles sur une cartouche est aussi laborieux que d'essayer de comprendre les femmes (euhhh... :P), et que le risque de griller une cartouche officielle est toujours présent, un dispositif facilitant le Passthrough a été créé et très justement baptisé "PassMe". Celui-ci utilise un PCB librement vendu dans le commerce, donc exit le sacrifice d'une cartouche.
Outre le PassMe, un autre moyen est possible pour exploiter la technique du Passthrough : le WiFi. Ce qui me mène à la deuxième partie du dossier.
WiFi
Il ne faut pas oublier que la NDS est compatible avec la fameuse norme IEEE 802.11, plus connue sous le nom de WiFi. Celle-ci n?est actuellement pas utilisée pleinement [2] (le multijoueur est assuré par le NiFi, un format propriétaire de Nintendo, qui serait une sorte de surcouche du WiFi).
Ce qui n'a pas retenu les gens de prendre leur récepteur WiFi et d'analyser/décoder/extrapoler/tirer des conclusions (d'ailleurs le post sur gbadev.org est assez impressionnant, autant au niveau du nombre de posts (31 pages, presque pas de flood) que du contenu)
Les recherches ont abouti au "WifiMe", qui permet d'exploiter la même faille que le PassMe. Cela paraît peut-être être une broutille, mais la chose est un véritable tour de force.
Petite parenthèse : on pourrait avoir l'idée d'envoyer du code homebrew via le WiFi, mais cela se révèle impossible. Pourquoi donc ? La DS utilise une vérification avec un cryptage RSA 1048 bit pour envoyer des données via WiFi. À ce jour, ce type de cryptage est virtuellement impossible à cracker [3] Mise à jour {30/04/05): en modifiant le firmware, il est possible d'enlever cette vérification. Miam :).
Mais qu'en est-il alors du tunneling [4] ?
Tunneling
La DS supporte le WiFi, mais pas toutes les couches du modèle OSI [5] (la norme WiFi décrivant une partie de la couche 2). Ainsi, la DS ne supporte pas nativement la couche de transport (TCP ou couche 3), et sa couche réseau (couche 4) est propriétaire (le NiFi, c'est ça).
Les gens de GBAdev.org ont conclu qu'il existe 2 moyens d'ajouter ces couches : via une cartouche ou via une mise à jour du firmware.
L'ajout de la couche via une cartouche sera logiquement le moyen utilisé par les jeux qui supporteront le mode Online : les bouts de code nécessaires au support de la couche 3 et du protocole IP (qui est la couche 4 que tout le monde utilise) seront intégrés directement sur toutes les cartouches devant pouvoir communiquer avec internet.
Cette dernière solution est difficile à mettre en oeuvre si l'on veut tunneler des jeux qui ne sont pas par défaut online: il faudrait patcher le jeu, ce qui n'est pas à la portée d'une tierce partie.
L'autre solution peut venir du firmware [6] . En effet, en ajoutant les couches manquantes en updatant le firmware, tout devient possible ! Et vu que le moyen de flasher le firmware a récemment été découvert, l'avenir s'annonce prometteur :) .
Les folles spéculations de tonton PetitPrince
Bon c'est pas tout, mais concrètement, qu'est-ce qu'on peut attendre du futur ? J'ai fait une petite liste ^^ :
- Dessin : DSPaint (ce lien faute de mieux) le fait déjà, mais euh on peut espérer moult tweakage, comme une gestion de calque, plus de couleur... (c'est beau de rêver)
- Agenda : il est sympa le calendrier de la DS, mais si on pouvait ajouter des évenements, ce serait mieux !
- Tunneling : même si les problèmes de lag et autre sont évidents, on peut toujours garder un espoir?
- Internet : naviguer sur la toile, checker ses mails, communiquer via IRC (voir MSN avec le handwriting) serait top.
- Virer l'alerte de santé et de sécurité au démarrage: c'est l'une des priorité des homebreweur ^^ (mais c'est vrai que c'est chiant)
Lien!!
Envie d'en savoir plus ? Voilà quelque liens:
- Forum GBADev.org, section DS: véritable creuset du homebrew NDS, c'est ici que se déroulent la plupart des avancées
- DSLinux: Linux est partout ! Après l'iPod et les téléphones portables, une poignée de codeurs fous veulent eux aussi transposer leurs OS préférés sur la NDS.
- NDSTech Wiki: le wiki des gens qui veulent leur DS.
- Natrium42's blog le blog du "papa" du PassMe.
- Darkfader's Site & Blog: celui-là a dumpé[7] le firmware de la NDS
- Darkrain et celui-ci est particulièrement intéressé par la communication sans-fils de la DS