I really enjoyed learning to program for the DS, however I found some serious limitations to doing homebrew DS programming. Most of these problems would very likely be fixed if we had been able to get access to official devkits, however.
The first major problem was actually getting the hardware. I had a DS from day one, but I didn't actually get the hardware I needed to put my code on the DS until about a week ago. As of yet I still haven't been able to test the code on the actual hardware, but I hope to get that working in time for the demo night tonight.
Another major problem is the buggyness of the available emulators for the DS. I found code that would work on one emulator would crash another one. I also had trouble getting sprites to work, and at the last minute I finally figured out that the version of Dualis I was running didn't seem to support sprites. I downloaded the latest version, which did
support sprites, only to discover that stylus.release had completely stopped working. At that point I had to refactor all my code to use stylus.press instead, which meant putting in my own code to prevent things from happening multiple times while the stylus was down.
Yet another problem is the lack of any really professional libraries or engines. When we started everyone was having trouble with sprites until someone discovered PALib. Although PALib did help, and is probably the best thing currently available to DS homebrew developers, I quickly found out that it has major shortcomings of it's own. The available functions were extremely limited (I couldn't even find any functions to show or hide sprites), and the sound functions especially were extremely disappointing. There is no way to currently check for the end of a sound (despite the fact that the hardware supports it), I was unable to get MOD files to play at all (it would rush through the entire song in about a second), and raw files created in Sound Forge Professional 8 (or in a free program called Switch which was recommended on a PALib tutorial site, since I tried that too) were having their sizes misreported, and I was forced to divide that by 2 in many cases, since otherwise it would play beyond the end of that sound file and play either a completely different sound file or random noise.
Despite all that, I enjoyed programming for the DS. The stylus, dual screens, and other features let you do some really innovative things. Although I know the DS supports OpenGL, I never even needed to sit down and learn that, since I was able to do everything with sprites, backgrounds, and simple PALib text and drawing functions. This allowed me to focus more on the gameplay, which I really enjoy. I focused on that first, and then worked on the audio, and only in the end added the graphics to make the game look nice.
Well, as of now it's 8am and I've been up all night working on this. I have one last bug I need to fix, so I may not get the final source code and executable up by 10, but I will have it up by the end of the day.