Skip to content

Commit

Permalink
Fix soft-reset for next TWiLight Menu++ version
Browse files Browse the repository at this point in the history
ALSO: Only do SD reads on NDMA7 slot 0
  • Loading branch information
RocketRobz committed Jan 7, 2019
1 parent 732df6b commit 4111af5
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 15 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -90,10 +90,12 @@ data
bin
arm7/build
arm9/build
dldi/build
cardengine/arm7/build
cardengine/arm9/build
cardengine/arm9_sdk5/build
cardengine/arm9_exmem/build
sdengine/build
bootloader/build

# =========================
Expand Down
18 changes: 9 additions & 9 deletions bootloader/source/arm7/main.arm7.c
Expand Up @@ -358,7 +358,7 @@ static void loadBinary_ARM7(const tDSiHeader* dsiHeaderTemp, aFile file, int dsi
// Read DSi header (including NDS header)
//fileRead((char*)ndsHeader, file, 0, 0x170, 3);
//fileRead((char*)dsiHeader, file, 0, 0x2F0, 2); // SDK 5
fileRead((char*)dsiHeaderTemp, file, 0, sizeof(*dsiHeaderTemp), 3);
fileRead((char*)dsiHeaderTemp, file, 0, sizeof(*dsiHeaderTemp), 0);

// Fix Pokemon games needing header data.
//fileRead((char*)0x027FF000, file, 0, 0x170, 3);
Expand All @@ -380,8 +380,8 @@ static void loadBinary_ARM7(const tDSiHeader* dsiHeaderTemp, aFile file, int dsi
}

// Load binaries into memory
fileRead(dsiHeaderTemp->ndshdr.arm9destination, file, dsiHeaderTemp->ndshdr.arm9romOffset, dsiHeaderTemp->ndshdr.arm9binarySize, 3);
fileRead(dsiHeaderTemp->ndshdr.arm7destination, file, dsiHeaderTemp->ndshdr.arm7romOffset, dsiHeaderTemp->ndshdr.arm7binarySize, 3);
fileRead(dsiHeaderTemp->ndshdr.arm9destination, file, dsiHeaderTemp->ndshdr.arm9romOffset, dsiHeaderTemp->ndshdr.arm9binarySize, 0);
fileRead(dsiHeaderTemp->ndshdr.arm7destination, file, dsiHeaderTemp->ndshdr.arm7romOffset, dsiHeaderTemp->ndshdr.arm7binarySize, 0);

// SDK 5
if (dsiMode == 2) {
Expand All @@ -391,10 +391,10 @@ static void loadBinary_ARM7(const tDSiHeader* dsiHeaderTemp, aFile file, int dsi
}
if (*dsiModeConfirmedPtr) {
if (dsiHeaderTemp->arm9ibinarySize > 0) {
fileRead(dsiHeaderTemp->arm9idestination, file, (u32)dsiHeaderTemp->arm9iromOffset, dsiHeaderTemp->arm9ibinarySize, 3);
fileRead(dsiHeaderTemp->arm9idestination, file, (u32)dsiHeaderTemp->arm9iromOffset, dsiHeaderTemp->arm9ibinarySize, 0);
}
if (dsiHeaderTemp->arm7ibinarySize > 0) {
fileRead(dsiHeaderTemp->arm7idestination, file, (u32)dsiHeaderTemp->arm7iromOffset, dsiHeaderTemp->arm7ibinarySize, 3);
fileRead(dsiHeaderTemp->arm7idestination, file, (u32)dsiHeaderTemp->arm7iromOffset, dsiHeaderTemp->arm7ibinarySize, 0);
}
}
}
Expand Down Expand Up @@ -578,7 +578,7 @@ int arm7_main(void) {
resetMemory_ARM7();

// Init card
if (!FAT_InitFiles(initDisc, 3)) {
if (!FAT_InitFiles(initDisc, 0)) {
nocashMessage("!FAT_InitFiles");
return -1;
}
Expand All @@ -591,22 +591,22 @@ int arm7_main(void) {

// Invalid file cluster specified
if ((romFile->firstCluster < CLUSTER_FIRST) || (romFile->firstCluster >= CLUSTER_EOF)) {
*romFile = getBootFileCluster(bootName, 3);
*romFile = getBootFileCluster(bootName, 0);
}

if (romFile->firstCluster == CLUSTER_FREE) {
nocashMessage("fileCluster == CLUSTER_FREE");
return -1;
}

buildFatTableCache(romFile, 3);
buildFatTableCache(romFile, 0);

// Sav file
aFile* savFile = (aFile*)SAV_FILE_LOCATION;
*savFile = getFileFromCluster(saveFileCluster);

if (savFile->firstCluster != CLUSTER_FREE) {
buildFatTableCache(savFile, 3);
buildFatTableCache(savFile, 0);
}

int errorCode;
Expand Down
Binary file modified cardengine/arm7/(raw) include/sr_data_srloader
Binary file not shown.
4 changes: 2 additions & 2 deletions cardengine/arm7/include/sr_data_srloader.h
@@ -1,6 +1,6 @@
unsigned char sr_data_srloader[] = {
0x54, 0x4c, 0x4e, 0x43, 0x01, 0x18, 0xd5, 0x53, 0x41, 0x4e, 0x54, 0x34,
0x11, 0x00, 0x03, 0x00, 0x41, 0x4c, 0x52, 0x53, 0x15, 0x00, 0x03, 0x00,
0x54, 0x4c, 0x4e, 0x43, 0x01, 0x18, 0x87, 0xeb, 0x41, 0x4c, 0x52, 0x53,
0x04, 0x00, 0x03, 0x00, 0x41, 0x4c, 0x52, 0x53, 0x04, 0x00, 0x03, 0x00,
0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
unsigned int sr_data_srloader_len = 32;
8 changes: 4 additions & 4 deletions cardengine/arm7/source/cardengine.c
Expand Up @@ -111,9 +111,9 @@ static void initialize(void) {
sdmmc_init();
SD_Init();
}
FAT_InitFiles(false, 3);
FAT_InitFiles(false, 0);
//romFile = getFileFromCluster(fileCluster);
//buildFatTableCache(&romFile, 3);
//buildFatTableCache(&romFile, 0);
#ifdef DEBUG
if (romFile->fatTableCached) {
nocashMessage("fat table cached");
Expand Down Expand Up @@ -801,7 +801,7 @@ bool eepromRead(u32 src, void *dst, u32 len) {
#endif

initialize();
fileRead(dst, *savFile, src, len, -1);
fileRead(dst, *savFile, src, len, 0);
return true;
}

Expand Down Expand Up @@ -907,7 +907,7 @@ bool cardRead(u32 dma, u32 src, void *dst, u32 len) {
#ifdef DEBUG
nocashMessage("fileRead romFile");
#endif
fileRead(dst, *romFile, src, len, 2);
fileRead(dst, *romFile, src, len, 0);
//ndmaUsed = true;
cardReadLED(false); // After loading is done, turn off LED for card read indicator
}
Expand Down

0 comments on commit 4111af5

Please sign in to comment.