m_Do_MemCard OK

This commit is contained in:
LagoLunatic
2023-12-26 22:20:41 -05:00
parent 4f652d0205
commit f0958eab10
5 changed files with 61 additions and 4 deletions
+1 -1
View File
@@ -264,7 +264,7 @@ config.libs = [
Object(Matching, "m_Do/m_Do_Reset.cpp"),
Object(Matching, "m_Do/m_Do_dvd_thread.cpp"),
Object(Matching, "m_Do/m_Do_DVDError.cpp"),
Object(NonMatching, "m_Do/m_Do_MemCard.cpp"),
Object(Matching, "m_Do/m_Do_MemCard.cpp"),
Object(NonMatching, "m_Do/m_Do_MemCardRWmng.cpp"),
Object(Matching, "m_Do/m_Do_gba_com.cpp"),
Object(Matching, "m_Do/m_Do_machine_exception.cpp"),
+7 -1
View File
@@ -13,6 +13,9 @@ public:
CARD_FORMAT,
CARD_ATTACH,
CARD_DETACH,
#if VERSION == VERSION_PAL
CARD_RESTORE2,
#endif
};
mDoMemCd_Ctrl_c();
@@ -20,10 +23,13 @@ public:
void main();
void update();
void load();
void load2();
void restore();
s32 LoadSync(void*, u32, u32);
#if VERSION == VERSION_PAL
void load2();
void restore2();
s32 LoadSync2();
#endif
void save(void*, u32, u32);
void store();
s32 SaveSync();
+3
View File
@@ -8,6 +8,9 @@ struct mDoMemCdRWm_HeaderData;
s32 mDoMemCdRWm_Store(CARDFileInfo*, void*, u32);
s32 mDoMemCdRWm_Restore(CARDFileInfo*, void*, u32);
#if VERSION == VERSION_PAL
s32 mDoMemCdRWm_Restore2(CARDFileInfo*);
#endif
void mDoMemCdRWm_BuildHeader(mDoMemCdRWm_HeaderData*);
void mDoMemCdRWm_SetCardStat(CARDFileInfo*);
void mDoMemCdRWm_CheckCardStat(CARDFileInfo*);
+44 -2
View File
@@ -62,8 +62,8 @@ void mDoMemCd_Ctrl_c::main() {
detach();
break;
#if VERSION == VERSION_PAL
case 6:
// restore2();
case CARD_RESTORE2:
restore2();
break;
#endif
}
@@ -211,6 +211,48 @@ s32 mDoMemCd_Ctrl_c::SaveSync() {
return ret;
}
#if VERSION == VERSION_PAL
void mDoMemCd_Ctrl_c::restore2() {
if (field_0x1660 != 1) {
return;
}
CARDFileInfo cardInfo;
s32 ret = CARDOpen(mCardSlot, "gczelda", &cardInfo);
if (ret == CARD_ERROR_READY) {
if (!mDoMemCdRWm_Restore2(&cardInfo)) {
field_0x1660 = 3;
} else {
setCardState(ret);
}
CARDClose(&cardInfo);
} else {
setCardState(ret);
}
}
void mDoMemCd_Ctrl_c::load2() {
if (OSTryLockMutex(&mMutex)) {
mCommand = CARD_RESTORE2;
OSUnlockMutex(&mMutex);
OSSignalCond(&mCond);
}
}
s32 mDoMemCd_Ctrl_c::LoadSync2() {
s32 ret = 0;
if (OSTryLockMutex(&mMutex)) {
if (field_0x1660 == 3) {
field_0x1660 = 1;
ret = 1;
} else {
ret = 2;
}
OSUnlockMutex(&mMutex);
}
return ret;
}
#endif
/* 8001939C-80019480 .text getStatus__15mDoMemCd_Ctrl_cFUl */
u32 mDoMemCd_Ctrl_c::getStatus(u32) {
if (OSTryLockMutex(&mMutex)) {
+6
View File
@@ -16,6 +16,12 @@ s32 mDoMemCdRWm_Restore(CARDFileInfo*, void*, u32) {
/* Nonmatching */
}
#if VERSION == VERSION_PAL
s32 mDoMemCdRWm_Restore2(CARDFileInfo*) {
/* Nonmatching */
}
#endif
/* 80019F4C-8001A0A8 .text mDoMemCdRWm_BuildHeader__FP22mDoMemCdRWm_HeaderData */
void mDoMemCdRWm_BuildHeader(mDoMemCdRWm_HeaderData*) {
/* Nonmatching */