Run DLDI startup code before mounting

This commit is contained in:
RocketRobz 2018-10-10 15:53:37 -06:00
parent 14fd24703c
commit e9181a4390

View File

@ -7,6 +7,7 @@
#include "dldi-include.h"
static sNDSHeader nds;
const DLDI_INTERFACE* loadedDldi;
u8 stored_SCFG_MC = 0;
@ -174,22 +175,27 @@ TWL_CODE bool twl_flashcardMount(void) {
sysSetCardOwner (BUS_OWNER_ARM7); // 3DS fix
// Read a DLDI driver specific to the cart
if (!memcmp(gamename, "QMATETRIAL", 9) || !memcmp(gamename, "R4DSULTRA", 9)) {
io_dldi_data = dldiLoadFromBin(r4idsn_sd_dldi);
fatMountSimple("fat", &io_dldi_data->ioInterface);
} else if (!memcmp(gameid, "ACEK", 4) || !memcmp(gameid, "YCEP", 4) || !memcmp(gameid, "AHZH", 4)) {
io_dldi_data = dldiLoadFromBin(ak2_sd_dldi);
fatMountSimple("fat", &io_dldi_data->ioInterface);
} else if (!memcmp(gameid, "ASMA", 4)) {
io_dldi_data = dldiLoadFromBin(r4tf_dldi);
fatMountSimple("fat", &io_dldi_data->ioInterface);
if (!memcmp(gameid, "ASMA", 4)) {
loadedDldi = dldiLoadFromBin(r4tf_dldi);
loadedDldi->ioInterface.startup();
fatMountSimple("fat", &loadedDldi->ioInterface);
} else if (!memcmp(gamename, "TOP TF/SD DS", 12) || !memcmp(gameid, "A76E", 4)) {
io_dldi_data = dldiLoadFromBin(ttio_dldi);
fatMountSimple("fat", &io_dldi_data->ioInterface);
loadedDldi = dldiLoadFromBin(ttio_dldi);
loadedDldi->ioInterface.startup();
fatMountSimple("fat", &loadedDldi->ioInterface);
} else if (!memcmp(gamename, "D!S!XTREME", 12) && !memcmp(gameid, "AYIE", 4)) {
io_dldi_data = dldiLoadFromBin(dsx_dldi);
fatMountSimple("fat", &io_dldi_data->ioInterface);
}
loadedDldi = dldiLoadFromBin(dsx_dldi);
loadedDldi->ioInterface.startup();
fatMountSimple("fat", &loadedDldi->ioInterface);
} else if (!memcmp(gamename, "QMATETRIAL", 9) || !memcmp(gamename, "R4DSULTRA", 9)) {
loadedDldi = dldiLoadFromBin(r4idsn_sd_dldi);
loadedDldi->ioInterface.startup();
fatMountSimple("fat", &loadedDldi->ioInterface);
} else if (!memcmp(gameid, "ACEK", 4) || !memcmp(gameid, "YCEP", 4) || !memcmp(gameid, "AHZH", 4)) {
loadedDldi = dldiLoadFromBin(ak2_sd_dldi);
loadedDldi->ioInterface.startup();
fatMountSimple("fat", &loadedDldi->ioInterface);
}
if (flashcardFound()) {
fatGetVolumeLabel("fat", fatLabel);
@ -220,6 +226,10 @@ bool flashcardMount(void) {
void flashcardUnmount(void) {
fatUnmount("fat");
if (isDSiMode()) {
loadedDldi->ioInterface.shutdown();
dldiFree((DLDI_INTERFACE*)loadedDldi);
}
fatLabel[0] = '\0';
flashcardMounted = false;
}