diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-12-20 18:30:04 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-20 18:30:04 -0800 |
| commit | bd0c601a521fedf2b6a2e1930ca280555c808564 (patch) | |
| tree | abc151d12d214b602bd95e0c80703fe1e8d754ba /include | |
| parent | 762159a990057caef57b20a617b0a1d9eb44dc6d (diff) | |
m_Do_MemCard/d_file_select wii/debug work (#2976)
* m_Do_MemCard/d_file_select wii/debug work
* fix builds
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/d_com_inf_game.h | 4 | ||||
| -rw-r--r-- | include/d/d_file_sel_warning.h | 2 | ||||
| -rw-r--r-- | include/d/d_file_select.h | 432 | ||||
| -rw-r--r-- | include/d/d_save.h | 1 | ||||
| -rw-r--r-- | include/m_Do/m_Do_MemCard.h | 77 | ||||
| -rw-r--r-- | include/m_Do/m_Do_MemCardRWmng.h | 11 | ||||
| -rw-r--r-- | include/revolution/nand.h | 16 | ||||
| -rw-r--r-- | include/revolution/sc.h | 2 |
8 files changed, 397 insertions, 148 deletions
diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 70ca68202f..388e2d6a4d 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -1216,8 +1216,8 @@ inline void dComIfGs_setCollectClothes(u8 i_clothesNo) { g_dComIfG_gameInfo.info.getPlayer().getCollect().setCollect(COLLECT_CLOTHING, i_clothesNo); } -inline void dComIfGs_setCardToMemory(char* card_ptr, int dataNum) { - g_dComIfG_gameInfo.info.card_to_memory(card_ptr, dataNum); +inline void dComIfGs_setCardToMemory(u8* card_ptr, int dataNum) { + g_dComIfG_gameInfo.info.card_to_memory((char*)card_ptr, dataNum); } inline void dComIfGs_setRodTypeLevelUp() { diff --git a/include/d/d_file_sel_warning.h b/include/d/d_file_sel_warning.h index ac13693b78..c8740b5f74 100644 --- a/include/d/d_file_sel_warning.h +++ b/include/d/d_file_sel_warning.h @@ -38,7 +38,7 @@ public: virtual ~dFile_warning_c(); - u8 getStatus() { return mStatus; } + BOOL getStatus() { return mStatus != 0; } void draw() { _draw(); } /* 0x04 */ JKRArchive* mpArchive; diff --git a/include/d/d_file_select.h b/include/d/d_file_select.h index 2628771171..db10b927e2 100644 --- a/include/d/d_file_select.h +++ b/include/d/d_file_select.h @@ -2,6 +2,7 @@ #define D_FILE_D_FILE_SELECT_H #include "d/d_com_inf_game.h" +#include "m_Do/m_Do_MemCard.h" #include "d/d_file_sel_warning.h" #include "d/d_msg_string.h" #include "d/d_name.h" @@ -15,18 +16,23 @@ public: void draw(); virtual ~dDlst_FileSel_c() { delete Scr; - delete mpMessageString; + delete mMessageString; } dDlst_FileSel_c() { - mpMessageFont[0] = mDoExt_getMesgFont(); - mpMessageFont[1] = mDoExt_getSubFont(); - mpMessageString = new dMsgString_c(); + font[0] = mDoExt_getMesgFont(); + JUT_ASSERT(104, font[0] != NULL); + + font[1] = mDoExt_getSubFont(); + JUT_ASSERT(107, font[1] != NULL); + + mMessageString = new dMsgString_c(); + JUT_ASSERT(110, mMessageString != NULL); } /* 0x04 */ J2DScreen* Scr; - /* 0x08 */ JUTFont* mpMessageFont[2]; - /* 0x0C */ dMsgString_c* mpMessageString; + /* 0x08 */ JUTFont* font[2]; + /* 0x0C */ dMsgString_c* mMessageString; }; class dFile_select3D_c { @@ -51,7 +57,7 @@ public: void setBasePane(CPaneMgr* paneMgr) { mPaneMgr = paneMgr; } void setBase2Pane(J2DPane* pane) { mPane = pane; } - /* 0x0004 */ JKRSolidHeap* mpHeap; + /* 0x0004 */ JKRSolidHeap* mpSolidHeap; /* 0x0008 */ J3DModel* mpModel; /* 0x000C */ mDoExt_bckAnm* mBckAnm; /* 0x0010 */ mDoExt_brkAnm* mBrkAnm; @@ -62,8 +68,8 @@ public: /* 0x03B0 */ csXyz field_0x03b0; /* 0x03B6 */ u8 padding[2]; /* 0x03B8 */ cXyz field_0x03b8; - /* 0x03C4 */ float field_0x03c4; - /* 0x03C8 */ float field_0x03c8; + /* 0x03C4 */ f32 field_0x03c4; + /* 0x03C8 */ f32 field_0x03c8; /* 0x03CC */ u8 field_0x03CC[0x03CE - 0x03CC]; /* 0x03CE */ u8 mMirrorIdx; /* 0x03CF */ u8 mMaskIdx; @@ -94,7 +100,7 @@ public: virtual ~dDlst_FileSelCp_c() { delete Scr; } /* 0x04 */ J2DScreen* Scr; - /* 0x08 */ bool field_0x08; + /* 0x08 */ bool isShow; /* 0x0C */ J2DPane* mpPane1; /* 0x10 */ J2DPane* mpPane2; }; @@ -107,44 +113,153 @@ public: /* 0x04 */ J2DScreen* Scr3m; }; -class dFs_HIO_c { +class dFs_HIO_c : public JORReflexible { public: dFs_HIO_c(); virtual ~dFs_HIO_c() {} + void genMessage(JORMContext*); + /* 0x0000 */ // void* vtable; - /* 0x0004 */ s8 field_0x0004; - /* 0x0005 */ u8 field_0x0005; - /* 0x0006 */ u8 field_0x0006; - /* 0x0007 */ u8 field_0x0007; - /* 0x0008 */ u8 field_0x0008; - /* 0x0009 */ u8 field_0x0009; + /* 0x0004 */ s8 no; + /* 0x0005 */ u8 select_icon_appear_frames; + /* 0x0006 */ u8 base_effect_appear_frames; + /* 0x0007 */ u8 char_switch_frames; + /* 0x0008 */ u8 select_box_appear_frames; + /* 0x0009 */ u8 copy_erase_frames; /* 0x000A */ u8 field_0x000a; - /* 0x000B */ u8 field_0x000b; - /* 0x000C */ u8 field_0x000c; + /* 0x000B */ u8 appear_display_wait_frames; + /* 0x000C */ u8 card_wait_frames; /* 0x000D */ u8 field_0x000d; /* 0x000E */ u8 field_0x000e[2]; - /* 0x0010 */ float field_0x0010[3]; + /* 0x0010 */ f32 test_frame_counts[3]; #if VERSION == VERSION_GCN_PAL u8 temp_padding[0x1D]; #endif - /* 0x001C */ u8 field_0x001c; - /* 0x001D */ u8 field_0x001d; - /* 0x001E */ u8 field_0x001e; - /* 0x001F */ u8 field_0x001f; - /* 0x0020 */ u8 field_0x0020; - /* 0x0021 */ u8 field_0x0021; - /* 0x0022 */ u8 field_0x0022; + /* 0x001C */ u8 title_mesg_check; + /* 0x001D */ u8 title_msg_check_sel; + /* 0x001E */ u8 error_mesg_check; + /* 0x001F */ u8 error_msg_check_sel; + /* 0x0020 */ u8 mask_mirror_test_display; + /* 0x0021 */ u8 test_mask_display; + /* 0x0022 */ u8 test_mirror_display; /* 0x0023 */ u8 field_0x0023; }; // Trying to define this using dSv_save_c causes alignment issues -typedef char SaveData[0xa94]; +typedef u8 SaveDataBuf[SAVEDATA_SIZE]; class dFile_select_c { public: typedef void (dFile_select_c::*DispFunc)(); + enum DataSelProc_e { + DATASELPROC_MEMCARD_CHECK_MAIN, + DATASELPROC_DATA_SELECT_IN, + DATASELPROC_DATA_SELECT_INIT, + DATASELPROC_DATA_SELECT, + DATASELPROC_DATA_SELECT_MOVE_ANIME, + DATASELPROC_SELECT_DATA_OPEN_MOVE, + DATASELPROC_SELECT_DATA_NAME_MOVE, + DATASELPROC_SELECT_DATA_OPENERASE_MOVE, + DATASELPROC_MENU_SELECT, + DATASELPROC_MENU_SELECT_MOVE_ANM, + DATASELPROC_TO_NAME_MOVE, + DATASELPROC_TO_COPY_PANE_MOVE, + DATASELPROC_TO_ERASE_PANE_MOVE, + DATASELPROC_BACK_SELECT_MOVE, + DATASELPROC_NAME_TO_DATA_SELECT_MOVE, + DATASELPROC_NAME_INPUT_WAIT, + DATASELPROC_NAME_INPUT, + DATASELPROC_NAME_INPUT_FADE, + DATASELPROC_NAME_INPUT2_MOVE, + DATASELPROC_NAME_INPUT2, + DATASELPROC_BACK_NAME_INPUT_MOVE0, + DATASELPROC_BACK_NAME_INPUT_MOVE, + DATASELPROC_COPY_DATA_TO_SELECT, + DATASELPROC_COPY_DATA_TO_SELECT_MOVE_ANM, + DATASELPROC_COPY_TO_SEL_BACK, + DATASELPROC_COPY_TO_SEL_PANE_MOVE, + DATASELPROC_YES_NO_SELECT, + DATASELPROC_YES_NO_CANCEL_MOVE, + DATASELPROC_YES_NO_CURSOR_MOVE_ANM, + DATASELPROC_CMD_EXEC_PANE_MOVE0, + DATASELPROC_COMMAND_EXEC, + DATASELPROC_DATA_ERASE_WAIT, + DATASELPROC_DATA_ERASE_WAIT2, + DATASELPROC_DATA_COPY_WAIT, + DATASELPROC_DATA_COPY_WAIT2, + DATASELPROC_COPY_PANE_MOVE_OK, + DATASELPROC_COPY_PANE_MOVE_OK2, + DATASELPROC_ERASE_PANE_MOVE_OK, + DATASELPROC_ERASE_PANE_MOVE_OK2, + DATASELPROC_ERROR_MSG_PANE_MOVE, + DATASELPROC_ERASE_END_BACK_SELECT_WAIT, + DATASELPROC_ERASE_END_BACK_SELECT, + DATASELPROC_BACK_DAT_SEL_WAIT, + DATASELPROC_BACK_DAT_SEL_WAIT2, + DATASELPROC_BACK_DAT_SEL_PANE_MOVE, + DATASELPROC_TO_NAME_MOVE2, + DATASELPROC_NEXT_MODE_WAIT, + + #if PLATFORM_WII || PLATFORM_SHIELD + DATASELPROC_DATA_SELECT_IN_COPY, + DATASELPROC_CARD_TO_NAND_DATA_COPY, + DATASELPROC_CARD_TO_NAND_DATA_COPY_WAIT, + DATASELPROC_CARD_TO_NAND_DATA_COPY_WAIT2, + DATASELPROC_CARD_TO_NAND_DATA_COPY_OK_DISP, + DATASELPROC_CARD_TO_NAND_DATA_COPY_OK_DISP2, + DATASELPROC_CARD_TO_NAND_DATA_COPY_OK_DISP3, + DATASELPROC_CARD_TO_NAND_DATA_COPY_ERR_DISP, + DATASELPROC_CARD_TO_NAND_DATA_COPY_ERR_DISP2, + DATASELPROC_CARD_TO_NAND_DATA_COPY_ERR_DISP3, + #endif + }; + + enum MemCardCheckProc_e { + MEMCARDCHECKPROC_STAT_CHECK, + MEMCARDCHECKPROC_LOAD_WAIT, + MEMCARDCHECKPROC_ERRMSG_WAIT_KEY, + MEMCARDCHECKPROC_NO_SAVE_SEL_DISP, + MEMCARDCHECKPROC_ERRMSG_WAIT_NO_SAVE_SEL, + MEMCARDCHECKPROC_ERRMSG_WAIT_FORMAT_SEL, + MEMCARDCHECKPROC_FORMAT_YES_SEL_DISP, + MEMCARDCHECKPROC_FORMAT_NO_SEL_DISP, + MEMCARDCHECKPROC_ERRMSG_WAIT_FORMAT_SEL2, + MEMCARDCHECKPROC_FORMAT_YES_SEL2_DISP, + MEMCARDCHECKPROC_FORMAT, + MEMCARDCHECKPROC_FORMAT_WAIT, + MEMCARDCHECKPROC_FORMAT_CHECK, + MEMCARDCHECKPROC_MAKE_GAMEFILE_SEL, + MEMCARDCHECKPROC_MAKE_GAMEFILE_SEL_DISP, + MEMCARDCHECKPROC_MAKE_GAMEFILE, + MEMCARDCHECKPROC_MAKE_GAMEFILE_WAIT, + MEMCARDCHECKPROC_MAKE_GAMEFILE_CHECK, + MEMCARDCHECKPROC_NO_FILESPACE_DISP, + MEMCARDCHECKPROC_GOTO_IPL_SELECT_DISP, + MEMCARDCHECKPROC_GOTO_IPL_SELECT, + MEMCARDCHECKPROC_GOTO_IPL, + MEMCARDCHECKPROC_MSG_WINDOW_INIT_OPEN, + MEMCARDCHECKPROC_MSG_WINDOW_OPEN, + MEMCARDCHECKPROC_MSG_WINDOW_CLOSE, + MEMCARDCHECKPROC_ERR_YESNO_CURSOR_MOVE_ANM, + MEMCARDCHECKPROC_SAVEDATA_CLEAR, + + #if PLATFORM_WII || PLATFORM_SHIELD + MEMCARDCHECKPROC_NAND_STAT_CHECK, + MEMCARDCHECKPROC_GAMEFILE_INIT_SEL, + MEMCARDCHECKPROC_GAMEFILE_INIT_SEL_DISP, + MEMCARDCHECKPROC_GAMEFILE_INIT, + MEMCARDCHECKPROC_GAMEFILE_INIT_CHECK, + MEMCARDCHECKPROC_LOAD_WAIT_CARD, + MEMCARDCHECKPROC_CARD_DATA_COPY_SEL, + MEMCARDCHECKPROC_CARD_DATA_COPY_SEL2_DISP, + MEMCARDCHECKPROC_CARD_DATA_COPY_SEL2, + MEMCARDCHECKPROC_LOAD_WAIT_NAND, + MEMCARDCHECKPROC_LOAD_NAND_FILE, + #endif + }; + dFile_select_c(JKRArchive*); virtual ~dFile_select_c(); void _create(); @@ -303,9 +418,43 @@ public: void setInitSaveData(); void dataSave(); + #if PLATFORM_WII || PLATFORM_SHIELD + bool GCtoWiiTimeConvert(); + void dataSelectInCopy(); + void cardToNandDataCopy(); + void cardToNandDataCopyWait(); + void cardToNandDataCopyWait2(); + void cardToNandDataCopyOkDisp(); + void cardToNandDataCopyOkDisp2(); + void cardToNandDataCopyOkDisp3(); + void cardToNandDataCopyErrDisp(); + void cardToNandDataCopyErrDisp2(); + void cardToNandDataCopyErrDisp3(); + void loadFileNAND(); + void errDispInitSet(char*); + void nandStatCheck(); + void MemCardLoadWaitCard(); + void cardDataCopySel(); + void cardDataCopySel2Disp(); + void cardDataCopySel2(); + void cardDataCopyNoSelect(); + void loadWaitNand(); + void loadNandFile(); + void gameFileInitSel(); + void gameFileInitSelDisp(); + void gameFileInit(); + void gameFileInitCheck(); + void saveDataClearInit(); + #endif + + #if DEBUG + void titleMsgCheck(); + void errorMsgCheck(); + #endif + bool getFadeFlag() { return mFadeFlag; } - int isDataNew(u8 i) { return mDataNew[i]; } - int isSelectEnd() { return mSelectEnd; } + int isDataNew(u8 i) { return mIsDataNew[i]; } + int isSelectEnd() { return mIsSelectEnd; } u8 getSelectNum() { return mSelectNum; } void setUseType(u8 type) { mUseType = type; } @@ -322,114 +471,114 @@ public: /* 0x0064 */ dSelect_cursor_c* mSelIcon2; /* 0x0068 */ dName_c* mpName; /* 0x006C */ dFile_warning_c* mpFileWarning; - /* 0x0070 */ dFile_info_c* field_0x0070[3]; - /* 0x007C */ dFile_info_c* mpFileInfo[2]; - /* 0x0084 */ J2DAnmTransform* field_0x0084; + /* 0x0070 */ dFile_info_c* mFileInfo[3]; + /* 0x007C */ dFile_info_c* mCpFileInfo[2]; + /* 0x0084 */ J2DAnmTransform* mBaseMoveAnm; /* 0x0088 */ J2DAnmTransform* field_0x0088; - /* 0x008C */ J2DAnmTransform* field_0x008c; + /* 0x008C */ J2DAnmTransform* mYnSelBck3; /* 0x0090 */ J2DAnmTransform* field_0x0090; /* 0x0094 */ J2DAnmTransform* field_0x0094; /* 0x0098 */ J2DAnmTransform* field_0x0098; /* 0x009C */ J2DAnmTransform* field_0x009c; /* 0x00A0 */ s32 field_0x00a0; - /* 0x00A4 */ CPaneMgr* field_0x00a4; + /* 0x00A4 */ CPaneMgr* mBaseMovePane; /* 0x00A8 */ u8 field_0x00a8[0xb0-0xa8]; - /* 0x00B0 */ s32 field_0x00b0; - /* 0x00B4 */ s32 field_0x00b4; + /* 0x00B0 */ s32 mBaseMoveAnmFrame; + /* 0x00B4 */ s32 mBaseMoveAnmFrameMax; /* 0x00B8 */ u8 field_0x00b8; /* 0x00B9 */ u8 field_0x00b9; /* 0x00BA */ u8 field_0x00ba; /* 0x00BB */ u8 field_0x00bb; - /* 0x00BC */ CPaneMgr* field_0x00bc[3]; + /* 0x00BC */ CPaneMgr* mSelFilePanes[3]; /* 0x00C8 */ f32 field_0x00c8[3]; /* 0x00D4 */ f32 field_0x00d4[3]; /* 0x00E0 */ s32 field_0x00e0[3]; /* 0x00EC */ s32 field_0x00ec; - /* 0x00F0 */ CPaneMgr* field_0x00f0[2]; + /* 0x00F0 */ CPaneMgr* mYnSelPane[2]; /* 0x00F8 */ s32 field_0x00f8[2]; /* 0x0100 */ s32 field_0x0100; /* 0x0104 */ s32 field_0x0104; /* 0x0108 */ bool field_0x0108; /* 0x0109 */ bool field_0x0109; /* 0x010A */ u8 field_0x10a[2]; - /* 0x010C */ J2DPane* mpPane; + /* 0x010C */ J2DPane* mBaseSubPane; /* 0x0110 */ int field_0x0110; /* 0x0114 */ int field_0x0114; - /* 0x0118 */ J2DPane* field_0x0118; - /* 0x011C */ J2DPane* field_0x011c; + /* 0x0118 */ J2DPane* m3mMenuPane; + /* 0x011C */ J2DPane* mNameBasePane; /* 0x0120 */ int field_0x0120; /* 0x0124 */ int field_0x0124; /* 0x0128 */ bool field_0x0128; /* 0x0129 */ u8 field_0x0129[0x012C - 0x0129]; - /* 0x012C */ J2DPane* field_0x012c; + /* 0x012C */ J2DPane* mErrorMsgPane; /* 0x0130 */ int field_0x0130; /* 0x0134 */ int field_0x0134; - /* 0x0138 */ CPaneMgrAlpha* field_0x0138[2]; - /* 0x0140 */ char* field_0x0140[2]; - /* 0x0148 */ u8 field_0x0148; + /* 0x0138 */ CPaneMgrAlpha* mErrorMsgTxtPane[2]; + /* 0x0140 */ char* mErrorMsgStringPtr[2]; + /* 0x0148 */ u8 mErrorTxtDispIdx; /* 0x0149 */ u8 field_0x0149; /* 0x014A */ bool field_0x014a; /* 0x014B */ bool field_0x014b; - /* 0x014C */ CPaneMgrAlpha* field_0x014c[3]; - /* 0x0158 */ CPaneMgrAlpha* field_0x0158[3]; - /* 0x0164 */ CPaneMgr* field_0x0164[3]; - /* 0x0170 */ CPaneMgr* field_0x0170[3]; - /* 0x017C */ CPaneMgr* field_0x017c[3]; - /* 0x0188 */ CPaneMgr* field_0x0188[3]; + /* 0x014C */ CPaneMgrAlpha* mDeleteEfPane[3]; + /* 0x0158 */ CPaneMgrAlpha* mCopyEfPane[3]; + /* 0x0164 */ CPaneMgr* mSelFileMoyoPane[3]; + /* 0x0170 */ CPaneMgr* mSelFileGoldPane[3]; + /* 0x017C */ CPaneMgr* mSelFileGold2Pane[3]; + /* 0x0188 */ CPaneMgr* mSelFilePane_Book_l[3]; /* 0x0194 */ u8 field_0x0194[3]; /* 0x0197 */ u8 field_0x0197[3]; /* 0x019A */ u8 field_0x019a[3]; /* 0x019D */ u8 field_0x019d[3]; - /* 0x01A0 */ CPaneMgrAlpha* field_0x01a0[2]; - /* 0x01A8 */ CPaneMgrAlpha* field_0x01a8[2]; - /* 0x01B0 */ CPaneMgrAlpha* field_0x01b0[2]; + /* 0x01A0 */ CPaneMgrAlpha* mYnSelPane_m[2]; + /* 0x01A8 */ CPaneMgrAlpha* mYnSelPane_g[2]; + /* 0x01B0 */ CPaneMgrAlpha* mYnSelPane_gr[2]; /* 0x01B8 */ u8 field_0x01b8[2]; /* 0x01BA */ u8 field_0x01ba[2]; /* 0x01BC */ u8 field_0x01bc[2]; /* 0x01BE */ u8 field_0x01be[2]; - /* 0x01C0 */ CPaneMgr* field_0x01c0[2]; - /* 0x01C8 */ J2DAnmColor* field_0x01c8; - /* 0x01CC */ s32 field_0x01cc; - /* 0x01D0 */ J2DAnmTextureSRTKey* field_0x01d0; - /* 0x01D4 */ s32 field_0x01d4; - /* 0x01D8 */ J2DAnmColor* field_0x01d8; - /* 0x01DC */ s32 field_0x01dc; - /* 0x01E0 */ J2DAnmTextureSRTKey* field_0x01e0; - /* 0x01E4 */ s32 field_0x01e4; - /* 0x01E8 */ J2DAnmTevRegKey* field_0x01e8; - /* 0x01EC */ s32 field_0x01ec; - /* 0x01F0 */ J2DAnmTextureSRTKey* field_0x01f0; - /* 0x01F4 */ s32 field_0x01f4; - /* 0x01F8 */ J2DAnmTextureSRTKey* field_0x01f8; - /* 0x01FC */ s32 field_0x01fc; - /* 0x0200 */ J2DAnmTevRegKey* field_0x0200; - /* 0x0204 */ s32 field_0x0204; + /* 0x01C0 */ CPaneMgr* mYnSelTxtPane[2]; + /* 0x01C8 */ J2DAnmColor* mFileSelBpk; + /* 0x01CC */ s32 mSelFileBpkFrame; + /* 0x01D0 */ J2DAnmTextureSRTKey* mFileSel05Btk; + /* 0x01D4 */ s32 mSelFileBtk05Frame; + /* 0x01D8 */ J2DAnmColor* mSelFileBookBpk; + /* 0x01DC */ s32 mSelFileBookBpkFrame; + /* 0x01E0 */ J2DAnmTextureSRTKey* mSelFileBookBtk; + /* 0x01E4 */ s32 mSelFileBookBtkFrame; + /* 0x01E8 */ J2DAnmTevRegKey* mSelFileBookBrk; + /* 0x01EC */ s32 mSelFileBookBrkFrame; + /* 0x01F0 */ J2DAnmTextureSRTKey* mDtEffBtk; + /* 0x01F4 */ s32 mDtEffBtkFrame; + /* 0x01F8 */ J2DAnmTextureSRTKey* mCpEffBtk; + /* 0x01FC */ s32 mCpEffBtkFrame; + /* 0x0200 */ J2DAnmTevRegKey* mCpDtEffBrk; + /* 0x0204 */ s32 mCpDtEffBrkFrame; /* 0x0208 */ u8 field_0x0208; /* 0x0209 */ u8 field_0x0209; - /* 0x020A */ u8 field_0x020a; + /* 0x020A */ u8 mFadeTimer; /* 0x020B */ u8 field_0x020b; - /* 0x020C */ CPaneMgrAlpha* field_0x020c[2]; - /* 0x0214 */ char* field_0x0214[2]; - /* 0x021C */ u8 field_0x021c; + /* 0x020C */ CPaneMgrAlpha* mHeaderTxtPane[2]; + /* 0x0214 */ char* mHeaderStringPtr[2]; + /* 0x021C */ u8 mHeaderTxtDispIdx; /* 0x021D */ u8 field_0x021d; /* 0x021E */ u8 field_0x021e; /* 0x021F */ u8 field_0x021f; - /* 0x0220 */ CPaneMgrAlpha* field_0x0220[3]; - /* 0x022C */ CPaneMgrAlpha* field_0x022c[3]; - /* 0x0238 */ CPaneMgrAlpha* field_0x0238; - /* 0x023C */ CPaneMgrAlpha* field_0x023c; - /* 0x0240 */ CPaneMgrAlpha* field_0x0240; - /* 0x0244 */ CPaneMgrAlpha* field_0x0244; + /* 0x0220 */ CPaneMgrAlpha* mFileInfoDatBasePane[3]; + /* 0x022C */ CPaneMgrAlpha* mFileInfoNoDatBasePane[3]; + /* 0x0238 */ CPaneMgrAlpha* mBbtnPane; + /* 0x023C */ CPaneMgrAlpha* mAbtnPane; + /* 0x0240 */ CPaneMgrAlpha* mModoruTxtPane; + /* 0x0244 */ CPaneMgrAlpha* mKetteiTxtPane; /* 0x024A */ bool field_0x0248; /* 0x024A */ bool field_0x0249; /* 0x024A */ u8 field_0x024a; /* 0x024B */ u8 field_0x024b; /* 0x024C */ u8 field_0x024c; /* 0x024B */ u8 field_0x024d[3]; - /* 0x0250 */ char* field_0x0250; - /* 0x0254 */ STControl* mStick; - /* 0x0258 */ u8 mDataNew[3]; - /* 0x025B */ u8 field_0x025b[3]; + /* 0x0250 */ char* mModoruStringPtr; + /* 0x0254 */ STControl* stick; + /* 0x0258 */ u8 mIsDataNew[3]; + /* 0x025B */ u8 mIsNoData[3]; /* 0x025C */ u8 field_0x025e[0x0264 - 0x025e]; /* 0x0264 */ u8 mLastSelectNum; // previously selected quest log /* 0x0265 */ u8 mSelectNum; // currently selected quest log @@ -437,88 +586,95 @@ public: /* 0x0267 */ u8 mSelectMenuNum; // currently selected menu number (for copy / start / delete) /* 0x0268 */ u8 field_0x0268; /* 0x0269 */ u8 field_0x0269; - /* 0x026A */ u8 field_0x026a; + /* 0x026A */ u8 mCpDataNum; /* 0x026B */ u8 field_0x026b; /* 0x026C */ u8 field_0x026c; - /* 0x026D */ u8 field_0x026d; - /* 0x026E */ u8 field_0x026e; - /* 0x026F */ u8 field_0x026f; - /* 0x0270 */ bool mSelectEnd; - /* 0x0271 */ u8 field_0x0271; + /* 0x026D */ u8 mCpDataToNum; + /* 0x026E */ u8 mCommand; + /* 0x026F */ u8 mDataSelProc; + /* 0x0270 */ bool mIsSelectEnd; + /* 0x0271 */ u8 mCardCheckProc; /* 0x0272 */ u8 field_0x0272; - /* 0x0273 */ u8 field_0x0273; - /* 0x0274 */ u8 field_0x0274; + /* 0x0273 */ u8 mNextCardCheckProc; + /* 0x0274 */ u8 mKeyWaitCardCheckProc; /* 0x0272 */ u8 field_0x0275[0x0280 - 0x0275]; /* 0x0281 */ bool field_0x0280; /* 0x0281 */ bool field_0x0281; /* 0x0282 */ bool field_0x0282; /* 0x0283 */ bool field_0x0283; - /* 0x0284 */ DispFunc field_0x0284; - /* 0x0290 */ DispFunc field_0x0290; - /* 0x029C */ J2DAnmTransform* field_0x029c; - /* 0x02A0 */ J2DAnmTransform* field_0x02a0; - /* 0x02A4 */ CPaneMgr* field_0x02a4[3]; + /* 0x0284 */ DispFunc mWindowCloseMsgDispCb; + /* 0x0290 */ DispFunc mKeyWaitMsgDispCb; + /* 0x029C */ J2DAnmTransform* mCpSelBck; + /* 0x02A0 */ J2DAnmTransform* mCpSelBck2; + /* 0x02A4 */ CPaneMgr* mCpSelPane[3]; /* 0x02B0 */ u8 field_0x02b0[0x2b4-0x2b0]; /* 0x02B4 */ int field_0x02b4[3]; - /* 0x02C0 */ CPaneMgr* field_0x02c0[2]; - /* 0x02C8 */ CPaneMgr* field_0x02c8[2]; - /* 0x02D0 */ CPaneMgr* field_0x02d0[2]; - /* 0x02D8 */ CPaneMgr* field_0x02d8[2]; + /* 0x02C0 */ CPaneMgr* mCpSelPane_moyo[2]; + /* 0x02C8 */ CPaneMgr* mCpSelPane_gold[2]; + /* 0x02D0 */ CPaneMgr* mCpSelPane_gold2[2]; + /* 0x02D8 */ CPaneMgr* mCpSelPane_book[2]; /* 0x02E0 */ u8 field_0x02e0[2]; /* 0x02E2 */ u8 field_0x02e2[2]; /* 0x02E4 */ u8 field_0x02e4[2]; /* 0x02E4 */ u8 field_0x02e6[0x2e8-0x2e6]; - /* 0x02E8 */ J2DAnmColor* field_0x02e8; - /* 0x02EC */ s32 field_0x02ec; - /* 0x02F0 */ J2DAnmTextureSRTKey* field_0x02f0; - /* 0x02F4 */ s32 field_0x02f4; - /* 0x02F8 */ J2DAnmColor* field_0x02f8; - /* 0x02FC */ s32 field_0x02fc; - /* 0x0300 */ J2DAnmTextureSRTKey* field_0x0300; - /* 0x0304 */ s32 field_0x0304; - /* 0x0308 */ J2DAnmTevRegKey* field_0x0308; - /* 0x030C */ s32 field_0x030c; - /* 0x0310 */ J2DAnmTransform* field_0x0310; - /* 0x0314 */ J2DAnmTransform* field_0x0314; - /* 0x0318 */ J2DAnmColor* field_0x0318; - /* 0x031C */ s32 field_0x031c; - /* 0x0320 */ J2DAnmTextureSRTKey* field_0x0320; - /* 0x0324 */ s32 field_0x0324; - /* 0x0328 */ J2DAnmTransform* field_0x0328; - /* 0x032C */ J2DAnmTransform* field_0x032c; - /* 0x0330 */ J2DAnmColor* field_0x0330; - /* 0x0334 */ s32 field_0x0334; - /* 0x0338 */ J2DAnmTextureSRTKey* field_0x0338; - /* 0x033C */ s32 field_0x033c; - /* 0x0340 */ CPaneMgr* field_0x0340[3]; + /* 0x02E8 */ J2DAnmColor* mCpSelBpk; + /* 0x02EC */ s32 mCpSelBpkFrame; + /* 0x02F0 */ J2DAnmTextureSRTKey* mCpSel03Btk; + /* 0x02F4 */ s32 mCpSel03BtkFrame; + /* 0x02F8 */ J2DAnmColor* mCpSelBookBpk; + /* 0x02FC */ s32 mCpSelBookBpkFrame; + /* 0x0300 */ J2DAnmTextureSRTKey* mCpSelBookBtk; + /* 0x0304 */ s32 mCpSelBookBtkFrame; + /* 0x0308 */ J2DAnmTevRegKey* mCpSelBookBrk; + /* 0x030C */ s32 mCpSelBookBrkFrame; + /* 0x0310 */ J2DAnmTransform* mYnSelBck; + /* 0x0314 */ J2DAnmTransform* mYnSelBck2; + /* 0x0318 */ J2DAnmColor* mYnSelBpk; + /* 0x031C */ s32 mYnSelBpkFrame; + /* 0x0320 */ J2DAnmTextureSRTKey* mYnSelBtk; + /* 0x0324 */ s32 mYnSelBtkFrame; + /* 0x0328 */ J2DAnmTransform* m3mBck; + /* 0x032C */ J2DAnmTransform* m3mBck2; + /* 0x0330 */ J2DAnmColor* m3mBpk; + /* 0x0334 */ s32 m3mBpkFrame; + /* 0x0338 */ J2DAnmTextureSRTKey* m3mBtk; + /* 0x033C */ s32 m3mBtkFrame; + /* 0x0340 */ CPaneMgr* m3mSelPane[3]; /* 0x034C */ s32 field_0x034c[3]; /* 0x0358 */ int field_0x0358; /* 0x035C */ int field_0x035c; /* 0x0360 */ bool field_0x0360; /* 0x0361 */ u8 field_0x0361[3]; - /* 0x0364 */ CPaneMgr* mpPaneAlpha1[3]; - /* 0x0370 */ CPaneMgr* mpPaneAlpha2[3]; - /* 0x037C */ CPaneMgr* mpPaneAlpha3[3]; + /* 0x0364 */ CPaneMgr* m3mSelPane_mo[3]; + /* 0x0370 */ CPaneMgr* m3mSelPane_g[3]; + /* 0x037C */ CPaneMgr* m3mSelPane_gr[3]; /* 0x0388 */ u8 field_0x0388[3]; /* 0x038B */ u8 field_0x038b[3]; /* 0x038E */ u8 field_0x038e[3]; /* 0x0390 */ u8 field_0x0391[3]; - /* 0x0394 */ CPaneMgr* mpPaneMgr2[3]; - /* 0x03A0 */ J2DAnmTextureSRTKey* field_0x03a0; - /* 0x03A4 */ s32 field_0x03a4; - /* 0x03A8 */ CPaneMgr* field_0x03a8; - /* 0x03AC */ s16 field_0x03ac; + /* 0x0394 */ CPaneMgr* m3mSelTextPane[3]; + /* 0x03A0 */ J2DAnmTextureSRTKey* mSelDtBtk; + /* 0x03A4 */ s32 mSelDtBtkFrame; + /* 0x03A8 */ CPaneMgr* mSelDtPane_mset; + /* 0x03AC */ s16 mWaitTimer; /* 0x03AE */ u8 field_0x03AE[0x03B0 - 0x03AE]; /* 0x03B0 */ u8 mUseType; /* 0x03B1 */ u8 field_0x03b1; /* 0x03B2 */ u16 field_0x03b2; /* 0x03B4 */ s32 field_0x03b4; - /* 0x03B8 */ SaveData mSave[3]; - /* 0x0D10 */ //u8 field_0x0D10[0x2374 - 0xD10]; + /* 0x03B8 */ SaveDataBuf mSaveData[SAVEDATA_NUM]; /* 0x2374 */ bool mFadeFlag; /* 0x2375 */ bool mHasDrawn; - /* 0x2376 */ u8 field_0x2376[0x2378 - 0x2376]; - /* 0x2378 */ J2DPicture* field_0x2378; + + #if PLATFORM_GCN + /* 0x2378 */ J2DPicture* mpFadePict; + #endif + + #if PLATFORM_WII || PLATFORM_SHIELD + /* 0x2376 */ u8 field_0x2376[SAVEFILE_SIZE]; + /* 0x4332 */ u8 field_0x4332; + /* 0x4333 */ u8 field_0x4333; + #endif }; STATIC_ASSERT(sizeof(dFile_select_c) == 0x237C); diff --git a/include/d/d_save.h b/include/d/d_save.h index ca7987add2..e8eccb9d1b 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -469,6 +469,7 @@ class dSv_player_info_c { public: void init(); char* getLinkName() { return mPlayerName; } + const char* getPlayerName() const { return mPlayerName; } char* getHorseName() { return mHorseName; } void setPlayerName(const char* i_name) { strcpy((char*)mPlayerName, i_name); } void setHorseName(const char* i_name) { strcpy((char*)mHorseName, i_name); } diff --git a/include/m_Do/m_Do_MemCard.h b/include/m_Do/m_Do_MemCard.h index 128a6a6b52..1dd2c37b13 100644 --- a/include/m_Do/m_Do_MemCard.h +++ b/include/m_Do/m_Do_MemCard.h @@ -5,10 +5,13 @@ #include <dolphin/os.h> #include "global.h" -#define SAVEDATA_SIZE 0xA94 -#define SECTOR_SIZE 0x2000 -#define SAVEDATA_FILE_SIZE 0x8000 -#define SAVEDATA_VERSION 6 +#define SAVEDATA_SIZE 0xA94 // Size of 1 Quest Log +#define SAVEDATA_NUM 3 // Max number of Quest Logs +#define SECTOR_SIZE 0x2000 // MemCard sector size +#define CARD_FILE_SIZE 0x8000 // MemCard file size +#define SAVEDATA_VERSION 6 // Save Data version + +#define SAVEFILE_SIZE (SAVEDATA_SIZE * SAVEDATA_NUM) class mDoMemCd_Ctrl_c { public: @@ -19,6 +22,12 @@ public: COMM_FORMAT_e, COMM_ATTACH_e, COMM_DETACH_e, + + #if PLATFORM_WII || PLATFORM_SHIELD + COMM_RESTORE_NAND_e, + COMM_STORE_NAND_e, + COMM_STORE_SETUP_NAND_e, + #endif }; enum CardState_e { @@ -38,6 +47,20 @@ public: CARD_STATE_13_e, }; + enum NANDState_e { + NAND_STATE_AUTHENTICATION_e, + NAND_STATE_READY_e, + NAND_STATE_NO_FILE_e, + NAND_STATE_READ_e, + NAND_STATE_WRITE_e, + NAND_STATE_FORMAT_e, + NAND_STATE_BROKEN_e, + NAND_STATE_INSSPACE_e, + NAND_STATE_NOENT_e, + NAND_STATE_FATAL_ERROR_e, + NAND_STATE_10_e, + }; + mDoMemCd_Ctrl_c(); void ThdInit(); @@ -61,6 +84,20 @@ public: s32 checkspace(); void setCardState(s32); + #if PLATFORM_WII || PLATFORM_SHIELD + void loadNAND(); + void restoreNAND(); + s32 LoadSyncNAND(void* i_buffer, u32 i_size, u32 i_position); + void saveNAND(void* i_buffer, u32 i_size, u32 i_position); + void storeNAND(); + s32 SaveSyncNAND(); + void storeSetUpNAND(); + void setNandState(s32); + u32 getStatusNAND(); + s32 chekNANDFile(); + s32 checkspaceNAND(); + #endif + bool isCardCommNone() { return mCardCommand == COMM_NONE_e; } u8 getProbeStat() { return mProbeStat; } void clearProbeStat() { mProbeStat = 2; } @@ -75,7 +112,7 @@ public: mSerialNo = serial_no; } - /* 0x0000 */ u8 mData[SAVEDATA_SIZE * 3]; + /* 0x0000 */ u8 mData[SAVEFILE_SIZE]; /* 0x1FBC */ u8 mChannel; /* 0x1FBD */ u8 mCopyToPos; /* 0x1FBE */ u8 mProbeStat; @@ -84,7 +121,7 @@ public: /* 0x1FC8 */ s32 field_0x1fc8; /* 0x1FCC */ OSMutex mMutex; /* 0x1FE4 */ OSCond mCond; - /* 0x1FEC */ u32 mNandState; + /* 0x1FEC */ s32 mNandState; /* 0x1FF0 */ u64 mSerialNo; /* 0x1FF8 */ u32 mDataVersion; }; // Size: 0x2000 @@ -135,7 +172,7 @@ inline void mDoMemCd_setCopyToPos(u8 i_pos) { g_mDoMemCd_control.setCopyToPos(i_pos); } -inline u32 mDoMemCd_getStatus(u8 param_0) { +inline u32 mDoMemCd_getStatus(u32 param_0) { return g_mDoMemCd_control.getStatus(param_0); } @@ -167,4 +204,30 @@ inline void mDoMemCd_UpDate() { g_mDoMemCd_control.update(); } +#if PLATFORM_WII || PLATFORM_SHIELD +inline void mDoMemCd_saveNAND(void* data, u32 length, u32 position) { + g_mDoMemCd_control.saveNAND(data, length, position); +} + +inline s32 mDoMemCd_SaveSyncNAND() { + return g_mDoMemCd_control.SaveSyncNAND(); +} + +inline u32 mDoMemCd_LoadSyncNAND(void* i_buffer, u32 i_size, u32 i_position) { + return g_mDoMemCd_control.LoadSyncNAND(i_buffer, i_size, i_position); +} + +inline u32 mDoMemCd_getStatusNAND() { + return g_mDoMemCd_control.getStatusNAND(); +} + +inline void mDoMemCd_LoadNAND() { + g_mDoMemCd_control.loadNAND(); +} + +inline s32 mDoMemCd_checkNANDFile() { + return g_mDoMemCd_control.chekNANDFile(); +} +#endif + #endif /* M_DO_M_DO_MEMCARD_H */ diff --git a/include/m_Do/m_Do_MemCardRWmng.h b/include/m_Do/m_Do_MemCardRWmng.h index d93e73a57c..5263a53327 100644 --- a/include/m_Do/m_Do_MemCardRWmng.h +++ b/include/m_Do/m_Do_MemCardRWmng.h @@ -1,8 +1,13 @@ #ifndef M_DO_M_DO_MEMCARDRWMNG_H #define M_DO_M_DO_MEMCARDRWMNG_H +#include "global.h" #include <dolphin/card.h> +#if PLATFORM_WII || PLATFORM_SHIELD +#include <revolution/nand.h> +#endif + struct mDoMemCdRWm_HeaderData { /* 0x0000 */ u8 mBannerTexData[0xC00]; /* 0x0C00 */ u8 mBannerPalData[0x200]; @@ -26,4 +31,10 @@ static u64 mDoMemCdRWm_CalcCheckSumGameData(void* data, u32 size); BOOL mDoMemCdRWm_TestCheckSumGameData(void* data); void mDoMemCdRWm_SetCheckSumGameData(u8* data, u8 dataNum); +#if PLATFORM_WII || PLATFORM_SHIELD +s32 mDoMemCdRWm_RestoreNAND(NANDFileInfo* param_0, void* param_1, u32 param_2); +s32 mDoMemCdRWm_StoreNAND(NANDFileInfo* param_0, void* param_1, u32 param_2); +s32 mDoMemCdRWm_StoreBannerNAND(NANDFileInfo*); +#endif + #endif /* M_DO_M_DO_MEMCARDRWMNG_H */ diff --git a/include/revolution/nand.h b/include/revolution/nand.h index cafe72b054..a6c910bdf2 100644 --- a/include/revolution/nand.h +++ b/include/revolution/nand.h @@ -120,6 +120,16 @@ typedef struct { u8 iconTexture[8][48 * 48 * 2]; } NANDBanner; +#define NAND_STAT_SPEED_END 0 +#define NAND_STAT_SPEED_FAST 1 +#define NAND_STAT_SPEED_MIDDLE 2 +#define NAND_STAT_SPEED_SLOW 3 +#define NAND_STAT_SPEED_MASK 3 + +#define NANDSetIconSpeed(stat, n, f) \ + ((stat).iconSpeed = \ + (u16)(((stat).iconSpeed & ~(NAND_STAT_SPEED_MASK << (2 * (n)))) | ((f) << (2 * (n))))) + typedef void (*NANDCallback)(s32, NANDCommandBlock*); typedef void (*NANDAsyncCallback)(s32 result, struct NANDCommandBlock* block); @@ -181,8 +191,14 @@ s32 NANDPrivateOpenAsync(const char*, NANDFileInfo*, const u8, NANDCallback, NAN s32 NANDClose(NANDFileInfo*); s32 NANDCloseAsync(NANDFileInfo*, NANDCallback, NANDCommandBlock*); +#ifdef SDK_SEP2006 +s32 NANDSafeOpen(const char* path, NANDFileInfo* info, const u8 accType, void* buf, const u32 length); +s32 NANDSafeClose(NANDFileInfo* info); +#else s32 NANDSimpleSafeOpen(const char* path, NANDFileInfo* info, const u8 accType, void* buf, const u32 length); s32 NANDSimpleSafeClose(NANDFileInfo* info); +#endif + s32 NANDPrivateSafeOpenAsync(const char* path, NANDFileInfo* info, const u8 accType, void* buf, const u32 length, NANDCallback cb, NANDCommandBlock* block); s32 NANDSafeCloseAsync(NANDFileInfo* info, NANDCallback cb, NANDCommandBlock* block); diff --git a/include/revolution/sc.h b/include/revolution/sc.h index ef8bc2c636..35bf4c639f 100644 --- a/include/revolution/sc.h +++ b/include/revolution/sc.h @@ -147,6 +147,8 @@ BOOL SCReplaceU8Item(u8 data, SCItemID id); u32 SCCheckStatus(void); s32 SCReloadConfFileAsync(u8* bufp, u32 bufSize, SCReloadConfFileCallback callback); +BOOL SCFlush(void); + #ifdef __cplusplus } #endif |
