Some have likened DLDI to the cure for many woes, in truth it serves to help eliminate the issues that arise from having several different cards around with mutually incompatible drivers.
Originally when DS homebrew first appeared people stuck with using file systems created to contain stuff for GBA (many of you will have heard of GBFS (
http://www.pineight.com/gba/#gbfs ) or moonshells imfs).
Eventually it was found that you could read data right off the card, naturally every card decided to be different and not work with each others access routines.
As card access is fairly low level programming libraries were made so as to delegate cart reading to the libraries, the eponymous gba_nds_fat by Chism (now superseded by libfat) probably being the most renowned of the lot (there are other libraries and the DSlinux project uses their own).
Naturally not every card had access routines and sources necessary and well as the ability to play nice with other cards meaning they were not supported in the libraries and consequently homebrew that uses it.
This caused a lot of headaches on the card owners end, card reviewers end, forum viewers end, app programmers end (see all the versions of DSOrganise around) as things would have to be recompiled with new libraries (something end users are loathe to do) and it was all a mess.
Now Moonshell uses the method of having a windows installer which the user makes into a useable file for their flashcart and very recently chism added similar fuctionality to his libraries (a new version of gba_nds_fat was also made despite being an discontinued project) meaning that any app made using the new libraries has some blank space added will merely have to be patched on the users end to support their cart.
There are already versions of moonshell, DSdoom and a couple of other apps using DLDI going around and this is just one of them.
Patchers (all three major OS') and libraries required (see GBAdev and your carts support forum for prototype library discussion and downloads if one does not exist on the link below)
http://chishm.drunkencoders.com/DLDI/
DLDI is simple enough to use
visit the site:
http://chishm.drunkencoders.com/DLDI/
download the dldi file
download the patcher (I will detail the command line one as I find it simple enough)
The syntax is:
CODEdlditool
That is to say if I were to patch a file called a.nds for the R4 I would first make sure a.nds was in the same directory as r4tf.dldi and the patcher called dlditool.exe, then type
Hit enter and a few seconds later a patched app would appear, copy this to your card and do whatever else is needed for the app (copy films, roms, isos, music, pictures....)
Here is a thread with a bunch of old apps that have now had dldi support added, most apps compiled recently have dldi support added (check their forums for betas and gbatemp does a good line in posting news):
http://forum.gbadev.org/viewtopic.php?t=12146