Skip to content

Commit

Permalink
Fix *Gormiti* crash on boot
Browse files Browse the repository at this point in the history
  • Loading branch information
RocketRobz committed Mar 15, 2024
1 parent 52a1da4 commit 2046633
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 5 deletions.
26 changes: 24 additions & 2 deletions retail/cardengine/arm9/source/cardengine.c
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,18 @@ void myIrqHandlerIPC(void) {
u32 src = *(vu32*)(sharedAddr);
u32 len = *(vu32*)(sharedAddr+1);

fileRead((char*)dst, &savFile, (src % ce9->saveSize), len);
if ((src % ce9->saveSize)+len > ce9->saveSize) {
u32 len2 = len;
u32 len3 = 0;
while ((src % ce9->saveSize)+len2 > ce9->saveSize) {
len2--;
len3++;
}
fileRead((char*)dst, &savFile, (src % ce9->saveSize), len2);
fileRead((char*)dst+len2, &savFile, ((src+len2) % ce9->saveSize), len3);
} else {
fileRead((char*)dst, &savFile, (src % ce9->saveSize), len);
}

sharedAddr[3] = 0;
REG_EXMEMCNT = exmemcnt;
Expand All @@ -523,7 +534,18 @@ void myIrqHandlerIPC(void) {
u32 dst = *(vu32*)(sharedAddr);
u32 len = *(vu32*)(sharedAddr+1);

fileWrite((char*)src, &savFile, (dst % ce9->saveSize), len);
if ((dst % ce9->saveSize)+len > ce9->saveSize) {
u32 len2 = len;
u32 len3 = 0;
while ((dst % ce9->saveSize)+len2 > ce9->saveSize) {
len2--;
len3++;
}
fileWrite((char*)src, &savFile, (dst % ce9->saveSize), len2);
fileWrite((char*)src+len2, &savFile, ((dst+len2) % ce9->saveSize), len3);
} else {
fileWrite((char*)src, &savFile, (dst % ce9->saveSize), len);
}

sharedAddr[3] = 0;
REG_EXMEMCNT = exmemcnt;
Expand Down
39 changes: 36 additions & 3 deletions retail/cardenginei/arm7/source/cardengine.c
Original file line number Diff line number Diff line change
Expand Up @@ -1935,7 +1935,18 @@ bool eepromRead(u32 src, void *dst, u32 len) {
tonccpy(dst, (char*)0x02440000 + src, len);
} else {*/
sdmmc_set_ndma_slot(4);
fileRead(dst, savFile, (src % saveSize), len);
if ((u32)(src % saveSize)+len > saveSize) {
u32 len2 = len;
u32 len3 = 0;
while ((u32)(src % saveSize)+len2 > saveSize) {
len2--;
len3++;
}
fileRead(dst, savFile, (src % saveSize), len2);
fileRead(dst+len2, savFile, ((src+len2) % saveSize), len3);
} else {
fileRead(dst, savFile, (src % saveSize), len);
}
sdmmc_set_ndma_slot(0);
//}
#ifdef TWLSDK
Expand Down Expand Up @@ -1975,7 +1986,18 @@ bool eepromPageWrite(u32 dst, const void *src, u32 len) {
tonccpy((char*)0x02440000 + dst, src, len);
}*/
sdmmc_set_ndma_slot(4);
fileWrite(src, savFile, (dst % saveSize), len);
if ((dst % saveSize)+len > saveSize) {
u32 len2 = len;
u32 len3 = 0;
while ((u32)(dst % saveSize)+len2 > saveSize) {
len2--;
len3++;
}
fileWrite(src, savFile, (dst % saveSize), len2);
fileWrite(src+len2, savFile, ((dst+len2) % saveSize), len3);
} else {
fileWrite(src, savFile, (dst % saveSize), len);
}
sdmmc_set_ndma_slot(0);
#ifdef TWLSDK
//if (doBak) restoreSdBakData();
Expand Down Expand Up @@ -2014,7 +2036,18 @@ bool eepromPageProg(u32 dst, const void *src, u32 len) {
tonccpy((char*)0x02440000 + dst, src, len);
}*/
sdmmc_set_ndma_slot(4);
fileWrite(src, savFile, (dst % saveSize), len);
if ((dst % saveSize)+len > saveSize) {
u32 len2 = len;
u32 len3 = 0;
while ((u32)(dst % saveSize)+len2 > saveSize) {
len2--;
len3++;
}
fileWrite(src, savFile, (dst % saveSize), len2);
fileWrite(src+len2, savFile, ((dst+len2) % saveSize), len3);
} else {
fileWrite(src, savFile, (dst % saveSize), len);
}
sdmmc_set_ndma_slot(0);
#ifdef TWLSDK
//if (doBak) restoreSdBakData();
Expand Down

0 comments on commit 2046633

Please sign in to comment.