DS roms (all the known ones at least) use a filesystem which is well known/catered for but it boils down to two main options-
1) An all in one program. Crystaltile2 is probably the most well known
http://filetrip.net/...2010-09-06.html but there are several others like tinke
http://code.google.com/p/tinke/ and mkds course modifier
http://gbatemp.net/t...ourse-modifier/ (despite the name it has some serious abilities in other areas these days) and the list goes on (there are a couple of nice tools coming out of Brazil,lowlines' the console tool and the likes of tahaxan). Compared to most crystaltile2 is a bit rough around the edges but is very powerful where the others are prettier and slightly more stable but might lack the ability to flick back and forth to get it all sorted (crystaltile2 is probably best described as a combined hex and tile editor with nice DS related features where the others are file explorers with the specs of a lot of DS formats inbuilt- a subtle difference but an important one).
2) Something capable of parsing the DS filesystem. Several options with the base version (and one most will turn to so as to pull apart a rom) being ndstool which is command line but has frontends in DSlazy and DSbuff if you do not fancy making a batch file instead. After this you have the likes of ndsts
http://www.no-intro.org/tools.htm (more of a file by file thing but worth having around) and nitroexplorer
http://treeki.shacknet.nu/ (where ndstool methods can fail to rebuild a rom properly this will usually come through) and in addition to that most of the tools in 1 can spit out several files at once onto your hard drive. With plain files and a hex editor you can start to figure out how the files are put together and edit them from there.
There are a handful of programs built for certain games although many of those are becoming more general programs and equally some programs to feed known file types or known files from games into to do stuff with. Although you can get quite far with these sorts of things you are going to want to get a tile editor (crystaltile2 or anything with 4bpp and 8bpp GBA), some knowledge of the general formats used (
http://www.romhackin...Go&title=&desc= and
http://llref.emutalk.net/docs/ has several) and some knowledge of compression-
http://code.google.com/p/dsdecmp/ and
http://gbatemp.net/t...ba-compressors/ has a nice tools for it.
Textures can be 2d paletted type, 2d bitmap, 3d material colours or 3d textured and 3d is reasonably well seen too these days as long as you do not stray far from the nitroSDK (the collection of software and formats Nintendo sends to licensed developers) stuff (I see tinke and MKDS modifier mentioned above getting pretty good at it).
Scripts can be many things up to things that range from almost be able to be passed off as a programming language to actual text files but usually they are fairly simple once you understand pointers (you have a contents page for your book- so (probably) does your rom) and basic text encoding (ever made a code A=1, B=2, C=3.......- as your computer only understands binary and by extension hex it needs such a code and they can be well known ones, variations on the known theme or completely custom).
I have however now seen the 3 new replies added thing come up and any more will start turning this into a rom hacking guide so I will point you at the one up the top of this section and
http://gbatemp.net/t...-hacking-guide/ and leave it at that for now. If you wish to have something elaborated upon do speak up.