From 36a3a2b660d716b96f03fde2e3e7d65035e327d7 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Wed, 16 Apr 2025 13:53:30 -0400 Subject: [PATCH] More inlines, use sizeof for memcard structs --- include/d/d_file_select.h | 13 +++-- include/d/d_name.h | 14 ++--- include/d/d_s_name.h | 95 ++++++++++++++++---------------- include/dolphin/card.h | 12 ++-- include/m_Do/m_Do_MemCard.h | 3 +- include/m_Do/m_Do_MemCardRWmng.h | 52 +++++++++-------- src/d/d_s_logo.cpp | 5 +- src/d/d_s_name.cpp | 64 ++++++++++----------- src/m_Do/m_Do_MemCard.cpp | 4 +- src/m_Do/m_Do_MemCardRWmng.cpp | 55 +++++++++--------- 10 files changed, 163 insertions(+), 154 deletions(-) diff --git a/include/d/d_file_select.h b/include/d/d_file_select.h index 48a37eb5c..f3fd05382 100644 --- a/include/d/d_file_select.h +++ b/include/d/d_file_select.h @@ -22,16 +22,17 @@ public: class dFile_select_c { public: + u8 getIconMode() { return mIconMode;} + void setIconMode(u8 mode) { mIconMode = mode; } + void setSaveDataPtr(u8* dataPtr) { mSaveDataPtr = dataPtr; } + void setSavePicDataPtr(u8* dataPtr) { mSavePicDataPtr = dataPtr; } + void setUseType(u8 useType) { mUseType = useType; } + void getErrType() {} - void getIconMode() {} void getSelectNum() {} void isDataExtra(u8) {} void isDataNew(u8) {} void isSelectEnd() {} - void setIconMode(u8) {} - void setSaveDataPtr(u8* dataPtr) { mSaveDataPtr = dataPtr; } - void setSavePicDataPtr(u8* dataPtr) { mSavePicDataPtr = dataPtr; } - void setUseType(u8 useType) { mUseType = useType; } dFile_select_c() {} void _create(); @@ -242,7 +243,7 @@ public: /* 0x3930 */ s16 field_0x3930; /* 0x3932 */ s16 field_0x3932; /* 0x3934 */ u8 field_0x3934[0x3936 - 0x3934]; - /* 0x3936 */ u8 field_0x3936; + /* 0x3936 */ u8 mIconMode; /* 0x3938 */ u8* mSaveDataPtr; /* 0x393C */ u8* mSavePicDataPtr; /* 0x3940 */ u8 mUseType; diff --git a/include/d/d_name.h b/include/d/d_name.h index 155344069..ca4051676 100644 --- a/include/d/d_name.h +++ b/include/d/d_name.h @@ -14,10 +14,10 @@ class dDlst_NameIN_c : public dDlst_base_c { class dName_c { public: - void draw() {} - void getInputStrPtr() {} - void isInputEnd() {} - void setNextNameStr(char*) {} + void draw() { _draw(); } + int isInputEnd() { return mIsInputEnd; } + char* getInputStrPtr() { return mInputStr; } + void setNextNameStr(char* i_name) { strcpy(mNextNameStr, i_name); } virtual ~dName_c() {} void _create(); @@ -68,11 +68,11 @@ public: /* 0x0004 */ u8 field_0x4[0x0008 - 0x0004]; /* 0x0008 */ dDlst_NameIN_c field_0x8; /* 0x000C */ u8 field_0xc[0x290B - 0x000C]; - /* 0x290B */ u8 field_0x290b; + /* 0x290B */ u8 mIsInputEnd; /* 0x290C */ u8 field_0x290c[0x2A5C - 0x290C]; - /* 0x2A5C */ char field_0x2a5c[8]; + /* 0x2A5C */ char mInputStr[8]; /* 0x2A64 */ u8 field_0x2964[0x2AD0 - 0x2A64]; - /* 0x2AD0 */ char field_0x2ad0[0x2AE8 - 0x2AD0]; + /* 0x2AD0 */ char mNextNameStr[0x2AE8 - 0x2AD0]; }; #endif /* D_NAME_H */ diff --git a/include/d/d_s_name.h b/include/d/d_s_name.h index fa9ca7c04..babdbeec5 100644 --- a/include/d/d_s_name.h +++ b/include/d/d_s_name.h @@ -4,6 +4,7 @@ #include "d/d_drawlist.h" #include "f_op/f_op_msg_mng.h" #include "f_op/f_op_scene.h" +#include "m_Do/m_Do_MemCardRWmng.h" #include "m_Do/m_Do_hostIO.h" class J2DScreen; @@ -122,53 +123,53 @@ public: void NoneDraw(); void changeGameScene(); - /* 0x1C4 */ request_of_phase_process_class mPhs; - /* 0x1CC */ JKRHeap* heap; - /* 0x1D0 */ JKRHeap* oldHeap; - /* 0x1D4 */ u8 field_0x1d4[0x29C - 0x1D4]; - /* 0x29C */ f32 field_0x29c; - /* 0x2A0 */ f32 field_0x2a0; - /* 0x2A4 */ f32 field_0x2a4; - /* 0x2A8 */ f32 field_0x2a8; - /* 0x2AC */ Vec field_0x2ac; - /* 0x2B8 */ Vec field_0x2b8; - /* 0x2C4 */ u8 field_0x2c4[0x2D0 - 0x2C4]; - /* 0x2D0 */ s16 field_0x2d0; - /* 0x2D4 */ Mtx44 field_0x2d4; - /* 0x314 */ Mtx field_0x314; - /* 0x344 */ Mtx field_0x344; - /* 0x374 */ Mtx field_0x374; - /* 0x3A4 */ u8 field_0x3a4[0x3B4 - 0x3A4]; - /* 0x3B4 */ Mtx field_0x3b4; - /* 0x3E4 */ u8 field_0x3e4[0x40C - 0x3E4]; - /* 0x40C */ JKRMemArchive* mArchive; - /* 0x410 */ mDoDvdThd_toMainRam_c* field_0x410; - /* 0x414 */ dDlst_BTICN_c btnIcon; - /* 0x41C */ dDlst_FLSEL_CLOTH_c cloth; - /* 0x424 */ dName_c* dNm_c; - /* 0x428 */ dFile_select_c* dFs_c; - /* 0x42C */ dFile_error_c* dFe_c; - /* 0x430 */ dMenu_save_c* dMs_c; - /* 0x434 */ u8 field_0x434[0x43C - 0x434]; - /* 0x43C */ fopMsgM_pane_class field_0x43c; - /* 0x474 */ fopMsgM_pane_class field_0x474; - /* 0x4AC */ fopMsgM_pane_class field_0x4ac; - /* 0x4E4 */ fopMsgM_pane_class field_0x4e4; - /* 0x51C */ fopMsgM_pane_class field_0x51c; - /* 0x554 */ u8 mMainProc; - /* 0x555 */ u8 field_0x555; - /* 0x556 */ u8 field_0x556; - /* 0x557 */ u8 mDrawProc; - /* 0x558 */ u8 field_0x558; - /* 0x559 */ u8 field_0x559; - /* 0x55A */ u8 field_0x55a; - /* 0x55B */ u8 field_0x55b; - /* 0x55C */ u8 field_0x55c; - /* 0x55D */ u8 field_0x55d; - /* 0x55E */ u8 field_0x55e; - /* 0x55F */ u8 field_0x55f; - /* 0x560 */ u8 saveMemory[0x1650]; - /* 0x1BB0 */ u8* savePicDatabuf; + /* 0x01C4 */ request_of_phase_process_class mPhs; + /* 0x01CC */ JKRHeap* heap; + /* 0x01D0 */ JKRHeap* oldHeap; + /* 0x01D4 */ u8 field_0x1d4[0x29C - 0x1D4]; + /* 0x029C */ f32 field_0x29c; + /* 0x02A0 */ f32 field_0x2a0; + /* 0x02A4 */ f32 field_0x2a4; + /* 0x02A8 */ f32 field_0x2a8; + /* 0x02AC */ Vec field_0x2ac; + /* 0x02B8 */ Vec field_0x2b8; + /* 0x02C4 */ u8 field_0x2c4[0x2D0 - 0x2C4]; + /* 0x02D0 */ s16 field_0x2d0; + /* 0x02D4 */ Mtx44 field_0x2d4; + /* 0x0314 */ Mtx field_0x314; + /* 0x0344 */ Mtx field_0x344; + /* 0x0374 */ Mtx field_0x374; + /* 0x03A4 */ u8 field_0x3a4[0x3B4 - 0x3A4]; + /* 0x03B4 */ Mtx field_0x3b4; + /* 0x03E4 */ u8 field_0x3e4[0x40C - 0x3E4]; + /* 0x040C */ JKRMemArchive* mArchive; + /* 0x0410 */ mDoDvdThd_toMainRam_c* field_0x410; + /* 0x0414 */ dDlst_BTICN_c btnIcon; + /* 0x041C */ dDlst_FLSEL_CLOTH_c cloth; + /* 0x0424 */ dName_c* dNm_c; + /* 0x0428 */ dFile_select_c* dFs_c; + /* 0x042C */ dFile_error_c* dFe_c; + /* 0x0430 */ dMenu_save_c* dMs_c; + /* 0x0434 */ u8 field_0x434[0x43C - 0x434]; + /* 0x043C */ fopMsgM_pane_class field_0x43c; + /* 0x0474 */ fopMsgM_pane_class field_0x474; + /* 0x04AC */ fopMsgM_pane_class field_0x4ac; + /* 0x04E4 */ fopMsgM_pane_class field_0x4e4; + /* 0x051C */ fopMsgM_pane_class field_0x51c; + /* 0x0554 */ u8 mMainProc; + /* 0x0555 */ u8 field_0x555; + /* 0x0556 */ u8 field_0x556; + /* 0x0557 */ u8 mDrawProc; + /* 0x0558 */ u8 field_0x558; + /* 0x0559 */ u8 field_0x559; + /* 0x055A */ u8 field_0x55a; + /* 0x055B */ u8 field_0x55b; + /* 0x055C */ u8 field_0x55c; + /* 0x055D */ u8 field_0x55d; + /* 0x055E */ u8 field_0x55e; + /* 0x055F */ u8 field_0x55f; + /* 0x0560 */ u8 saveMemory[3 * sizeof(card_gamedata)]; + /* 0x1BB0 */ card_pictdata* savePicDatabuf; /* 0x1BB4 */ s16 field_0x1bb4; /* 0x1BB6 */ u8 field_0x1bb6; /* 0x1BB7 */ u8 field_0x1bb7; diff --git a/include/dolphin/card.h b/include/dolphin/card.h index 6fbede8db..80493236d 100644 --- a/include/dolphin/card.h +++ b/include/dolphin/card.h @@ -7,16 +7,16 @@ extern "C" { #endif -struct CARDFileInfo { +typedef struct CARDFileInfo { /* 0x00 */ s32 chan; /* 0x04 */ s32 fileNo; /* 0x08 */ s32 offset; /* 0x0C */ s32 length; /* 0x10 */ u16 iBlock; /* 0x12 */ u16 __padding; -}; +} CARDFileInfo; -struct CARDStat { +typedef struct CARDStat { u8 fileName[32]; u32 dataLength; u32 lastModified; @@ -34,7 +34,7 @@ struct CARDStat { u32 offsetIcon[8]; u32 offsetIconTlut; u32 offsetData; -}; +} CARDStat; #define CARDGetBannerFormat(stat) ((stat)->bannerFmt & 0x03) #define CARDGetIconAnim(stat) ((stat)->bannerFmt & 0x04) @@ -79,8 +79,8 @@ s32 CARDUnmount(s32); s32 CARDMount(s32, void*, void*); s32 CARDCheck(s32); s32 CARDFreeBlocks(s32, s32*, s32*); -s32 CARDRead(CARDFileInfo*, void*, s32, s32); -s32 CARDWrite(CARDFileInfo*, const void*, s32, s32); +s32 CARDRead(CARDFileInfo* fileInfo, void* buf, s32 length, s32 offset); +s32 CARDWrite(CARDFileInfo* fileInfo, const void* buf, s32 length, s32 offset); s32 CARDGetSerialNo(s32, u64*); #ifdef __cplusplus diff --git a/include/m_Do/m_Do_MemCard.h b/include/m_Do/m_Do_MemCard.h index ddb4c4018..378f97483 100644 --- a/include/m_Do/m_Do_MemCard.h +++ b/include/m_Do/m_Do_MemCard.h @@ -3,6 +3,7 @@ #include "dolphin/os/OSMutex.h" #include "global.h" +#include "m_Do/m_Do_MemCardRWmng.h" class mDoMemCd_Ctrl_c { public: @@ -61,7 +62,7 @@ public: void getProbeStat() {} void setPictWriteDataPtr(u8*) {} - /* 0x0000 */ u8 mData[0x1650]; + /* 0x0000 */ u8 mData[3 * sizeof(card_gamedata)]; /* 0x1650 */ u8* mPictDataPtr; /* 0x1654 */ u8* mPictDataWritePtr; /* 0x1658 */ u8 mCardSlot; diff --git a/include/m_Do/m_Do_MemCardRWmng.h b/include/m_Do/m_Do_MemCardRWmng.h index e102c0872..1235ea8e4 100644 --- a/include/m_Do/m_Do_MemCardRWmng.h +++ b/include/m_Do/m_Do_MemCardRWmng.h @@ -8,47 +8,53 @@ typedef struct CARDFileInfo CARDFileInfo; struct mDoMemCdRWm_HeaderData { - /* 0x0000 */ u8 banner[0x0e00]; - /* 0x0e00 */ u8 icon[0x0200]; - /* 0x1000 */ u8 field_0x1000[0x0c00]; - /* 0x1c00 */ char comment[32]; - /* 0x1c20 */ char info[32]; -}; + /* 0x0000 */ u8 banner[0x0E00]; + /* 0x0E00 */ u8 icon[0x0200]; + /* 0x1000 */ u8 field_0x1000[0x0C00]; + /* 0x1C00 */ char comment[32]; + /* 0x1C20 */ char info[32]; +}; // Size: 0x1C40 struct card_pictdata { - u8 data[0x1ffe]; - u16 csum; -}; + /* 0x0000 */ u8 data[0x2000 - sizeof(u16)]; + /* 0x1FFE */ u16 csum; +}; // Size: 0x2000 + +STATIC_ASSERT(sizeof(card_pictdata) == 0x2000); struct card_gamedata { - u8 data[dSv_save_c::PACKED_STRUCT_SIZE]; - u64 csum; -}; + /* 0x000 */ u8 data[dSv_save_c::PACKED_STRUCT_SIZE]; + /* 0x768 */ u64 csum; +}; // Size: 0x770 struct card_savedata { - u32 saveCount; - u32 dataVersion; - card_gamedata gamedata[3]; - u32 field_0x1658[0x269]; - u32 csum; -}; + /* 0x0000 */ u32 saveCount; + /* 0x0004 */ u32 dataVersion; + /* 0x0008 */ card_gamedata gamedata[3]; + /* 0x1658 */ u8 field_0x1658[0x2000 - 3*sizeof(u32) - 3*sizeof(card_gamedata)]; + /* 0x1FFC */ u32 csum; +}; // Size: 0x2000 -s32 mDoMemCdRWm_Store(CARDFileInfo*, void*, u32); -s32 mDoMemCdRWm_Restore(CARDFileInfo*, void*, u32); +STATIC_ASSERT(sizeof(card_savedata) == 0x2000); + +STATIC_ASSERT(sizeof(card_pictdata) == sizeof(card_savedata)); + +s32 mDoMemCdRWm_Store(CARDFileInfo* card, void* data, u32 size); +s32 mDoMemCdRWm_Restore(CARDFileInfo* card, void* dst, u32 size); #if VERSION == VERSION_PAL s32 mDoMemCdRWm_Restore2(CARDFileInfo*); #endif void mDoMemCdRWm_BuildHeader(mDoMemCdRWm_HeaderData*); void mDoMemCdRWm_SetCardStat(CARDFileInfo*); BOOL mDoMemCdRWm_CheckCardStat(CARDFileInfo*); -u32 mDoMemCdRWm_CalcCheckSum(void*, u32); -u16 mDoMemCdRWm_CalcCheckSumPictData(void*, u32); +u32 mDoMemCdRWm_CalcCheckSum(void*, u32 size); +u16 mDoMemCdRWm_CalcCheckSumPictData(void*, u32 size); BOOL mDoMemCdRWm_TestCheckSumPictData(void*); void mDoMemCdRWm_SetCheckSumPictData(u8*); -u64 mDoMemCdRWm_CalcCheckSumGameData(void*, u32); +u64 mDoMemCdRWm_CalcCheckSumGameData(void*, u32 size); BOOL mDoMemCdRWm_TestCheckSumGameData(void*); void mDoMemCdRWm_SetCheckSumGameData(u8*, u8); diff --git a/src/d/d_s_logo.cpp b/src/d/d_s_logo.cpp index a1693e6c9..bc211e0fd 100644 --- a/src/d/d_s_logo.cpp +++ b/src/d/d_s_logo.cpp @@ -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 diff --git a/src/d/d_s_name.cpp b/src/d/d_s_name.cpp index c5785024f..5985e0c6c 100644 --- a/src/d/d_s_name.cpp +++ b/src/d/d_s_name.cpp @@ -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; } } diff --git a/src/m_Do/m_Do_MemCard.cpp b/src/m_Do/m_Do_MemCard.cpp index 8befe157b..233d3eef8 100644 --- a/src/m_Do/m_Do_MemCard.cpp +++ b/src/m_Do/m_Do_MemCard.cpp @@ -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 diff --git a/src/m_Do/m_Do_MemCardRWmng.cpp b/src/m_Do/m_Do_MemCardRWmng.cpp index bd807b65d..149b27358 100644 --- a/src/m_Do/m_Do_MemCardRWmng.cpp +++ b/src/m_Do/m_Do_MemCardRWmng.cpp @@ -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 &&