so just to get it straight first of all how can a ds have a single processor that has two different types of cores?
Both processors are connected through an APB/AHB bus (ARM "model" to badge hardware together to their ARM cores):
http://www.differencebetween.net/technology/difference-between-ahb-and-apb/
Then each core runs their own bootcode and interrupts. The IPC FIFO hardware is a hardware unit which allows to send "mailing" words (4 bytes, unsigned 32bit) from an ARM Core to another, and there are events when the "mail box" is either full or empty (both trigger an interrupt on both ARM cores, depending what kind of "mailbox" event happened will generate an IRQ to the desired processor). This is unlike today's SMP design, but my take is that ninty tried to maximize their findings on what I wrote earlier about the "task context", and move it to a hardware design, while retaining minimal power consumption. This means, coding properly an application could work very well while retaining power saving features.
Second nds loaders are basically the homebrew version of Nintendo's SDK tool?
The SDK is a Software Development Kit. A NDS Loader is just bootcode supporting filesystem (through DLDI) so you can relaunch a NDS homebrew binary
while retaining some flags on the NDS Header section, also SDK binaries could have compressed code sections... while the homebrew one uses the minimal definitions to boot a homebrew binary.
And third are FPGA commands officially used by Nintendo or are they only a homebrew command
FPGA could have been used by Nintendo at some point but they use ROM for retail carts. Also they use NitroROM / NARC (
https://problemkaputt.de/gbatek.htm#dscartridgenitroromandnitroarcfilesystems) as a filesystem layer around their SDK. This means cart commands (through the SPI bus) aren't really FPGA, but NAND flash-like commands (
http://www2.lauterbach.com/pdf/nandflash.pdf) but if they used FPGA in their development systems I wouldn't be surprised. FPGA allows more flexibility over tasks you can do while connecting more hardware, given BUS constraints.
Look around the web for "Serial Peripheral Interface". The DS uses it to connect to various hardware such as the RTC, the Touchscreen and the Flash NVRAM memory (Wifi + NDS bootloader)
lso does the DLDI Layer play a big role in loading ds homebrew?
Yes it does. For instance I have no idea if a newer R4i card 2020 will emerge tomorrow, but as long the DLDI init / read / write methods are working, the card is guaranteed to work with NTR homebrew. Thanks to Chishm's the DLDI section can be detected if a NTR homebrew uses DLDI, so you can dump the DLDI section into a file, and use it to patch other NTR homebrew that may have DLDI issues / not working. That way as long you have the DLDI binary, the homebrew nds loader can inject it into the upcoming next-to-load ntr homebrew, and use it to enable SD access, so the NTR homebrew can use SD. (that process is almost taken for granted for anyone loading a NTR homebrew binary)
Also by any card having DLDI R/W capabilities you mean flash cards right?
Yes, the DLDI driver has a read command and a write command (required for performing any kind of write operation back to SD card filesystem, such as saving your game from within an emulator)
And is ninjapass9xd a homebrew loader?
The Ninjapass X9SD I use it as a test case for almost all NTR homebrew coding, because it was one of the first SLOT-1 enabled "flashcards" back in 2008, it is buggy and the DLDI driver is unstable, and slow. I can safely say anything working on a X9SD (short for Ninjapass X9SD) will work everywhere.
Well, also Nintendo code is great in some NTR games, because even if that card is slow, their code was usually LZSS compressed thus as result, assets, programs streaming from SD card ended up being faster even on that card. Being 2019 and FPGA in NTR flashcards are very fast, so this isn't an issue anymore...
Sorry one last thins is the fat fs driver used for fat32 support?
Indeed. In fact FAT12/FAT16 was common back in 2008, and fat fs driver still missed some FAT12/FAT16 stuff (of which
@Gericom fixed) in gbarunner2, and yeah it allows also for mounting FAT32/EXFAT partitions in NTR homebrew.