the start of nds programming coming from "normal" programming is a bit steep, due to the low level things with makefiles and images....
my first applications was an OpenGL thing, with models imported from BLENDER (with the export Python script)
but OpenGL on the nds is sort of special feature...
then i reshaped a program just to show pictures above and some text below, a sort of slide show, or presenter
then i bounced against the wall of the makefile
i was recoiled into sprites,
happened to stumble into tiles and maps
etc etc etc
emulators can be found...everywhere, i used DUALIS, now NO$GBA.EXE, sometimes: ideas.exe.
the best experiences lately with
NO$GBA.EXE
http://www.emulator-zone.com/doc.php/gba/nocashgba.html
nearly all tuto's on the web about nds programming are not really finished, some stopping with sprites, others (sort of like this sentence) you have to scramble and try out, the list below is about the best there is...
this is just a page where to find some readable (sometimes partial) tutorials
installing devkitpro is well covered
in devkitpro all kind of examples are given
the main problem of nds programming is the setting up, after that it becomes more and more just depending on yourideas and programming skills
so first....
grit, gfx2gba.exe, PAGfx
backgrounds, tiles, maps, sprites, palettes
VRAM, memory banks, registers, MODE
then you can start wth your game and it becomes familiar OO...
Oh yes i forgot: you have to have something to run your program on, inside the DS, i wanted to have an R4, but that was not available and opted for a fire link card, this proved to be fine, having a direct USB link to the PC, and acting like an exteral hard disc. Some programs won't work, but ok....
Memory 1 GB, seems to be a lot for these small progs.
All kinds of pages about these cards, nearly too much.....
Oh yes, most of the programming is done in C, although PALIB can be done in C++...
but making sprites and nice maps is much more difficult! The planning becomes so important!
//---------------------------------------tuto's-----------------------------------------------
homebrew (problem: info seems good but not all seems to work ...due to my fire link card???)
http://liranuna.drunkencoders.com/nds-2d-tuts/
nice soft intro to getting tiles and maps into the nds (runs inside devkitpro)
but the way it is programmed is quite different, older? then the devkitpro examples
a very worthwhile manual:
http://patater.com/files/projects/manual/manual.html
http://www.dev-scene.com/NDS/Tutorials_Day_1
of course this is very good, but this sequence stops at sprites, just where it matters most!
this seems to cover a lot, but it uses GIMP with a Python script i cannot find (for windows)
http://www.dspassme.com/programmers_guide/tutorial/
specifications
http://nocash.emubase.de/gbatek.htm
this explains why and what about sprites, and these sprites seem to be a lot of work, but fun!
http://osdl.sourceforge.net/main/documentation/misc/nintendo-DS/graphical-chain/OSDL-graphical-chain.html
coming from here:
http://osdl.sourceforge.net/main/documentation/misc/nintendo-DS/homebrew-guide/HomebrewForDS.html
then there is the PALIB
http://www.palib.info/Doc/PAlibDoc%20Fr/index.html
it has something if you can develope in C++ Visual Express
PALIB tuto: http://www.palib.info/wiki/doku.php?id=day1
//-------------------------------------openGL-----------------------------------------
OpenGL examples can be found inside devkitpro, it feels like a bit of outside world in the nds programming and is pretty much like ... OpenGL :-)
//-------------------something about makefiles------------------------
http://www.coranac.com/tonc/text/setup.htm
//------------------------------------------------------------------------------------
where to find some of the main free applications:
http://dshb.50webs.com/pages/hb.htm
http://www.ndshb.com/cgi-bin/cfiles/cfiles.cgi?0,0,0,0,12,135
i like the chess program, the dsorganize and the dslinux, for a start...
//---------------------------------------to get images in right shape for sprites or backgrounds
Usenti, grit, wingrit, gfx2gba downloads:
http://www.coranac.com/projects/#usenti
//------------------------------------------------------------------------------------
short tricks: (some things not worth a whole tuto, :-)
swapping upper an lower screen (just: lcdSwap(); )
lcdMainOnTop(); //MAIN renders to top screen SUB to bottom
lcdMainOnBottom(); //SUB renders to top screen MAIN to bottom
lcdSwap(); //swap the screens the egines were rendering to