*** Welcome to piglix ***

Libfat


libfat (with a lower case l) is a FAT library made by Michael "Chishm" Chisholm for the Nintendo DS to code Nintendo DS Homebrew applications. It is the successor of the dual GBA NDS FAT library, which was also used, like libfat, to code Nintendo DS Homebrew applications. It is packaged as part of DevKitARM, a software development kit, or Devkit for ARM microprocessor microprocessors namely the ARM7TDMI(-S) and ARM946E-S cores used in the Nintendo DS.

It is a replacement SDK (Devkit) for the commercial Nintendo SDK. It is a minimalist-style library, easier to use than the Nintendo SDK. Libfat, like libnds, supports nearly all features of the DS including touch screen, microphone, 3D hardware, 2D hardware, and IEEE 802.11b Wi-Fi via the dswifi library. Multiple slot booting is a feature unique to libfat.

DLDI (or Dynamically-Linked Device Interface) is a technology created by Michael "Chishm" Chisholm as an interface for libfat that developers attach to their projects. libfat is programmed in a single language, but different flashcarts, such as the R4DS, use different read/write commands. The DLDI Patch fixes this, as explained below.

Without DLDI, libfat receives encrypted commands from the flashcart, and cannot act accordingly, so it sends an error to the homebrew explaining that it cannot understand the commands, which then presents this information to the flashcart, and the user, in the form of a black screen.

With the correct DLDI patch applied to the homebrew, the DLDI patch acts as an interface between the flashcart/user and the homebrew. It unencrypts the flashcart's specific read/write commands and converts them into a libfat-specific programming language, which libfat can understand and present the homebrew with information which can then be passed onto the flashcart/user.

libfat, like any FAT library, uses a main source file. The library's operations are conducted by a single fat.h file in the source file with the code:


...
Wikipedia

...