Various matches and improvements (#299)

* Various matches and improvements

* Remove unnecessary comment
This commit is contained in:
hatal175
2023-02-23 17:41:05 +02:00
committed by GitHub
parent fa1f47f7a1
commit 4df6e8edea
10 changed files with 129 additions and 227 deletions
+48 -28
View File
@@ -49,40 +49,60 @@ s32 mDoMemCdRWm_Store(CARDFileInfo* file, void* data, u32 length) {
mDoMemCdRWm_BuildHeader((mDoMemCdRWm_HeaderData*)sTmpBuf);
s32 card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf), 0);
if (card_state != CARD_ERROR_READY) {
if (!mDoMemCdRWm_CheckCardStat(file)) {
memset(sTmpBuf, 0, sizeof(sTmpBuf));
if (card_state != CARD_RESULT_READY) {
return card_state;
}
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000);
if (card_state == CARD_ERROR_READY) {
return;
}
if (!mDoMemCdRWm_CheckCardStat(file)) {
memset(sTmpBuf, 0, sizeof(sTmpBuf));
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000);
if (card_state == CARD_ERROR_READY) {
return;
}
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
memset(sTmpBuf, 0, sizeof(sTmpBuf));
*(int*)(sTmpBuf + 4) = 6;
memcpy(sTmpBuf + 8, data, length);
*(int*)(sTmpBuf) = 0;
u32 checksum = mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC);
*(u32*)(sTmpBuf + 0x1FFC) = checksum;
if (CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000) == CARD_ERROR_READY &&
CARDRead(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000) == CARD_ERROR_READY) {
if (checksum == mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC)) {
if (CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000) == CARD_ERROR_READY &&
CARDRead(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000) == CARD_ERROR_READY) {
if (checksum == mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC)) {
mDoMemCdRWm_SetCardStat(file);
}
}
}
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
}
memset(sTmpBuf, 0, sizeof(sTmpBuf));
*(int*)(sTmpBuf + 4) = 6;
memcpy(sTmpBuf + 8, data, length);
*(int*)(sTmpBuf) = 0;
u32 checksum = mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC);
*(u32*)(sTmpBuf + 0x1FFC) = checksum;
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
card_state = CARDRead(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
if (checksum != mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC)) {
return card_state;
}
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
card_state = CARDRead(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
if (checksum != mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC)) {
return card_state;
}
mDoMemCdRWm_SetCardStat(file);
return card_state;
}
#else
#pragma push
+8 -26
View File
@@ -406,6 +406,7 @@ SECTION_SDATA2 static f32 lit_3941 = 6.0f;
/* 8000B95C-8000BCF4 00629C 0398+00 1/1 0/0 0/0 .text fault_callback_scroll__FUsP9OSContextUlUl */
#ifdef NONMATCHING
// Everything matches but there are issues with dead section
static void fault_callback_scroll(u16, OSContext* p_context, u32, u32) {
JUTException* manager = JUTException::getManager();
JUTConsole* exConsole = manager->getConsole();
@@ -469,34 +470,12 @@ static void fault_callback_scroll(u16, OSContext* p_context, u32, u32) {
}
if (btnHold == CButton::DPAD_UP) {
int scrollAmnt;
if (holdUpCount < 3) {
scrollAmnt = -1;
} else if (holdUpCount < 5) {
scrollAmnt = -2;
} else {
scrollAmnt = -8;
if (holdUpCount < 7) {
scrollAmnt = -4;
}
}
exConsole->scroll(scrollAmnt);
exConsole->scroll(holdUpCount < 3 ? -1 : (holdUpCount < 5 ? -2 : (holdUpCount < 7 ? -4 : -8)));
waitRetrace = true;
holdDownCount = 0;
holdUpCount++;
} else if (btnHold == CButton::DPAD_DOWN) {
int scrollAmnt;
if (holdDownCount < 3) {
scrollAmnt = 1;
} else if (holdDownCount < 5) {
scrollAmnt = 2;
} else {
scrollAmnt = 8;
if (holdDownCount < 7) {
scrollAmnt = 4;
}
}
exConsole->scroll(scrollAmnt);
exConsole->scroll(holdDownCount < 3 ? 1 : (holdDownCount < 5 ? 2 : (holdDownCount < 7 ? 4 : 8)));
waitRetrace = true;
holdUpCount = 0;
holdDownCount++;
@@ -537,8 +516,11 @@ static void fault_callback_scroll(u16, OSContext* p_context, u32, u32) {
}
JUTException::waitTime(3000);
} while ((exConsole->getUsedLine() - exConsole->getHeight()) + 1 <=
exConsole->getLineOffset());
if ((exConsole->getUsedLine() - exConsole->getHeight()) + 1 <=
exConsole->getLineOffset()) {
break;
}
} while (true);
} while (true);
}
#else