PDA

Voir la version complète : [NDS][Tutorial] Développer sur Nintendo DS pour les nuls


Dr.Vince
28/08/2006, 13h53
Développer sur Nintendo DS pour les nuls

Le but de ce tutorial est de présenter rapidement les différentes notions à connaitre pour développer sur Nintendo DS.
En aucun cas il ne s'agit de cours de programmation.



Introduction

Pour développer un jeu ou une application sur NDS, vous aurez besoin de connaissances en langage de programmation.
Les différents langage utilisés sont les suivants : C, C++ et ASM.

Le plus courant est le C. Vous trouverez de nombreux tutoriaux sur ce langage à travers le net.
voici quelques adresses utiles :

- http://www.commentcamarche.net
- http://www.developpez.com
- http://www.siteduzero.com
- http://www.google.com

En plus, voici une liste non exhaustive d'ouvrages de références(*) pour apprendre le langage C :

- "Le Livre du C premier langage" de Claude Delannoy
- "Le langage C" de Claude Delannoy
- "Programmer en langage C" de Claude Delannoy
- "La référence du C norme ANSI/ISO" de Claude Delannoy
- "Programmer en langage C : Cours et exercices corrigés" de Claude Delannoy
- "Le langage C, norme ANSI" de Kernighan (pour changer :p )

(*) Ces ouvrages ont été suggérés par les différents codeurs du forum.



Et ensuite ?

Maintenant que vous maitrisez parfaitement le C, voyons ce dont vous avez besoin pour développer sur NDS.

Pour cela il va vous falloir un "logiciel" : devkitpro. Vous pouvez le trouver à l'adresse suivante : http://www.devkitpro.org

En fait il ne s'agit pas d'un logiciel, mais d'un package regroupant tout ce dont vous aurez besoin :

- devkitarm : compilateur PC->ARM
- msys : permet de compiler via un makefile
- libnds : une librairie bas-niveau permettant de manipuler plus facilement la NDS


Il vous faudra également un éditeur de code. Voici une liste des plus utilisés :

- Programmer’s Notepad (http://www.pnotepad.org)
- Eclipse (http://www.eclipse.org)
- Visual Studio
- N'importe quel éditeur de texte...



Particularité du développement sur NDS

Développer sur NDS n'est pas la même chose que développer sur PC. Les fonctions offertes par devkitarm ne sont pas les mêmes, surtout en ce qui concerne l'I/O.

Je vous conseille de jeter un oeil sur les différents sites de la partie ressources pour mieux comprendre ce dont je parle.



Lib ou PAlib, telle est la question ?

Une librairie haut-niveau existe pour développer facilement sur NDS. Elle a été créée par un membre du forum, Mollusk : il s'agit de PAlib.

Elle vous offrira toutes les fonctions nécessaires pour développer un jeux ou un programme sur NDS sans vous soucier des problèmes de hardware. Mais de ce fait, elle ne vous permettra pas d'exploiter pleinement la puissance de la NDS.



Ressources

http://www.gbadev.org
http://www.double.co.nz/nintendo_ds/index.html
http://www.palib.com
http://www.drunkencoders.com
http://www.neimod.com/dstek
http://www.bottledlight.com/ds
http://www.patatersoft.info/nintendods.html
http://www.dev-scene.com/



N'hésitez pas à faire des remarques ou suggestions à propos de ce tutorial.

KCV
28/08/2006, 19h27
Merci pour ce tutorial Dr.Vince

Samote
28/08/2006, 20h19
Pour le C le site du zero (www.siteduzero.com) est votre ami.

Bobby Sixkilla
28/08/2006, 21h58
Dr.Vince, il roxxx! :wub:

"Le Livre du C premier langage" de Claude Delannoy est vraiment un bon bouquin. Je le conseille aussi. ^^

Dr.Vince
28/08/2006, 23h43
@KCV : de rien ! d'autres arriveront quand j'aurais un peu de temps

@Samote : lien ajouté

@Bobby : moi aussi je t'aime mon chou :wub:

@Staff de PA : ce serait possible d'épinglé ce tuto ? car, enfin c'est ce que je pense après c'est à vous de voir, mais ce tuto est "général" et il serait bien que les noob qui veulent se lancer dans la prog le vois direct

Bobby Sixkilla
29/08/2006, 01h11
C'est fait. :p

Chips Lay's
25/09/2006, 00h21
Sur quelle site on peut commander un de ces livres ?

Dr.Vince
25/09/2006, 00h33
sur gogole (http://www.gogole.com)par exemple ??

omg
26/09/2006, 11h59
Merci! Je vais commencer à m'en servir d'ici peut.

van_tiberium
14/12/2006, 14h13
Je remonte ce lumineux topic :)

Je me suis enfin décidé à me mettre sérieusement à la programmation (si si, vraiment, depuis mon dernier topic de juillet :D )
Je lorgne du côté du développement amateur en général, mais aussi du côté (ça tombe bien, c'est le but du site) du homebrew GBA/NDS.

La question va sembler un peu étonnante vu que la réponse est déjà connue et correspond aux spécificités techniques de la plate forme de Nintendo, mais est-ce encore raisonnable d'apprendre le C en 2006 ?

Sur pas mal de site et chez les bidouilleurs d'applications (et de jeux), on voit de plus en plus de projet sérieux en Python, avec l'appui de lib tel Pygame ou SDL.

On serait sur un forum de dév de projet pour PC (en général), je pense que la question aurait tout son sens, mais jusqu'à preuve du contraire, les GBA/NDS sont programmable uniquement en C... pour l'instant.

Donc vous voyez, suis-je impérativement bloqué par le C pour le dév sur GBA/DS.
Des projets de portage ou des compilateurs pour Python/SDL/etc sont-ils prévus ou envisageable ?
Certes, le C est universel, mais j'ai pu lire que certains programmateurs chevronnés refusait de revenir sur le C depuis qu'ils mettent en oeuvre du Python.

En outre, l'apprentissage de ce langage, avec des docs du type "Apprendre à programmer par le langage Python" chez O'reilly, parait nettement plus motivant que les ouvrages de Delannoy sur le C.

Pas facile n'est ce pas... :unsure:

Lazarus
14/12/2006, 14h42
Ben je dirais que j'ai commencé le dev il n'y a pas longtemps, et par le C, et graces aux portables de Nintendo, et que c'est n'est pas bien compliqué.
Je pense que tout langage n'est pas une perte de temps dans la mesure où ca développe quand même une certaine logique de programmation/conception qui te servira tôt ou tard ailleurs ou avec un autre langage.

Il y a une lib SDL portée sur DS, mais je suppose qu'elle fonctionne essentiellement en mode 8/16bits, donc tout en software, et je trouve ca quand même dommage de programmer sur une console qui n'a qu'un processeur de 66Mhz sans utiliser au maximum les capacités (4 fonds et 128 sprites en hardware par écran, de base, c'est quand meme une énorme puissance de calcul économisée par rapport au SDL, non ?)...

Ensuite, on parle de Python (encore que) et aussi de .Net (qu'on aime ou qu'on soit contre, ca reste pas mal du tout), et pour le .Net, si tu connais le C, le C# sera un jeu d'enfant et je pense que c'est pas plus mal...

Quand à savoir s'il y a des tutos pour le C... j'ai vu énormément de tutos, de tous niveaux, donc je ne pense pas que ce soit un soucis ;)

Arcadia
14/12/2006, 15h06
En outre, l'apprentissage de ce langage, avec des docs du type "Apprendre à programmer par le langage Python" chez O'reilly, parait nettement plus motivant que les ouvrages de Delannoy sur le C.


:disgust1:

Je n'ai pourtant que très rarement vu de livre plus instructifs et extremement bien rédigés que les ouvrages de Delannoy. Certes y'a pas de zolies images en couleurs, mais il va directement à l'escenciel sans omettre des bases importantes. Tu as lu ne serait-ce qu'un chapitre avant de dire ça ?...

Coder en C ce n'est pas une tare. Maintenanct si tu veux coder en Python et bien fais le, mais ne remets pas en cause un langage qui existait bien avant toi et qui servira encore à pas mal de codeurs pendant des années, certes des codeurs amateurs pour la plupart...

Comme le souligne Lazarus, qu'importe le langage, ce qui compte, c'est d'aquerir une logique de programmation. Cette logique tu l'adaptes ensuite au langage utilisé. Il n'y a jamais de perte de temps en programmation, surtout pas en C.

Y'a pas possibilité de coder en Python sur GBA/DS ? Bah alors, soit tu crée un compilateur, soit tu attends qu'un autre le fasse, soit tu agis et tu code en C parce que pour le moment, y'a pas tellement de choix. Ah un moment faut faire un choix, et mettre de coté les questions existancielles....


[EDIT] Y'a possibilité de coder en assembleur aussi. Mais là tu va me dire que c'est encore plus dépassé...

MIKEGBA
14/12/2006, 15h56
Donc vous voyez, suis-je impérativement bloqué par le C pour le dév sur GBA/DS.



Ah, ben si t'es bloqué avec le C sur nintendo, va faire un tour sur mon tuto assembleur ! ( http://www.playeradvance.org/forum/showthread.php?t=4537 ) :lol:

Mais bon comme l'a dit Arcadia, va falloir agir, parce que sur les consoles, c'est C, C++ et ASM... donc ACTION->REACTION

et c'est pareil sur xbox 360 et consors donc.... oui le C mes semble tout à fait d'actualité en 2006 :)

Toomagic
14/12/2006, 17h57
On ne critique pas les livres de Delannoy qui sont exellent (quoique je ne suis jamais allé au bout d'un seul) mais ils sont très instructifs et trés bons que je te recommande bien que je ne sois pas encore un programmeur sur ce bonne chance !!

van_tiberium
14/12/2006, 18h24
Je me suis mal fait comprendre.

Je ne dénigre pas le C ni les ouvrages de Delannoy qui sont d'une qualité indiscutable (et donc j'ai déjà son Initiation à la programmation...)

Je vérifiais juste, et j'ai eu ma réponse, s'il était encore possible de tourner autour du pot, et de se passer du C. Mais manifestement non.

Donc je crois que pour noël, je vais acquérir - "Le Livre du C premier langage" et "Programmer en langage C : Cours et exercices corrigés " de Claude Delannoy.

C'est le kit parfait du débutant je crois non ?

Lazarus
14/12/2006, 18h56
Le Livre du C premier langage je l'ai pas trouvé extra (si c'est bien celui auquel je pense), en tout cas dans le cadre du dev DS

Arcadia
14/12/2006, 19h19
Et puis un seul livre sur le C suffit amplement je pense. Tu peux complêter tes connaissances par des tutos sur le web, des exemples, etc...

Sérieux, on est plusieurs sur ce forum à avoir débuté le C avec les ouvrages de Delannoy et on en est tous content (enfin à une époque il faisait l'unanimité). Je ne me souviens plus du titre du livre qui m'a "instruit", je l'empruntais à la bibliothèque il y a 10 ans...

Sur ce bon courage :)

van_tiberium
14/12/2006, 23h18
En fait, les deux ouvrages sont en "pack" sur amazon, et les lecteurs les conseillent, l'un complétant l'autre.

En matière de tuto, celui du site du zéro est vraiment très bien fait.
http://www.siteduzero.com/tuto-3-8-0-apprenez-a-programmer-en-c-c.html

pilatomic
06/02/2007, 16h05
je sens que je vais avoir l'air bete mais j'y connais rien !!! Bon, je me lance : c'est quoi la diférence entre un .nds ,un .sc.nds, un .ds.gba et un .gba ( j'ai cru comprendre que les 2 dernier c'était pour la gameboy advance mais a part ça ....) Quelqu'un peu m'aider :-'

LaBoule
06/02/2007, 16h29
je sens que je vais avoir l'air bete mais j'y connais rien !!! Bon, je me lance : c'est quoi la diférence entre un .nds ,un .sc.nds, un .ds.gba et un .gba ( j'ai cru comprendre que les 2 dernier c'était pour la gameboy advance mais a part ça ....) Quelqu'un peu m'aider :-'

alors je vais tenter de répondre :
un .nds c'est un fichier rom (jeu commercial ou homebrew) pour nintendo ds.
Un .sc.nds, c'est le même fichier que .nds mais passé par le logiciel supercard afin qu'il puisse se lancer sur une supercard.
Un DS.gba, je ne suis pas certainpour celui-ci mais je pense que c'est le même fonctionnement que le sc.nds
Un .gba, bah c'est un fichier rom (jeu commercial ou homebrew) pour gameboyadvance.

Dr.Vince
06/02/2007, 18h40
arf petite correction du post précédent :

un .nds : c'est la rom compilé comme une rom commerciale, c'est celle-ci qui est utilisé par un émulateur PC
un .ds.gba : c'est la rom compilé pour nos chers amis les linkers, genre supercard
un .sc.nds : c'est le même fichier que le .ds.gba, on chnage juste l'extension car la SC lit que les .nds, ça évite donc de renommer le fichier
un .gba (ou .bin) : c'est une rom GBa, pour émulateurs/linkers

Pitt
06/02/2007, 19h11
arf petite correction du post précédent :

un .nds : c'est la rom compilé comme une rom commerciale, c'est celle-ci qui est utilisé par un émulateur PC
un .ds.gba : c'est la rom compilé pour nos chers amis les linkers, genre supercard
un .sc.nds : c'est le même fichier que le .ds.gba, on chnage juste l'extension car la SC lit que les .nds, ça évite donc de renommer le fichier
un .gba (ou .bin) : c'est une rom GBa, pour émulateurs/linkers
En fait, .bin c'est une rom brute, sans header. Pas forcément GBA, d'ailleurs. Le .gba est une rom .bin avec le header GBA.
Et le .mb.gba c'est un .bin avec le header GBA + le header multiboot ... :S
M'enfin on s'éloigne du sujet, là ... :p

pilatomic
06/02/2007, 19h14
merci parce que je ne comprenait pas pourquoi il y avait plusieurs fichier pour un seul jeu. :-'

mesrine_29
06/03/2008, 18h16
Merci pour ces tutos

D-bj
15/04/2008, 11h30
Bonjour je suis nouveau ici et dans la prog et je voulais savoir si vous pouviez me donnez des definitions sur des termes comme "sprites", merci

D-bj

archipel
15/04/2008, 13h00
Sprite c'est plus qu'une boisson, c'est un frisson:)


vive wikipedia ou google (2 secondes pour trouver) ;) http://fr.wikipedia.org/wiki/Sprite_(jeu_vidéo)

Bobby Sixkilla
16/04/2008, 00h03
Ecrire en gras, c'est mal poli...

croknoks
13/08/2008, 22h21
Salut à tous.
Voila je voudrai me mettre à la programmation pour DS mais j'ai un petit soucis.
L'installateur de devkitpro plante ... et ce tout le temp au même endroit : lors de l'extraction de dswifi-0.3.4 ...

Est-ce deja arrivé et avez vous une idée pour pouvoir continuer l'installation (autre que désactivé l'installation de la lib wifi ^^) ??

Merci d'avance

[EDIT] Trouvé ^^ l'archive d'installation faisait 0Ko :s