More inlines, use sizeof for memcard structs

This commit is contained in:
LagoLunatic
2025-04-16 13:53:30 -04:00
parent 2f4c6f89b3
commit 36a3a2b660
10 changed files with 163 additions and 154 deletions
+3 -2
View File
@@ -12,6 +12,7 @@
#include "d/d_com_lib_game.h"
#include "d/d_procname.h"
#include "d/d_s_play.h"
#include "m_Do/m_Do_MemCardRWmng.h"
#include "m_Do/m_Do_audio.h"
#include "m_Do/m_Do_controller_pad.h"
#include "m_Do/m_Do_ext.h"
@@ -590,12 +591,12 @@ static BOOL dScnLogo_Delete(dScnLogo_c* i_this) {
dComIfGp_setWindowNum(0);
for (s32 i = 0; i < 3; i++) {
dComIfGp_setPictureBoxData(JKRAllocFromAram(0x2000, JKRAramHeap::HEAD), i);
dComIfGp_setPictureBoxData(JKRAllocFromAram(sizeof(card_pictdata), JKRAramHeap::HEAD), i);
dComIfGp_offPictureFlag(i);
}
for (s32 i = 0; i < 4; i++) {
dComIfGp_setBossBattleData(JKRAllocFromAram(0x70, JKRAramHeap::HEAD), i);
dComIfGp_setBossBattleData(JKRAllocFromAram(sizeof(dSv_player_status_c_c), JKRAramHeap::HEAD), i);
}
#if VERSION == VERSION_PAL
+32 -32
View File
@@ -119,7 +119,7 @@ cPhs_State dScnName_c::create() {
dFs_c = new dFile_select_c();
JUT_ASSERT(470, dFs_c != NULL);
dFs_c->field_0x0 = mArchive;
savePicDatabuf = new (0x20) u8[0x12000];
savePicDatabuf = new (0x20) card_pictdata[3 * 3];
JUT_ASSERT(476, savePicDatabuf != NULL);
if (fpcM_GetName(this) == PROC_NAME_SCENE) {
dFs_c->setUseType(0);
@@ -516,11 +516,11 @@ void dScnName_c::NoteOpenWait() {
if (g_snHIO.field_0x8 == 0) {
if (fpcM_GetName(this) == PROC_NAME_SCENE) {
dFs_c->setSaveDataPtr(saveMemory);
dFs_c->setSavePicDataPtr(savePicDatabuf);
dFs_c->setSavePicDataPtr((u8*)savePicDatabuf);
}
if (fpcM_GetName(this) == PROC_NAMEEX_SCENE) {
dFs_c->setSaveDataPtr(dMs_c->getDataBufPtr());
dFs_c->setSavePicDataPtr(savePicDatabuf);
dFs_c->setSavePicDataPtr((u8*)savePicDatabuf);
}
dFs_c->initial();
mMainProc = 3;
@@ -536,7 +536,6 @@ void dScnName_c::FileSelectOpen() {
/* 802315E0-802319B4 .text buttonIconProc__10dScnName_cFv */
void dScnName_c::buttonIconProc() {
/* Nonmatching */
switch (field_0x1bb6) {
case 0:
{
@@ -545,7 +544,7 @@ void dScnName_c::buttonIconProc() {
if (ret == 1) {
field_0x1bb4 = 0;
field_0x1bb6 = 6;
dFs_c->field_0x3936 = field_0x1bb6;
dFs_c->setIconMode(field_0x1bb6);
}
}
break;
@@ -561,7 +560,7 @@ void dScnName_c::buttonIconProc() {
if (ret == 1) {
field_0x1bb4 = 0;
field_0x1bb6 = 6;
dFs_c->field_0x3936 = field_0x1bb6;
dFs_c->setIconMode(field_0x1bb6);
}
}
break;
@@ -577,24 +576,24 @@ void dScnName_c::buttonIconProc() {
if (ret == 1) {
field_0x1bb4 = 0;
field_0x1bb6 = 6;
dFs_c->field_0x3936 = field_0x1bb6;
dFs_c->setIconMode(field_0x1bb6);
}
}
break;
case 3:
{
s32 ret = paneTransButtonIcon(field_0x1bb4 - g_snHIO.field_0xf, g_snHIO.field_0xe, g_snHIO.field_0xc, 0.0f, 0);
s32 ret = paneTransButtonIcon(field_0x1bb4 - g_snHIO.field_0xf, g_snHIO.field_0xe, 0.0f, g_snHIO.field_0xc, 0);
field_0x1bb4++;
if (ret == 1) {
field_0x1bb4 = 0;
field_0x1bb6 = 6;
dFs_c->field_0x3936 = field_0x1bb6;
dFs_c->setIconMode(field_0x1bb6);
}
}
break;
case 4:
{
s32 ret = paneTransButtonIcon(field_0x1bb4 - g_snHIO.field_0xf, g_snHIO.field_0xe, g_snHIO.field_0xc, 0.0f, 0);
s32 ret = paneTransButtonIcon(field_0x1bb4 - g_snHIO.field_0xf, g_snHIO.field_0xe, 0.0f, g_snHIO.field_0xc, 0);
field_0x1bb4++;
if (ret == 1) {
field_0x1bb4 = 0;
@@ -604,13 +603,13 @@ void dScnName_c::buttonIconProc() {
field_0x4ac.pane->show();
}
field_0x1bb6 = 0;
dFs_c->field_0x3936 = field_0x1bb6;
dFs_c->setIconMode(field_0x1bb6);
}
}
break;
case 5:
{
s32 ret = paneTransButtonIcon(field_0x1bb4 - g_snHIO.field_0xf, g_snHIO.field_0xe, g_snHIO.field_0xc, 0.0f, 0);
s32 ret = paneTransButtonIcon(field_0x1bb4 - g_snHIO.field_0xf, g_snHIO.field_0xe, 0.0f, g_snHIO.field_0xc, 0);
field_0x1bb4++;
if (ret == 1) {
field_0x1bb4 = 0;
@@ -620,7 +619,7 @@ void dScnName_c::buttonIconProc() {
field_0x4ac.pane->hide();
}
field_0x1bb6 = 0;
dFs_c->field_0x3936 = field_0x1bb6;
dFs_c->setIconMode(field_0x1bb6);
}
}
break;
@@ -639,7 +638,7 @@ void dScnName_c::FileSelOpenMain() {
} else {
field_0x1bb6 = 1;
}
dFs_c->field_0x3936 = field_0x1bb6;
dFs_c->setIconMode(field_0x1bb6);
mMainProc = 4;
}
@@ -649,7 +648,7 @@ void dScnName_c::FileselOpenWait() {}
/* 80231A28-80231A8C .text FileSelectMain__10dScnName_cFv */
void dScnName_c::FileSelectMain() {
dFs_c->_move();
field_0x1bb6 = dFs_c->field_0x3936;
field_0x1bb6 = dFs_c->getIconMode();
if (fpcM_GetName(this) == PROC_NAME_SCENE)
FileSelectMainNormal();
if (fpcM_GetName(this) == PROC_NAMEEX_SCENE)
@@ -675,32 +674,34 @@ void dScnName_c::FileSelectMainNormal() {
if (dComIfGs_getPictureNum() != 0) {
u8 failed = 0;
u8 boxDataIdx = 0;
u8* workBuf = &((u8*)savePicDatabuf)[dFs_c->saveSlot * 0x6000];
u8 r25 = 0;
card_pictdata* workBuf = &savePicDatabuf[dFs_c->saveSlot * 3];
for (s32 i = 0; i < 3; i++) {
u32 mask = 1 << i;
if ((dComIfGs_getEventReg(0x89ff) & mask)) {
workBuf += 0x2000;
workBuf++;
continue;
}
if (mDoMemCdRWm_TestCheckSumPictData(workBuf)) {
JKRMainRamToAram(workBuf, dComIfGp_getPictureBoxData(boxDataIdx), 0x2000, EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1);
JKRMainRamToAram((u8*)workBuf, dComIfGp_getPictureBoxData(boxDataIdx), sizeof(card_pictdata), EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1);
boxDataIdx++;
} else {
failed++;
}
if (i == pictureNum)
r25++;
if (r25 == pictureNum)
break;
workBuf += 0x2000;
workBuf++;
}
dComIfGs_setPictureNum(pictureNum - failed);
}
dComIfGs_setEventReg(0x89ff, 0);
mDoMemCd_setPictDataPtr(NULL);
g_dComIfG_gameInfo.play.itemInit();
dComIfGp_itemDataInit();
if (field_0x1bb9 != 0) {
field_0x1bb6 = 3;
mMainProc = 5;
@@ -752,7 +753,7 @@ void dScnName_c::FileSelectClose() {
if (fpcM_GetName(this) == PROC_NAMEEX_SCENE) {
dMs_c->initialize();
dMs_c->field_0x053c = 1;
dMs_c->field_0x053d = dFs_c->field_0x392f;
dMs_c->field_0x053d = dFs_c->field_0x392f; // getErrType?
if (dFs_c->field_0x392f == 2) {
dMs_c->initializeEx();
}
@@ -775,9 +776,9 @@ void dScnName_c::FileSelectClose() {
break;
case 1:
if (field_0x1bb9) {
strcpy(dNm_c->field_0x2ad0, dComIfGs_getPlayerName());
dNm_c->setNextNameStr((char*)dComIfGs_getPlayerName());
} else {
strcpy(dNm_c->field_0x2ad0, "");
dNm_c->setNextNameStr("");
}
dNm_c->initial();
mMainProc = 6;
@@ -811,18 +812,17 @@ void dScnName_c::NameOpenWait() {}
/* 80231F48-80231FF4 .text NameInMain__10dScnName_cFv */
void dScnName_c::NameInMain() {
/* Nonmatching */
dNm_c->_move();
if (dNm_c->field_0x290b == 1) {
if (dNm_c->isInputEnd() == 1) {
if (!field_0x1bb9) {
g_dComIfG_gameInfo.save.init();
g_dComIfG_gameInfo.play.itemInit();
dComIfGs_init();
dComIfGp_itemDataInit();
}
dComIfGs_setPlayerName(dNm_c->field_0x2a5c);
dComIfGs_setPlayerName(dNm_c->getInputStrPtr());
field_0x55f = 1;
mMainProc = 9;
} else if (dNm_c->field_0x290b == 2) {
} else if (dNm_c->isInputEnd() == 2) {
field_0x1bb6 = 3;
mMainProc = 8;
}
@@ -840,7 +840,7 @@ void dScnName_c::NameInClose() {
/* 80232050-80232074 .text NameInDraw__10dScnName_cFv */
void dScnName_c::NameInDraw() {
dNm_c->_draw();
dNm_c->draw();
}
/* 80232074-802320C0 .text ShopDemoDataLoad__10dScnName_cFv */
@@ -867,7 +867,7 @@ void dScnName_c::SaveOpen() {
}
if (dMs_c->_open() == 1) {
field_0x1bb6 = 1;
dFs_c->field_0x3936 = field_0x1bb6;
dFs_c->setIconMode(field_0x1bb6);
mMainProc = 11;
}
}
+2 -2
View File
@@ -105,7 +105,7 @@ void mDoMemCd_Ctrl_c::restore() {
CARDFileInfo cardInfo;
s32 ret = CARDOpen(mCardSlot, "gczelda", &cardInfo);
if (ret == CARD_ERROR_READY) {
if (!mDoMemCdRWm_Restore(&cardInfo, this, 0x1650)) {
if (!mDoMemCdRWm_Restore(&cardInfo, mData, sizeof(mData))) {
field_0x1660 = 3;
} else {
setCardState(ret);
@@ -133,7 +133,7 @@ void mDoMemCd_Ctrl_c::store() {
if (field_0x1660 == 1) {
ret = CARDOpen(mCardSlot, "gczelda", &cardInfo);
if (ret == CARD_ERROR_READY) {
ret = mDoMemCdRWm_Store(&cardInfo, this, 0x1650);
ret = mDoMemCdRWm_Store(&cardInfo, mData, sizeof(mData));
if (ret != CARD_ERROR_READY)
setCardState(ret);
else
+27 -28
View File
@@ -23,19 +23,19 @@ static u32 sSaveCount;
s32 mDoMemCdRWm_Store(CARDFileInfo* card, void* data, u32 size) {
s32 ret;
mDoMemCdRWm_BuildHeader((mDoMemCdRWm_HeaderData*)sTmpBuf);
ret = CARDWrite(card, sTmpBuf, 0x2000, 0x0000);
ret = CARDWrite(card, sTmpBuf, sizeof(card_savedata), 0 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
if (!mDoMemCdRWm_CheckCardStat(card)) {
memset(sTmpBuf, 0, 0x2000);
ret = CARDWrite(card, sTmpBuf, 0x2000, 0x2000);
memset(sTmpBuf, 0, sizeof(sTmpBuf));
ret = CARDWrite(card, sTmpBuf, sizeof(card_savedata), 1 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
ret = CARDWrite(card, sTmpBuf, 0x2000, 0x4000);
ret = CARDWrite(card, sTmpBuf, sizeof(card_savedata), 2 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
sSaveCount = 0;
}
memset(sTmpBuf, 0, 0x2000);
memset(sTmpBuf, 0, sizeof(sTmpBuf));
card_savedata* save = (card_savedata*)sTmpBuf;
save->dataVersion = 0;
memcpy(save->gamedata, data, size);
@@ -44,20 +44,20 @@ s32 mDoMemCdRWm_Store(CARDFileInfo* card, void* data, u32 size) {
#else
save->saveCount = dComIfGs_getPalLanguage();
#endif
s32 csum = mDoMemCdRWm_CalcCheckSum(save, 0x1FFC);
s32 csum = mDoMemCdRWm_CalcCheckSum(save, sizeof(card_savedata) - sizeof(save->csum));
save->csum = csum;
ret = CARDWrite(card, sTmpBuf, 0x2000, 0x2000);
ret = CARDWrite(card, sTmpBuf, sizeof(card_savedata), 1 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
ret = CARDRead(card, sTmpBuf, 0x2000, 0x2000);
ret = CARDRead(card, sTmpBuf, sizeof(card_savedata), 1 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
if (mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC) != csum) return ret;
if (mDoMemCdRWm_CalcCheckSum(sTmpBuf, sizeof(card_savedata) - sizeof(save->csum)) != csum) return ret;
ret = CARDWrite(card, sTmpBuf, 0x2000, 0x4000);
ret = CARDWrite(card, sTmpBuf, sizeof(card_savedata), 2 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
ret = CARDRead(card, sTmpBuf, 0x2000, 0x4000);
ret = CARDRead(card, sTmpBuf, sizeof(card_savedata), 2 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
if (mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC) != csum) return ret;
if (mDoMemCdRWm_CalcCheckSum(sTmpBuf, sizeof(card_savedata) - sizeof(save->csum)) != csum) return ret;
s32 i;
u32 slot;
@@ -65,10 +65,10 @@ s32 mDoMemCdRWm_Store(CARDFileInfo* card, void* data, u32 size) {
if (mDoMemCd_getCopyToPos() < 3) {
slot = mDoMemCd_getCopyToPos() * 3 + 3;
u8* picData = mDoMemCd_getPictWriteDataPtr();
for (i = 0; i < 3; i++, picData += 0x2000) {
ret = CARDWrite(card, picData, 0x2000, (slot + i) * 0x2000);
for (i = 0; i < 3; i++, picData += sizeof(card_pictdata)) {
ret = CARDWrite(card, picData, sizeof(card_pictdata), (slot + i) * sizeof(card_pictdata));
if (ret != CARD_ERROR_READY) return ret;
ret = CARDRead(card, sTmpBuf, 0x2000, (slot + i) * 0x2000);
ret = CARDRead(card, sTmpBuf, sizeof(card_pictdata), (slot + i) * sizeof(card_pictdata));
if (ret != CARD_ERROR_READY) return ret;
if (!mDoMemCdRWm_TestCheckSumPictData(picData)) return ret;
}
@@ -77,11 +77,11 @@ s32 mDoMemCdRWm_Store(CARDFileInfo* card, void* data, u32 size) {
slot = dComIfGs_getDataNum() * 3 + 3;
for (i = 0; i < 3; i++) {
if (dComIfGp_isPictureFlag(i)) {
memset(sTmpBuf, 0, 0x2000);
JKRAramToMainRam(dComIfGp_getPictureBoxData(i), sTmpBuf, 0x2000);
ret = CARDWrite(card, sTmpBuf, 0x2000, (slot + i) * 0x2000);
memset(sTmpBuf, 0, sizeof(card_pictdata));
JKRAramToMainRam(dComIfGp_getPictureBoxData(i), sTmpBuf, sizeof(card_pictdata));
ret = CARDWrite(card, sTmpBuf, sizeof(card_pictdata), (slot + i) * sizeof(card_pictdata));
if (ret != CARD_ERROR_READY) return ret;
ret = CARDRead(card, sTmpBuf, 0x2000, (slot + i) * 0x2000);
ret = CARDRead(card, sTmpBuf, sizeof(card_pictdata), (slot + i) * sizeof(card_pictdata));
if (ret != CARD_ERROR_READY) return ret;
}
}
@@ -108,12 +108,12 @@ s32 mDoMemCdRWm_Restore(CARDFileInfo* card, void* dst, u32 size) {
save = (card_savedata*)sTmpBuf;
save2 = (card_savedata*)sTmpBuf2;
ret = CARDRead(card, save, 0x2000, 0x2000);
ret = CARDRead(card, save, sizeof(card_savedata), 1 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
csum0a = mDoMemCdRWm_TestCheckSumGameData(&save->gamedata[0]);
csum1a = mDoMemCdRWm_TestCheckSumGameData(&save->gamedata[1]);
csum2a = mDoMemCdRWm_TestCheckSumGameData(&save->gamedata[2]);
ret = CARDRead(card, save2, 0x2000, 0x4000);
ret = CARDRead(card, save2, sizeof(card_savedata), 2 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
csum0b = mDoMemCdRWm_TestCheckSumGameData(&save2->gamedata[0]);
csum1b = mDoMemCdRWm_TestCheckSumGameData(&save2->gamedata[1]);
@@ -139,9 +139,9 @@ s32 mDoMemCdRWm_Restore(CARDFileInfo* card, void* dst, u32 size) {
return CARD_ERROR_FATAL_ERROR;
if (needsWrite) {
ret = CARDWrite(card, save, 0x2000, 0x2000);
ret = CARDWrite(card, save, sizeof(card_savedata), 1 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
ret = CARDWrite(card, save, 0x2000, 0x4000);
ret = CARDWrite(card, save, sizeof(card_savedata), 2 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
}
@@ -158,7 +158,7 @@ s32 mDoMemCdRWm_Restore(CARDFileInfo* card, void* dst, u32 size) {
#endif
mDoMemCd_setDataVersion(save->dataVersion);
if (!invalid && mDoMemCd_getPictDataPtr() != NULL) {
ret = CARDRead(card, mDoMemCd_getPictDataPtr(), 0x12000, 0x6000);
ret = CARDRead(card, mDoMemCd_getPictDataPtr(), 3 * 3 * sizeof(card_pictdata), 3 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
}
@@ -173,9 +173,9 @@ s32 mDoMemCdRWm_Restore2(CARDFileInfo* card) {
s32 ret;
card_savedata* save;
save = (card_savedata*)sTmpBuf;
ret = CARDRead(card, save, 0x2000, 0x2000);
ret = CARDRead(card, save, sizeof(card_savedata), 1 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) {
ret = CARDRead(card, save, 0x2000, 0x4000);
ret = CARDRead(card, save, sizeof(card_savedata), 2 * sizeof(card_savedata));
if (ret != CARD_ERROR_READY) return ret;
}
@@ -213,7 +213,6 @@ void mDoMemCdRWm_BuildHeader(mDoMemCdRWm_HeaderData* header) {
snprintf(header->info, sizeof(header->info), "%d/%d Spielstand", cal.day_of_month, cal.month + 1);
break;
case 2:
// Extended ASCII 0xE9 is: é ("Données de jeu")
snprintf(header->info, sizeof(header->info), "Donn%ces de jeu %d/%d", 0xE9, cal.day_of_month, cal.month + 1);
break;
case 3:
@@ -267,7 +266,7 @@ BOOL mDoMemCdRWm_CheckCardStat(CARDFileInfo* card) {
CARDStat stat;
CARDGetStatus(mDoMemCd_getNowSlot(), card->fileNo, &stat);
if (!(stat.iconAddr == 0 &&
stat.commentAddr == 0x1C00 &&
stat.commentAddr == offsetof(mDoMemCdRWm_HeaderData, comment) &&
CARDGetBannerFormat(&stat) == 1 &&
CARDGetIconAnim(&stat) == 0 &&
CARDGetIconFormat(&stat, 0) == 1 &&