From bd0c601a521fedf2b6a2e1930ca280555c808564 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Sat, 20 Dec 2025 18:30:04 -0800 Subject: [PATCH] m_Do_MemCard/d_file_select wii/debug work (#2976) * m_Do_MemCard/d_file_select wii/debug work * fix builds --- config/RZDE01_00/splits.txt | 3 +- configure.py | 3 + include/d/d_com_inf_game.h | 4 +- include/d/d_file_sel_warning.h | 2 +- include/d/d_file_select.h | 432 ++- include/d/d_save.h | 1 + include/m_Do/m_Do_MemCard.h | 77 +- include/m_Do/m_Do_MemCardRWmng.h | 11 + include/revolution/nand.h | 16 + include/revolution/sc.h | 2 + src/d/d_file_select.cpp | 4570 +++++++++++++++++++----------- src/d/d_map.cpp | 1 + src/d/d_menu_option.cpp | 4 +- src/d/d_menu_save.cpp | 10 +- src/m_Do/m_Do_MemCard.cpp | 405 ++- src/m_Do/m_Do_MemCardRWmng.cpp | 160 +- 16 files changed, 3923 insertions(+), 1778 deletions(-) diff --git a/config/RZDE01_00/splits.txt b/config/RZDE01_00/splits.txt index 7cc246f20f8..22e241bf629 100644 --- a/config/RZDE01_00/splits.txt +++ b/config/RZDE01_00/splits.txt @@ -109,7 +109,7 @@ m_Do/m_Do_dvd_thread.cpp: .ctors start:0x803CE254 end:0x803CE258 .data start:0x803F6A80 end:0x803F6DC8 .bss start:0x804539E0 end:0x80455D60 - .sdata start:0x80537770 end:0x805377B8 + .sdata start:0x80537770 end:0x805377B0 m_Do/m_Do_DVDError.cpp: .text start:0x8001B8E8 end:0x8001BA54 @@ -120,6 +120,7 @@ m_Do/m_Do_MemCard.cpp: .ctors start:0x803CE258 end:0x803CE25C .data start:0x803F6DC8 end:0x803F6FB8 .bss start:0x804580C0 end:0x8046A3E0 + .sdata start:0x805377B0 end:0x805377B8 m_Do/m_Do_MemCardRWmng.cpp: .text start:0x8001CDAC end:0x8001D9F8 diff --git a/configure.py b/configure.py index e439a91fe7f..f29f1d87628 100755 --- a/configure.py +++ b/configure.py @@ -426,6 +426,9 @@ if config.version != "ShieldD": else: cflags_framework.extend(["-inline noauto", "-O3,s", "-sym on", "-str reuse,pool,readonly"]) +if config.version in ["RZDE01_00", "RZDE01_02", "RZDP01", "RZDJ01"]: + cflags_framework.extend(["-DSDK_SEP2006"]) + # REL flags cflags_rel = [ *cflags_framework, diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 70ca68202f3..388e2d6a4df 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 ac13693b786..c8740b5f746 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 26287711717..db10b927e22 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 ca7987add2a..e8eccb9d1b0 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 128a6a6b52f..1dd2c37b13c 100644 --- a/include/m_Do/m_Do_MemCard.h +++ b/include/m_Do/m_Do_MemCard.h @@ -5,10 +5,13 @@ #include #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 d93e73a57ce..5263a533275 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 +#if PLATFORM_WII || PLATFORM_SHIELD +#include +#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 cafe72b0546..a6c910bdf2a 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 ef8bc2c636f..35bf4c639ff 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 diff --git a/src/d/d_file_select.cpp b/src/d/d_file_select.cpp index 87ae6c1c02e..153811b6feb 100644 --- a/src/d/d_file_select.cpp +++ b/src/d/d_file_select.cpp @@ -3,7 +3,7 @@ * dolzel2 - Quest Log Management (File Select Menu) */ -#include "d/dolzel.h" // IWYU pragma: keep +#include "d/dolzel.h" // IWYU pragma: keep #include "JSystem/J2DGraph/J2DAnmLoader.h" #include "JSystem/J2DGraph/J2DTextBox.h" @@ -15,175 +15,244 @@ #include "d/d_lib.h" #include "d/d_meter2_info.h" #include "d/d_msg_string.h" +#include "d/d_s_play.h" #include "f_op/f_op_msg_mng.h" -#include "m_Do/m_Do_MemCard.h" #include "m_Do/m_Do_MemCardRWmng.h" #include "m_Do/m_Do_Reset.h" #include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_graphic.h" static s32 SelStartFrameTbl[3] = { - 0x0000003B, - 0x00000063, - 0x0000008B, + 59, + 99, + 139, }; static s32 SelEndFrameTbl[3] = { - 0x00000045, - 0x0000006D, - 0x00000095, + 69, + 109, + 149, }; static s32 SelOpenStartFrameTbl[3] = { - 0x000000F8, - 0x000001C0, - 0x00000288, + 248, + 448, + 648, }; static s32 SelOpenEndFrameTbl[3] = { - 0x00000103, - 0x000001CC, - 0x00000293, + 259, + 460, + 659, }; static s32 MenuSelStartFrameTbl[3] = { - 0x000007CD, - 0x00000382, - 0x00000390, + 1997, + 898, + 912, }; static s32 MenuSelEndFrameTbl[3] = { - 0x000007DB, - 0x0000038E, - 0x00000382, + 2011, + 910, + 898, }; static u64 l_tagName13[3] = {'w_dat_i0', 'w_dat_i1', 'w_dat_i2'}; dFs_HIO_c::dFs_HIO_c() { - field_0x0006 = 5; - field_0x0007 = 5; + base_effect_appear_frames = 5; + char_switch_frames = 5; field_0x000a = 60; - field_0x0008 = 5; - field_0x0009 = 15; - field_0x0005 = 5; - field_0x000b = 15; + select_box_appear_frames = 5; + copy_erase_frames = 15; + select_icon_appear_frames = 5; + appear_display_wait_frames = 15; field_0x000d = 15; - field_0x000c = 90; - field_0x0010[0] = 1.11f; - field_0x0010[1] = 1.11f; - field_0x0010[2] = 1.11f; - field_0x001c = 0; - field_0x001d = 0; - field_0x001e = 0; - field_0x001f = 0; - field_0x0020 = 0; - field_0x0021 = 0; - field_0x0022 = 0; + card_wait_frames = 90; + test_frame_counts[0] = 1.11f; + test_frame_counts[1] = 1.11f; + test_frame_counts[2] = 1.11f; + title_mesg_check = FALSE; + title_msg_check_sel = 0; + error_mesg_check = FALSE; + error_msg_check_sel = 0; + mask_mirror_test_display = FALSE; + test_mask_display = 0; + test_mirror_display = 0; } +#if DEBUG +void dFs_HIO_c::genMessage(JORMContext* mctx) { + mctx->genLabel("\n*****タイトルメッセージチェック*****\n", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genCheckBox("ON", &title_mesg_check, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + + mctx->genLabel("\n*****エラーメッセージチェック*****\n", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genCheckBox("ON", &error_mesg_check, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + + mctx->genLabel("\n*****出現 表示調整*****\n", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genSlider("表示待ちフレーム", &appear_display_wait_frames, 0, 120, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genSlider("カード待ちフレーム", &card_wait_frames, 0, 120, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genSlider("本エフェクト出現フレーム", &base_effect_appear_frames, 0, 120, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genSlider("文字切り替えフレーム", &char_switch_frames, 0, 120, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genSlider("選択アイコン", &select_icon_appear_frames, 0, 120, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genSlider("選択枠", &select_box_appear_frames, 0, 120, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + + mctx->genLabel("\nコピー、消去エフェクト出現、消去\n", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genSlider("フレーム数", ©_erase_frames, 0, 120, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + + mctx->genLabel("\n***** 鏡、仮面表示テスト *****\n", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genCheckBox("ON", &mask_mirror_test_display, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->startComboBox("仮面", &test_mask_display, 0, NULL, 0xFFFF, 0xFFFF, 0x100, 0x1a); + mctx->genComboBoxItem("0", 0); + mctx->genComboBoxItem("1", 1); + mctx->genComboBoxItem("2", 2); + mctx->genComboBoxItem("3", 3); + mctx->genComboBoxItem("4", 4); + mctx->endComboBox(); + + mctx->startComboBox("鏡", &test_mirror_display, 0, NULL, 0xFFFF, 0xFFFF, 0x100, 0x1a); + mctx->genComboBoxItem("0", 0); + mctx->genComboBoxItem("1", 1); + mctx->genComboBoxItem("2", 2); + mctx->genComboBoxItem("3", 3); + mctx->genComboBoxItem("4", 4); + mctx->endComboBox(); + + mctx->genLabel("\n*****テスト調整*****\n", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genSlider("フレーム1", &test_frame_counts[0], 1.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genSlider("フレーム2", &test_frame_counts[1], 1.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genSlider("フレーム3", &test_frame_counts[2], 1.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); +} +#endif + +static dFs_HIO_c g_fsHIO; + dFile_select_c::dFile_select_c(JKRArchive* i_archiveP) { mpArchive = i_archiveP; mpFileSelect3d = new dFile_select3D_c(); } dFile_select_c::~dFile_select_c() { - for (int i = 0; i < 3; i = i + 1) { - delete field_0x0164[i]; - delete field_0x0170[i]; - delete field_0x017c[i]; - delete mpPaneAlpha1[i]; - delete mpPaneAlpha2[i]; - delete mpPaneAlpha3[i]; - delete mpPaneMgr2[i]; - delete field_0x0188[i]; - delete field_0x014c[i]; - delete field_0x0158[i]; - delete field_0x00bc[i]; - delete field_0x0340[i]; - delete field_0x0070[i]; + int i; + + for (i = 0; i < 3; i++) { + delete mSelFileMoyoPane[i]; + delete mSelFileGoldPane[i]; + delete mSelFileGold2Pane[i]; + delete m3mSelPane_mo[i]; + delete m3mSelPane_g[i]; + delete m3mSelPane_gr[i]; + delete m3mSelTextPane[i]; + delete mSelFilePane_Book_l[i]; + delete mDeleteEfPane[i]; + delete mCopyEfPane[i]; + delete mSelFilePanes[i]; + delete m3mSelPane[i]; + delete mFileInfo[i]; } - delete field_0x00a4; - for (int i = 0; i < 2; i = i + 1) { - delete field_0x00f0[i]; - delete field_0x01a0[i]; - delete field_0x01a8[i]; - delete field_0x01b0[i]; - delete field_0x020c[i]; - delete field_0x0138[i]; - delete field_0x01c0[i]; - delete mpFileInfo[i]; - delete field_0x02a4[i]; - delete field_0x02c0[i]; - delete field_0x02c8[i]; - delete field_0x02d0[i]; - delete field_0x02d8[i]; + + delete mBaseMovePane; + + for (i = 0; i < 2; i++) { + delete mYnSelPane[i]; + delete mYnSelPane_m[i]; + delete mYnSelPane_g[i]; + delete mYnSelPane_gr[i]; + delete mHeaderTxtPane[i]; + delete mErrorMsgTxtPane[i]; + delete mYnSelTxtPane[i]; + delete mCpFileInfo[i]; + delete mCpSelPane[i]; + delete mCpSelPane_moyo[i]; + delete mCpSelPane_gold[i]; + delete mCpSelPane_gold2[i]; + delete mCpSelPane_book[i]; } - delete field_0x0238; - delete field_0x0240; - delete field_0x023c; - delete field_0x0244; - delete field_0x0084; + + delete mBbtnPane; + delete mModoruTxtPane; + delete mAbtnPane; + delete mKetteiTxtPane; + delete mBaseMoveAnm; delete field_0x0088; - delete field_0x008c; - delete field_0x01c8; - delete field_0x01d0; - delete field_0x01d8; - delete field_0x01e0; - delete field_0x01e8; - delete field_0x01f0; - delete field_0x01f8; - delete field_0x0200; + delete mYnSelBck3; + delete mFileSelBpk; + delete mFileSel05Btk; + delete mSelFileBookBpk; + delete mSelFileBookBtk; + delete mSelFileBookBrk; + delete mDtEffBtk; + delete mCpEffBtk; + delete mCpDtEffBrk; delete field_0x0090; delete field_0x0094; delete field_0x0098; delete field_0x009c; + mDoExt_removeMesgFont(); mDoExt_removeSubFont(); - delete mStick; + + delete stick; delete mSelIcon; delete mSelIcon2; delete mpName; delete mpFileWarning; - delete field_0x029c; - delete field_0x02a0; - delete field_0x02e8; - delete field_0x02f0; - delete field_0x02f8; - delete field_0x0300; - delete field_0x0308; - delete field_0x0310; - delete field_0x0314; - delete field_0x0318; - delete field_0x0320; - delete field_0x0328; - delete field_0x032c; - delete field_0x0330; - delete field_0x0338; - delete field_0x03a0; - delete field_0x03a8; + + delete mCpSelBck; + delete mCpSelBck2; + delete mCpSelBpk; + delete mCpSel03Btk; + delete mCpSelBookBpk; + delete mCpSelBookBtk; + delete mCpSelBookBrk; + + delete mYnSelBck; + delete mYnSelBck2; + delete mYnSelBpk; + delete mYnSelBtk; + + delete m3mBck; + delete m3mBck2; + delete m3mBpk; + delete m3mBtk; + + delete mSelDtBtk; + delete mSelDtPane_mset; + mpFileSelect3d->_delete(); delete mpFileSelect3d; - delete field_0x2378; - + + #if PLATFORM_GCN + delete mpFadePict; dComIfGp_getMain2DArchive()->removeResourceAll(); + #endif + dComIfGp_getCollectResArchive()->removeResourceAll(); + + mDoHIO_DELETE_CHILD(g_fsHIO.no); } -static dFs_HIO_c g_fsHIO; - void dFile_select_c::_create() { - mDoGph_gInf_c::setFadeColor(static_cast(g_blackColor)); - mStick = new STControl(2, 2, 1, 1, 0.9f, 0.5f, 0, 0x2000); - g_fsHIO.field_0x0004 = -1; + int i; - for (int i = 0; i < 3; i++) { - mDataNew[i] = 0; - field_0x025b[i] = 0; + mDoGph_gInf_c::setFadeColor(static_cast(g_blackColor)); + + stick = new STControl(2, 2, 1, 1, 0.9f, 0.5f, 0, 0x2000); + JUT_ASSERT(355, stick != NULL); + + g_fsHIO.no = mDoHIO_CREATE_CHILD("ファイルセレクト画面", &g_fsHIO); + + for (i = 0; i < 3; i++) { + mIsDataNew[i] = false; + mIsNoData[i] = false; } mSelectNum = 0; - + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4332 = 0; + #endif + dComIfGs_init(); dComIfGp_itemDataInit(); dComIfGs_setNewFile(0); @@ -199,7 +268,7 @@ void dFile_select_c::_create() { } typedef void (dFile_select_c::*DataSelProcFunc)(void); -static DataSelProcFunc DataSelProc[47] = { +static DataSelProcFunc DataSelProc[] = { &dFile_select_c::MemCardCheckMain, &dFile_select_c::dataSelectIn, &dFile_select_c::dataSelectInit, @@ -247,28 +316,57 @@ static DataSelProcFunc DataSelProc[47] = { &dFile_select_c::backDatSelPaneMove, &dFile_select_c::ToNameMove2, &dFile_select_c::nextModeWait, + + #if PLATFORM_WII || PLATFORM_SHIELD + &dFile_select_c::dataSelectInCopy, + &dFile_select_c::cardToNandDataCopy, + &dFile_select_c::cardToNandDataCopyWait, + &dFile_select_c::cardToNandDataCopyWait2, + &dFile_select_c::cardToNandDataCopyOkDisp, + &dFile_select_c::cardToNandDataCopyOkDisp2, + &dFile_select_c::cardToNandDataCopyOkDisp3, + &dFile_select_c::cardToNandDataCopyErrDisp, + &dFile_select_c::cardToNandDataCopyErrDisp2, + &dFile_select_c::cardToNandDataCopyErrDisp3, + #endif }; void dFile_select_c::_move() { + #if DEBUG + if (g_fsHIO.title_mesg_check) { + titleMsgCheck(); + } + + if (g_fsHIO.error_mesg_check) { + errorMsgCheck(); + } + #endif + dMeter2Info_decMsgKeyWaitTimer(); + #if PLATFORM_GCN s32 drive_status = DVDGetDriveStatus(); - - if (drive_status != DVD_STATE_END && drive_status != DVD_STATE_BUSY && field_0x03b1 != 0) { + if (drive_status != DVD_STATE_END && drive_status != DVD_STATE_BUSY && field_0x03b1) { field_0x03b1 = 0; } + #endif - if ((mDoMemCd_getProbeStat() == 0 || mDoMemCd_getProbeStat() == 1) && (mDoRst::isReset() == 0 && field_0x03b1 == 0)) { - if (field_0x2378->getAlpha() != 0) { - field_0x2378->setAlpha(0); + #if !PLATFORM_WII + if ((mDoMemCd_getProbeStat() == 0 || mDoMemCd_getProbeStat() == 1) && + (!mDoRst::isReset() && !field_0x03b1)) + { + #if PLATFORM_GCN + if (mpFadePict->getAlpha() != 0) { + mpFadePict->setAlpha(0); } - - field_0x026f = 0; - field_0x0271 = 0; - - } + #endif - (this->*DataSelProc[field_0x026f])(); + mDataSelProc = DATASELPROC_MEMCARD_CHECK_MAIN; + mCardCheckProc = MEMCARDCHECKPROC_STAT_CHECK; + } + #endif + + (this->*DataSelProc[mDataSelProc])(); selFileWakuAnm(); bookIconAnm(); @@ -280,7 +378,7 @@ void dFile_select_c::_move() { m3mSel.Scr3m->animation(); mSelDt.ScrDt->animation(); - if (mCpSel.field_0x08) { + if (mCpSel.isShow) { selCopyFileWakuAnm(); copyBookIconAnm(); mCpSel.Scr->animation(); @@ -292,189 +390,239 @@ void dFile_select_c::_move() { mDoMemCd_clearProbeStat(); } +#if DEBUG +void dFile_select_c::titleMsgCheck() { + if (mDoCPd_c::getTrigRight(PAD_1)) { + g_fsHIO.title_msg_check_sel++; + if (g_fsHIO.title_msg_check_sel > 16) { + g_fsHIO.title_msg_check_sel = 0; + } + } else if (mDoCPd_c::getTrigLeft(PAD_1)) { + if (g_fsHIO.title_msg_check_sel == 0) { + g_fsHIO.title_msg_check_sel = 16; + } else { + g_fsHIO.title_msg_check_sel--; + } + } + + static u16 msg[] = { + 0x0001, 0x0040, 0x0041, + 0x0042, 0x0052, 0x0043, + 0x0044, 0x0045, 0x0046, + 0x0047, 0x0048, 0x0049, + 0x004a, 0x004b, 0x004c, + 0x0384, 0x0385, + }; + + static u8 font[] = {1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}; + static f32 fontsize[] = {21.0f, 27.0f}; + static f32 linespaceU[] = {22.0f, 20.0f}; + static f32 charspaceU[] = {0.0f, 0.0f}; + + ((J2DTextBox*)mHeaderTxtPane[mHeaderTxtDispIdx]->getPanePtr())->setFont(fileSel.font[font[g_fsHIO.title_msg_check_sel]]); + ((J2DTextBox*)mHeaderTxtPane[mHeaderTxtDispIdx]->getPanePtr())->setFontSize(fontsize[font[g_fsHIO.title_msg_check_sel]], fontsize[font[g_fsHIO.title_msg_check_sel]]); + ((J2DTextBox*)mHeaderTxtPane[mHeaderTxtDispIdx]->getPanePtr())->setLineSpace(linespaceU[font[g_fsHIO.title_msg_check_sel]]); + ((J2DTextBox*)mHeaderTxtPane[mHeaderTxtDispIdx]->getPanePtr())->setCharSpace(charspaceU[font[g_fsHIO.title_msg_check_sel]]); + + fileSel.mMessageString->getString(msg[g_fsHIO.title_msg_check_sel], (J2DTextBox*)mHeaderTxtPane[mHeaderTxtDispIdx]->getPanePtr(), NULL, fileSel.font[font[g_fsHIO.title_msg_check_sel]], NULL, 0); +} + +void dFile_select_c::errorMsgCheck() { + if (mDoCPd_c::getTrigRight(PAD_1)) { + g_fsHIO.error_msg_check_sel++; + if (g_fsHIO.error_msg_check_sel > 17) { + g_fsHIO.error_msg_check_sel = 0; + } + } else if (mDoCPd_c::getTrigLeft(PAD_1)) { + if (g_fsHIO.error_msg_check_sel == 0) { + g_fsHIO.error_msg_check_sel = 17; + } else { + g_fsHIO.error_msg_check_sel--; + } + } + + static u16 er_msg[] = { + 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0009, + 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x0011, + 0x0012, 0x0013, 0x0019, 0x001b, 0x001a, 0x001c, + }; + + fileSel.mMessageString->getString(er_msg[g_fsHIO.error_msg_check_sel], (J2DTextBox*)mErrorMsgTxtPane[mErrorTxtDispIdx]->getPanePtr(), NULL, fileSel.font[0], NULL, 0); +} +#endif + void dFile_select_c::selFileWakuAnm() { - field_0x01cc += 2; + mSelFileBpkFrame += 2; + if (mSelFileBpkFrame >= mFileSelBpk->getFrameMax()) + mSelFileBpkFrame -= mFileSelBpk->getFrameMax(); + mFileSelBpk->setFrame(mSelFileBpkFrame); - if (field_0x01cc >= field_0x01c8->getFrameMax()) - field_0x01cc -= field_0x01c8->getFrameMax(); + mSelFileBtk05Frame += 2; + if (mSelFileBtk05Frame >= mFileSel05Btk->getFrameMax()) + mSelFileBtk05Frame -= mFileSel05Btk->getFrameMax(); + mFileSel05Btk->setFrame(mSelFileBtk05Frame); - field_0x01c8->setFrame(field_0x01cc); - field_0x01d4 += 2; + mYnSelBpkFrame += 2; + if (mYnSelBpkFrame >= mYnSelBpk->getFrameMax()) + mYnSelBpkFrame -= mYnSelBpk->getFrameMax(); + mYnSelBpk->setFrame(mYnSelBpkFrame); - if (field_0x01d4 >= field_0x01d0->getFrameMax()) - field_0x01d4 -= field_0x01d0->getFrameMax(); + mYnSelBtkFrame += 2; + if (mYnSelBtkFrame >= mYnSelBtk->getFrameMax()) + mYnSelBtkFrame -= mYnSelBtk->getFrameMax(); + mYnSelBtk->setFrame(mYnSelBtkFrame); - field_0x01d0->setFrame(field_0x01d4); - field_0x031c += 2; + m3mBpkFrame += 2; + if (m3mBpkFrame >= m3mBpk->getFrameMax()) + m3mBpkFrame -= m3mBpk->getFrameMax(); + m3mBpk->setFrame(m3mBpkFrame); - if (field_0x031c >= field_0x0318->getFrameMax()) - field_0x031c -= field_0x0318->getFrameMax(); + m3mBtkFrame += 2; + if (m3mBtkFrame >= m3mBtk->getFrameMax()) + m3mBtkFrame -= m3mBtk->getFrameMax(); + m3mBtk->setFrame(m3mBtkFrame); - field_0x0318->setFrame(field_0x031c); - field_0x0324 += 2; - - if (field_0x0324 >= field_0x0320->getFrameMax()) - field_0x0324 -= field_0x0320->getFrameMax(); - - field_0x0320->setFrame(field_0x0324); - field_0x0334 += 2; - - if (field_0x0334 >= field_0x0330->getFrameMax()) - field_0x0334 -= field_0x0330->getFrameMax(); - - field_0x0330->setFrame(field_0x0334); - field_0x033c += 2; - - if (field_0x033c >= field_0x0338->getFrameMax()) - field_0x033c -= field_0x0338->getFrameMax(); - - field_0x0338->setFrame(field_0x033c); - field_0x03a4 += 2; - - if (field_0x03a4 >= field_0x03a0->getFrameMax()) - field_0x03a4 -= field_0x03a0->getFrameMax(); - - field_0x03a0->setFrame(field_0x03a4); + mSelDtBtkFrame += 2; + if (mSelDtBtkFrame >= mSelDtBtk->getFrameMax()) + mSelDtBtkFrame -= mSelDtBtk->getFrameMax(); + mSelDtBtk->setFrame(mSelDtBtkFrame); } void dFile_select_c::bookIconAnm() { - field_0x01dc += 2; + mSelFileBookBpkFrame += 2; + if (mSelFileBookBpkFrame >= mSelFileBookBpk->getFrameMax()) + mSelFileBookBpkFrame -= mSelFileBookBpk->getFrameMax(); + mSelFileBookBpk->setFrame(mSelFileBookBpkFrame); - if (field_0x01dc >= field_0x01d8->getFrameMax()) - field_0x01dc -= field_0x01d8->getFrameMax(); + mSelFileBookBtkFrame += 2; + if (mSelFileBookBtkFrame >= mSelFileBookBtk->getFrameMax()) + mSelFileBookBtkFrame -= mSelFileBookBtk->getFrameMax(); + mSelFileBookBtk->setFrame(mSelFileBookBtkFrame); - field_0x01d8->setFrame(field_0x01dc); - field_0x01e4 += 2; - - if (field_0x01e4 >= field_0x01e0->getFrameMax()) - field_0x01e4 -= field_0x01e0->getFrameMax(); - - field_0x01e0->setFrame(field_0x01e4); - field_0x01ec += 2; - - if (field_0x01ec >= field_0x01e8->getFrameMax()) - field_0x01ec -= field_0x01e8->getFrameMax(); - - field_0x01e8->setFrame(field_0x01ec); + mSelFileBookBrkFrame += 2; + if (mSelFileBookBrkFrame >= mSelFileBookBrk->getFrameMax()) + mSelFileBookBrkFrame -= mSelFileBookBrk->getFrameMax(); + mSelFileBookBrk->setFrame(mSelFileBookBrkFrame); } void dFile_select_c::selCopyFileWakuAnm() { - field_0x02ec += 2; + mCpSelBpkFrame += 2; + if (mCpSelBpkFrame >= mCpSelBpk->getFrameMax()) + mCpSelBpkFrame -= mCpSelBpk->getFrameMax(); + mCpSelBpk->setFrame(mCpSelBpkFrame); - if (field_0x02ec >= field_0x02e8->getFrameMax()) - field_0x02ec -= field_0x02e8->getFrameMax(); - - field_0x02e8->setFrame(field_0x02ec); - field_0x02f4 += 2; - - if (field_0x02f4 >= field_0x02f0->getFrameMax()) - field_0x02f4 -= field_0x02f0->getFrameMax(); - - field_0x02f0->setFrame(field_0x02f4); + mCpSel03BtkFrame += 2; + if (mCpSel03BtkFrame >= mCpSel03Btk->getFrameMax()) + mCpSel03BtkFrame -= mCpSel03Btk->getFrameMax(); + mCpSel03Btk->setFrame(mCpSel03BtkFrame); } void dFile_select_c::copyBookIconAnm() { - field_0x02fc += 2; + mCpSelBookBpkFrame += 2; + if (mCpSelBookBpkFrame >= mCpSelBookBpk->getFrameMax()) + mCpSelBookBpkFrame -= mCpSelBookBpk->getFrameMax(); + mCpSelBookBpk->setFrame(mCpSelBookBpkFrame); - if (field_0x02fc >= field_0x02f8->getFrameMax()) - field_0x02fc -= field_0x02f8->getFrameMax(); + mCpSelBookBtkFrame += 2; + if (mCpSelBookBtkFrame >= mCpSelBookBtk->getFrameMax()) + mCpSelBookBtkFrame -= mCpSelBookBtk->getFrameMax(); + mCpSelBookBtk->setFrame(mCpSelBookBtkFrame); - field_0x02f8->setFrame(field_0x02fc); - field_0x0304 += 2; - - if (field_0x0304 >= field_0x0300->getFrameMax()) - field_0x0304 -= field_0x0300->getFrameMax(); - - field_0x0300->setFrame(field_0x0304); - field_0x030c += 2; - - if (field_0x030c >= field_0x0308->getFrameMax()) - field_0x030c -= field_0x0308->getFrameMax(); - - field_0x0308->setFrame(field_0x030c); + mCpSelBookBrkFrame += 2; + if (mCpSelBookBrkFrame >= mCpSelBookBrk->getFrameMax()) + mCpSelBookBrkFrame -= mCpSelBookBrk->getFrameMax(); + mCpSelBookBrk->setFrame(mCpSelBookBrkFrame); } void dFile_select_c::dataDelEffAnm() { if (field_0x0208 != 0) { - field_0x0204 += 2; + mCpDtEffBrkFrame += 2; + if (mCpDtEffBrkFrame >= mCpDtEffBrk->getFrameMax()) + mCpDtEffBrkFrame -= mCpDtEffBrk->getFrameMax(); + mCpDtEffBrk->setFrame(mCpDtEffBrkFrame); - if (field_0x0204 >= field_0x0200->getFrameMax()) - field_0x0204 -= field_0x0200->getFrameMax(); - - field_0x0200->setFrame(field_0x0204); - field_0x01f4 += 2; - - if (field_0x01f4 >= field_0x01f0->getFrameMax()) - field_0x01f4 -= field_0x01f0->getFrameMax(); - - field_0x01f0->setFrame(field_0x01f4); + mDtEffBtkFrame += 2; + if (mDtEffBtkFrame >= mDtEffBtk->getFrameMax()) + mDtEffBtkFrame -= mDtEffBtk->getFrameMax(); + mDtEffBtk->setFrame(mDtEffBtkFrame); } } void dFile_select_c::dataCopyEffAnm() { if (field_0x0209 != 0) { - field_0x0204 += 2; + mCpDtEffBrkFrame += 2; + if (mCpDtEffBrkFrame >= mCpDtEffBrk->getFrameMax()) + mCpDtEffBrkFrame -= mCpDtEffBrk->getFrameMax(); + mCpDtEffBrk->setFrame(mCpDtEffBrkFrame); - if (field_0x0204 >= field_0x0200->getFrameMax()) - field_0x0204 -= field_0x0200->getFrameMax(); - - field_0x0200->setFrame(field_0x0204); - field_0x01fc += 2; - - if (field_0x01fc >= field_0x01f8->getFrameMax()) - field_0x01fc -= field_0x01f8->getFrameMax(); - - field_0x01f8->setFrame(field_0x01fc); + mCpEffBtkFrame += 2; + if (mCpEffBtkFrame >= mCpEffBtk->getFrameMax()) + mCpEffBtkFrame -= mCpEffBtk->getFrameMax(); + mCpEffBtk->setFrame(mCpEffBtkFrame); } } -void dFile_select_c::selectDataBaseMoveAnmInitSet(int param_0, int param_1) { - field_0x00a4->getPanePtr()->setAnimation((J2DAnmTransform*)field_0x0084); - field_0x00b0 = param_0; - field_0x00b4 = param_1; - field_0x0084->setFrame(field_0x00b0); - field_0x00a4->getPanePtr()->animationTransform(); +void dFile_select_c::selectDataBaseMoveAnmInitSet(int i_frame, int i_frameMax) { + mBaseMovePane->getPanePtr()->setAnimation(mBaseMoveAnm); + mBaseMoveAnmFrame = i_frame; + mBaseMoveAnmFrameMax = i_frameMax; + mBaseMoveAnm->setFrame(mBaseMoveAnmFrame); + mBaseMovePane->getPanePtr()->animationTransform(); + + #if PLATFORM_GCN field_0x00b9 = 1; + #endif } bool dFile_select_c::selectDataBaseMoveAnm() { - if (field_0x00b0 != field_0x00b4) { - if (field_0x00b0 < field_0x00b4) { - field_0x00b0 += 2; - - if (field_0x00b0 > field_0x00b4) - field_0x00b0 = field_0x00b4; - + bool ret; + if (mBaseMoveAnmFrame != mBaseMoveAnmFrameMax) { + if (mBaseMoveAnmFrame < mBaseMoveAnmFrameMax) { + mBaseMoveAnmFrame += 2; + if (mBaseMoveAnmFrame > mBaseMoveAnmFrameMax) + mBaseMoveAnmFrame = mBaseMoveAnmFrameMax; } else { - field_0x00b0 -= 2; - - if (field_0x00b0 < field_0x00b4) - field_0x00b0 = field_0x00b4; - + mBaseMoveAnmFrame -= 2; + if (mBaseMoveAnmFrame < mBaseMoveAnmFrameMax) + mBaseMoveAnmFrame = mBaseMoveAnmFrameMax; } - field_0x0084->setFrame(field_0x00b0); - field_0x00a4->getPanePtr()->animationTransform(); - return false; + mBaseMoveAnm->setFrame(mBaseMoveAnmFrame); + mBaseMovePane->getPanePtr()->animationTransform(); + ret = false; } else { - field_0x00b0 == 0x21 ? field_0x00b8 = 1 : field_0x00b8 = 0; - field_0x00b9 = 0; + if (mBaseMoveAnmFrame == 33) { + field_0x00b8 = 1; + } else { + field_0x00b8 = 0; + } - field_0x00a4->getPanePtr()->setAnimation((J2DAnmTransform*)0); - return true; + #if PLATFORM_GCN + field_0x00b9 = 0; + #endif + + mBaseMovePane->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + ret = true; } + + return ret; } void dFile_select_c::dataSelectInAnmSet() { setSaveData(); - dSv_save_c* pSave = (dSv_save_c*)mSave; + + dSv_save_c* pSave = (dSv_save_c*)mSaveData; OSTime date_ipl = pSave->getPlayer().getPlayerStatusB().getDateIpl(); mSelectNum = 0; + for (int i = 0; i < 3; i++) { - field_0x0164[i]->setAlpha(0); - field_0x0170[i]->setAlpha(0); - field_0x017c[i]->setAlpha(0); - if (field_0x025b[i] == 0) { + #if PLATFORM_GCN + mSelFileMoyoPane[i]->setAlpha(0); + mSelFileGoldPane[i]->setAlpha(0); + mSelFileGold2Pane[i]->setAlpha(0); + #endif + + if (!mIsNoData[i]) { OSTime date_ipl2 = pSave->getPlayer().getPlayerStatusB().getDateIpl(); OSTime date2Secs = OSTicksToSeconds(date_ipl2); OSTime dateSec = OSTicksToSeconds(date_ipl); @@ -485,137 +633,162 @@ void dFile_select_c::dataSelectInAnmSet() { } } - pSave = (dSv_save_c*)((u8*)pSave + 0xa94); + pSave = (dSv_save_c*)((u8*)pSave + SAVEDATA_SIZE); - if (field_0x025b[i] != 0 || mDataNew[i] != 0) { - field_0x0220[i]->setAlpha(0); - field_0x022c[i]->setAlpha(0xFF); + if (mIsNoData[i] || mIsDataNew[i] != 0) { + mFileInfoDatBasePane[i]->setAlpha(0); + mFileInfoNoDatBasePane[i]->setAlpha(0xFF); } else { - field_0x0220[i]->setAlpha(0xFF); - field_0x022c[i]->setAlpha(0); + mFileInfoDatBasePane[i]->setAlpha(0xFF); + mFileInfoNoDatBasePane[i]->setAlpha(0); } - field_0x0188[i]->setAlpha(0); + mSelFilePane_Book_l[i]->setAlpha(0); } + + #if PLATFORM_GCN mpFileWarning->init(); - selectDataBaseMoveAnmInitSet(1,0x21); - mDoAud_seStart(Z2SE_SY_FILE_MENU_SLIDE_IN,0,0,0); + #endif + + selectDataBaseMoveAnmInitSet(1, 33); + mDoAud_seStart(Z2SE_SY_FILE_MENU_SLIDE_IN, NULL, 0, 0); } void dFile_select_c::dataSelectIn() { - bool headerTxtChange = headerTxtChangeAnm(); - bool selectDataBaseMove = selectDataBaseMoveAnm(); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isSelDataBaseMove = selectDataBaseMoveAnm(); + bool isErrorMove = true; + bool isYnMenuMove = true; - bool errorMove = true; - if (field_0x014a || field_0x014b) { - errorMove = errorMoveAnm(); + #if PLATFORM_GCN + if (field_0x014a || field_0x014b) + #else + if (field_0x014a) + #endif + { + isErrorMove = errorMoveAnm(); } - bool yesnoMenuMove = true; + isYnMenuMove = true; if (field_0x0108 || field_0x0281) { - yesnoMenuMove = yesnoMenuMoveAnm(); + isYnMenuMove = yesnoMenuMoveAnm(); } - bool nameMove = true; - if (field_0x0128 || mCpSel.field_0x08) { - nameMove = nameMoveAnm(); + bool isNameMove = true; + #if PLATFORM_GCN + if (field_0x0128 || mCpSel.isShow) + #else + if (field_0x0128) + #endif + { + isNameMove = nameMoveAnm(); } - bool menuMove = true; + #if PLATFORM_GCN + bool isMenuMove = true; if (field_0x0360 || field_0x0283) { - menuMove = menuMoveAnm(); + isMenuMove = menuMoveAnm(); } + #endif - bool modoruTxtDisp = modoruTxtDispAnm(); + bool isModoruTxtDisp = modoruTxtDispAnm(); - if (headerTxtChange == true && selectDataBaseMove == true && - errorMove == true && yesnoMenuMove == true && - nameMove == true && menuMove == true && - modoruTxtDisp == true) { + if (isHeaderTxtChange == true && + isSelDataBaseMove == true && + isErrorMove == true && + isYnMenuMove == true && + isNameMove == true && + #if PLATFORM_GCN + isMenuMove == true && + #endif + isModoruTxtDisp == true) + { for (int i = 0; i < 3; i++) { - field_0x00bc[i]->reinit(); + mSelFilePanes[i]->reinit(); } - headerTxtSet(0x43,1,0); + headerTxtSet(0x43, 1, 0); mLastSelectNum = mSelectNum; - field_0x00bc[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)field_0x0084); + mSelFilePanes[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)mBaseMoveAnm); field_0x00e0[mSelectNum] = SelStartFrameTbl[mSelectNum]; - field_0x0188[mSelectNum]->alphaAnimeStart(0); + mSelFilePane_Book_l[mSelectNum]->alphaAnimeStart(0); ketteiTxtDispAnmInit(1); - field_0x026f = 2; + mDataSelProc = DATASELPROC_DATA_SELECT_INIT; } } void dFile_select_c::dataSelectInit() { - bool headerTxtChange = headerTxtChangeAnm(); - bool alphaAnime = true; - bool ketteiTxtDisp = true; + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isBookAlphaAnime = true; + bool isKetteiTxtDisp = true; bool check = true; if (mSelectNum != 0xFF) { - alphaAnime = field_0x0188[mSelectNum]->alphaAnime(g_fsHIO.field_0x0006,0,0xFF,1); - ketteiTxtDisp = ketteiTxtDispAnm(); + isBookAlphaAnime = mSelFilePane_Book_l[mSelectNum]->alphaAnime(g_fsHIO.base_effect_appear_frames, 0, 0xFF, 1); + isKetteiTxtDisp = ketteiTxtDispAnm(); if (field_0x00e0[mSelectNum] != SelEndFrameTbl[mSelectNum]) { field_0x00e0[mSelectNum] += 2; if (field_0x00e0[mSelectNum] > SelEndFrameTbl[mSelectNum]) field_0x00e0[mSelectNum] = SelEndFrameTbl[mSelectNum]; - - field_0x0084->setFrame(field_0x00e0[mSelectNum]); - field_0x00bc[mSelectNum]->getPanePtr()->animationTransform(); + + mBaseMoveAnm->setFrame(field_0x00e0[mSelectNum]); + mSelFilePanes[mSelectNum]->getPanePtr()->animationTransform(); check = false; } } - if (headerTxtChange == true && alphaAnime == true && ketteiTxtDisp == true && check == true) { + if (isHeaderTxtChange == true && isBookAlphaAnime == true && isKetteiTxtDisp == true && check == true) { if (mSelectNum != 0xFF) { - field_0x00bc[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); - selFileCursorShow(); + mSelFilePanes[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + selFileCursorShow(); } - field_0x026f = 3; + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = mSelectNum; + #endif + + mDataSelProc = DATASELPROC_DATA_SELECT; } } // handles switching between quest logs void dFile_select_c::dataSelect() { - mStick->checkTrigger(); + stick->checkTrigger(); // If A or Start was pressed if (mDoCPd_c::getTrigA(PAD_1) || mDoCPd_c::getTrigStart(PAD_1)) { - dataSelectStart(); // run the quest log open process - } else { - if (mStick->checkUpTrigger()) { - // if we're not on the top quest log - if (mSelectNum != 0) { - mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR,0,0,0); - mLastSelectNum = mSelectNum; - mSelectNum--; - dataSelectAnmSet(); // run the quest log selection animation - field_0x026f = 4; - } - } else if (mStick->checkDownTrigger()) { - // if we're not on the bottom quest log - if (mSelectNum != 2) { - mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR,0,0,0); - mLastSelectNum = mSelectNum; - mSelectNum++; - dataSelectAnmSet(); // run the quest log selection animation - field_0x026f = 4; - } - } + dataSelectStart(); // run the quest log open process + } else if (stick->checkUpTrigger()) { + // if we're not on the top quest log + if (mSelectNum != 0) { + mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR, NULL, 0, 0); + mLastSelectNum = mSelectNum; + mSelectNum--; + dataSelectAnmSet(); // run the quest log selection animation + mDataSelProc = DATASELPROC_DATA_SELECT_MOVE_ANIME; + } + } else if (stick->checkDownTrigger()) { + // if we're not on the bottom quest log + if (mSelectNum != 2) { + mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR, NULL, 0, 0); + mLastSelectNum = mSelectNum; + mSelectNum++; + dataSelectAnmSet(); // run the quest log selection animation + mDataSelProc = DATASELPROC_DATA_SELECT_MOVE_ANIME; + } } } static s32 YnSelStartFrameTbl[2] = { - 0x000004E3, - 0x000004D4, + 1251, + 1236, }; static s32 YnSelEndFrameTbl[2] = { - 0x000004D4, - 0x000004E3, + 1236, + 1251, }; static u16 msgTbl[3] = { @@ -626,11 +799,13 @@ static u16 msgTbl[3] = { void dFile_select_c::dataSelectStart() { mSelIcon->setAlphaRate(0.0f); - if (field_0x025b[mSelectNum] != 0) { + + if (mIsNoData[mSelectNum]) { headerTxtSet(0x52, 0, 0); selectDataMoveAnmInitSet(SelOpenStartFrameTbl[mSelectNum], SelOpenEndFrameTbl[mSelectNum]); yesnoMenuMoveAnmInitSet(0x473, 0x47d); - selectWakuAlpahAnmInit(mSelectNum, 0xff, 0, g_fsHIO.field_0x0008); + selectWakuAlpahAnmInit(mSelectNum, 0xff, 0, g_fsHIO.select_box_appear_frames); + mSelDt.ScrDt->search('ken_00')->hide(); mSelDt.ScrDt->search('ken_01')->hide(); mSelDt.ScrDt->search('ken_02')->hide(); @@ -641,56 +816,80 @@ void dFile_select_c::dataSelectStart() { mSelDt.ScrDt->search('fuku_01')->hide(); mSelDt.ScrDt->search('fuku_02')->hide(); mpFileSelect3d->drawOff(); - field_0x026f = 7; - } else if (mDataNew[mSelectNum] != 0) { - dComIfGs_setNewFile(0x80); + + mDataSelProc = DATASELPROC_SELECT_DATA_OPENERASE_MOVE; + } else if (mIsDataNew[mSelectNum] != 0) { + #if PLATFORM_GCN + dComIfGs_setNewFile(128); + #endif + dComIfGs_setDataNum(mSelectNum); - mDoAud_seStart(Z2SE_SY_NEW_FILE, 0, 0, 0); + mDoAud_seStart(Z2SE_SY_NEW_FILE, NULL, 0, 0); headerTxtSet(0x385, 1, 0); fileRecScaleAnmInitSet2(1.0f, 0.0f); nameMoveAnmInitSet(3359, 3369); - field_0x0164[mSelectNum]->setAlpha(0); - field_0x0170[mSelectNum]->setAlpha(0); - field_0x017c[mSelectNum]->setAlpha(0); - char auStack_28[32]; - dMeter2Info_getString(0x382, auStack_28, 0); - dComIfGs_setPlayerName(auStack_28); + + mSelFileMoyoPane[mSelectNum]->setAlpha(0); + mSelFileGoldPane[mSelectNum]->setAlpha(0); + mSelFileGold2Pane[mSelectNum]->setAlpha(0); + + char namebuf[32]; + dMeter2Info_getString(0x382, namebuf, NULL); + dComIfGs_setPlayerName(namebuf); mpName->setNextNameStr(dComIfGs_getPlayerName()); mpName->initial(); modoruTxtChange(1); - field_0x026f = 6; + + mDataSelProc = DATASELPROC_SELECT_DATA_NAME_MOVE; } else { + #if PLATFORM_GCN dComIfGs_setNewFile(0); - mDoAud_seStart(Z2SE_SY_CURSOR_OK, 0, 0, 0); + #endif + + mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0); + #if PLATFORM_GCN mSelectMenuNum = 1; + #else + mSelectMenuNum = 0xFF; + #endif + mLastSelectMenuNum = mSelectMenuNum; + + #if PLATFORM_SHIELD + ketteiTxtDispAnmInit(0); + #endif + headerTxtSet(msgTbl[mSelectNum], 1, 0); - selectDataMoveAnmInitSet( - SelOpenStartFrameTbl[mSelectNum], - SelOpenEndFrameTbl[mSelectNum]); + selectDataMoveAnmInitSet(SelOpenStartFrameTbl[mSelectNum], SelOpenEndFrameTbl[mSelectNum]); menuMoveAnmInitSet(799, 809); - selectWakuAlpahAnmInit(mSelectNum, 0xff, 0, g_fsHIO.field_0x0008); + selectWakuAlpahAnmInit(mSelectNum, 0xff, 0, g_fsHIO.select_box_appear_frames); makeRecInfo(mSelectNum); - field_0x026f = 5; + + mDataSelProc = DATASELPROC_SELECT_DATA_OPEN_MOVE; } + modoruTxtDispAnmInit(1); } void dFile_select_c::selectDataMoveAnmInitSet(int param_0, int param_1) { - field_0x00bc[0]->getPanePtr()->setAnimation((J2DAnmTransform*)field_0x0084); - field_0x00bc[1]->getPanePtr()->setAnimation((J2DAnmTransform*)field_0x0084); - field_0x00bc[2]->getPanePtr()->setAnimation((J2DAnmTransform*)field_0x0084); - mpPane->setAnimation((J2DAnmTransform*)field_0x0084); + mSelFilePanes[0]->getPanePtr()->setAnimation(mBaseMoveAnm); + mSelFilePanes[1]->getPanePtr()->setAnimation(mBaseMoveAnm); + mSelFilePanes[2]->getPanePtr()->setAnimation(mBaseMoveAnm); + mBaseSubPane->setAnimation(mBaseMoveAnm); + field_0x00e0[mSelectNum] = param_0; field_0x00ec = param_1; - field_0x0084->setFrame(field_0x00e0[mSelectNum]); - field_0x00bc[0]->getPanePtr()->animationTransform(); - field_0x00bc[1]->getPanePtr()->animationTransform(); - field_0x00bc[2]->getPanePtr()->animationTransform(); - mpPane->animationTransform(); + mBaseMoveAnm->setFrame(field_0x00e0[mSelectNum]); + mSelFilePanes[0]->getPanePtr()->animationTransform(); + mSelFilePanes[1]->getPanePtr()->animationTransform(); + mSelFilePanes[2]->getPanePtr()->animationTransform(); + + mBaseSubPane->animationTransform(); } bool dFile_select_c::selectDataMoveAnm() { + bool ret; + if (field_0x00e0[mSelectNum] != field_0x00ec) { if (field_0x00e0[mSelectNum] < field_0x00ec) { field_0x00e0[mSelectNum] += 2; @@ -705,41 +904,43 @@ bool dFile_select_c::selectDataMoveAnm() { field_0x00e0[mSelectNum] = field_0x00ec; } - field_0x0084->setFrame(field_0x00e0[mSelectNum]); + mBaseMoveAnm->setFrame(field_0x00e0[mSelectNum]); for (int i = 0; i < 3; i++) { - field_0x00bc[i]->getPanePtr()->animationTransform(); + mSelFilePanes[i]->getPanePtr()->animationTransform(); } - mpPane->animationTransform(); + mBaseSubPane->animationTransform(); } if (field_0x00e0[mSelectNum] == field_0x00ec) { for (int i = 0; i < 3; i++) { - field_0x00bc[i]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + mSelFilePanes[i]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); } - mpPane->setAnimation((J2DAnmTransform*)0); - return true; + mBaseSubPane->setAnimation((J2DAnmTransform*)NULL); + ret = true; } else { - return false; + ret = false; } + + return ret; } void dFile_select_c::dataSelectAnmSet() { if (mSelectNum != 0xff) { - field_0x00bc[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)field_0x0084); + mSelFilePanes[mSelectNum]->getPanePtr()->setAnimation(mBaseMoveAnm); field_0x00e0[mSelectNum] = SelStartFrameTbl[mSelectNum]; - field_0x0084->setFrame(field_0x00e0[mSelectNum]); - field_0x00bc[mSelectNum]->getPanePtr()->animationTransform(); - field_0x0188[mSelectNum]->alphaAnimeStart(0); + mBaseMoveAnm->setFrame(field_0x00e0[mSelectNum]); + mSelFilePanes[mSelectNum]->getPanePtr()->animationTransform(); + mSelFilePane_Book_l[mSelectNum]->alphaAnimeStart(0); } if (mLastSelectNum != 0xff) { - selectWakuAlpahAnmInit(mLastSelectNum,0xff,0,g_fsHIO.field_0x0008); - field_0x00bc[mLastSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)field_0x0088); // wrong? + selectWakuAlpahAnmInit(mLastSelectNum, 0xff, 0, g_fsHIO.select_box_appear_frames); + mSelFilePanes[mLastSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)field_0x0088); // wrong? field_0x00e0[mLastSelectNum] = SelEndFrameTbl[mLastSelectNum]; field_0x0088->setFrame(field_0x00e0[mLastSelectNum]); - field_0x00bc[mLastSelectNum]->getPanePtr()->animationTransform(); - field_0x0188[mLastSelectNum]->alphaAnimeStart(0); + mSelFilePanes[mLastSelectNum]->getPanePtr()->animationTransform(); + mSelFilePane_Book_l[mLastSelectNum]->alphaAnimeStart(0); mSelIcon->setAlphaRate(0.0f); } } @@ -748,18 +949,19 @@ void dFile_select_c::dataSelectMoveAnime() { bool iVar7 = true; bool iVar6 = true; bool bVar1 = true; + if (mLastSelectNum != 0xff) { - iVar7 = field_0x0188[mLastSelectNum]->alphaAnime(g_fsHIO.field_0x0006,0xff,0,1); + iVar7 = mSelFilePane_Book_l[mLastSelectNum]->alphaAnime(g_fsHIO.base_effect_appear_frames, 0xff, 0, 1); iVar6 = selectWakuAlpahAnm(mLastSelectNum); if (field_0x00e0[mLastSelectNum] != SelStartFrameTbl[mLastSelectNum]) { - field_0x00e0[mLastSelectNum] = field_0x00e0[mLastSelectNum] - 2; - + field_0x00e0[mLastSelectNum] -= 2; + if (field_0x00e0[mLastSelectNum] < SelStartFrameTbl[mLastSelectNum]) field_0x00e0[mLastSelectNum] = SelStartFrameTbl[mLastSelectNum]; - + field_0x0088->setFrame(field_0x00e0[mLastSelectNum]); - field_0x00bc[mLastSelectNum]->getPanePtr()->animationTransform(); + mSelFilePanes[mLastSelectNum]->getPanePtr()->animationTransform(); bVar1 = false; } } @@ -768,50 +970,56 @@ void dFile_select_c::dataSelectMoveAnime() { bool bVar2 = true; if (mSelectNum != 0xff) { - iVar5 = field_0x0188[mSelectNum]->alphaAnime(g_fsHIO.field_0x0006,0,0xff,1); + iVar5 = mSelFilePane_Book_l[mSelectNum]->alphaAnime(g_fsHIO.base_effect_appear_frames, 0, 0xff, 1); if (field_0x00e0[mSelectNum] != SelEndFrameTbl[mSelectNum]) { - field_0x00e0[mSelectNum] = field_0x00e0[mSelectNum] + 2; + field_0x00e0[mSelectNum] += 2; if (field_0x00e0[mSelectNum] > SelEndFrameTbl[mSelectNum]) field_0x00e0[mSelectNum] = SelEndFrameTbl[mSelectNum]; - field_0x0084->setFrame(field_0x00e0[mSelectNum]); - field_0x00bc[mSelectNum]->getPanePtr()->animationTransform(); + mBaseMoveAnm->setFrame(field_0x00e0[mSelectNum]); + mSelFilePanes[mSelectNum]->getPanePtr()->animationTransform(); bVar2 = false; } } if (iVar7 == true && iVar6 == true && bVar1 == true && iVar5 == true && bVar2 == true) { if (mSelectNum != 0xff) { - field_0x00bc[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + mSelFilePanes[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); selFileCursorShow(); } if (mLastSelectNum != 0xff) { - field_0x00bc[mLastSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + mSelFilePanes[mLastSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); } - field_0x026f = 3; + mDataSelProc = DATASELPROC_DATA_SELECT; } } -void dFile_select_c::makeRecInfo(u8 param_1) { - dSv_save_c* pSave = (dSv_save_c*)&mSave[param_1]; +void dFile_select_c::makeRecInfo(u8 i_dataNo) { + dSv_save_c* pSave = (dSv_save_c*)&mSaveData[i_dataNo]; + J2DPane* ken0 = mSelDt.ScrDt->search('ken_00'); J2DPane* ken1 = mSelDt.ScrDt->search('ken_01'); ken0->hide(); ken1->hide(); - if (pSave->getPlayer().getGetItem().isFirstBit(40)) { + + if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_SWORD)) { ken0->hide(); ken1->show(); - } else if (pSave->getPlayer().getGetItem().isFirstBit(63) && !pSave->getEvent().isEventBit(0x302)) { + } else if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_WOOD_STICK) && + !pSave->getEvent().isEventBit(dSv_event_flag_c::F_0026)) + { ken0->show(); ken1->hide(); } J2DPane* ken2 = mSelDt.ScrDt->search('ken_02'); - if (pSave->getPlayer().getGetItem().isFirstBit(41) || pSave->getPlayer().getGetItem().isFirstBit(73)) { + if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_MASTER_SWORD) || + pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_LIGHT_SWORD)) + { ken2->show(); } else { ken2->hide(); @@ -822,37 +1030,37 @@ void dFile_select_c::makeRecInfo(u8 param_1) { tate0->hide(); tate1->hide(); - if (pSave->getPlayer().getGetItem().isFirstBit(43)) { + if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_SHIELD)) { tate0->show(); tate1->hide(); - } else if (pSave->getPlayer().getGetItem().isFirstBit(42)) { + } else if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_WOOD_SHIELD)) { tate0->hide(); tate1->show(); } J2DPane* tate2 = mSelDt.ScrDt->search('tate_02'); - if (pSave->getPlayer().getGetItem().isFirstBit(44)) { + if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_HYLIA_SHIELD)) { tate2->show(); } else { tate2->hide(); } J2DPane* fuku0 = mSelDt.ScrDt->search('fuku_00'); - if (pSave->getPlayer().getGetItem().isFirstBit(47)) { + if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_WEAR_KOKIRI)) { fuku0->show(); } else { fuku0->hide(); } J2DPane* fuku1 = mSelDt.ScrDt->search('fuku_01'); - if (pSave->getPlayer().getGetItem().isFirstBit(49)) { + if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_WEAR_ZORA)) { fuku1->show(); } else { fuku1->hide(); } J2DPane* fuku2 = mSelDt.ScrDt->search('fuku_02'); - if (pSave->getPlayer().getGetItem().isFirstBit(48)) { + if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_ARMOR)) { fuku2->show(); } else { fuku2->hide(); @@ -865,6 +1073,7 @@ void dFile_select_c::makeRecInfo(u8 param_1) { } mirrorsCollected++; } + u8 crystalCollected = 0; for (int i = 0; i < 4; i++) { if (!pSave->getPlayer().getCollect().isCollectCrystal(i)) { @@ -873,8 +1082,10 @@ void dFile_select_c::makeRecInfo(u8 param_1) { crystalCollected++; } - if ((crystalCollected == 0 && mirrorsCollected == 0) || (pSave->getEvent().isEventBit(0xc01) && !pSave->getPlayer().getCollect().isCollectMirror(0)) || - (pSave->getEvent().isEventBit(0x2b08) && !pSave->getPlayer().getCollect().isCollectCrystal(3))) { + if ((crystalCollected == 0 && mirrorsCollected == 0) || + (pSave->getEvent().isEventBit(dSv_event_flag_c::M_071) && !pSave->getPlayer().getCollect().isCollectMirror(0)) || + (pSave->getEvent().isEventBit(dSv_event_flag_c::F_0354) && !pSave->getPlayer().getCollect().isCollectCrystal(3))) + { mpFileSelect3d->drawOff(); } else { mpFileSelect3d->freeHeap(); @@ -883,126 +1094,134 @@ void dFile_select_c::makeRecInfo(u8 param_1) { } else { mpFileSelect3d->_create(mirrorsCollected, 0); } - } } void dFile_select_c::selectDataOpenMove() { - bool headerTxtChange = headerTxtChangeAnm(); - bool selectDataMove = selectDataMoveAnm(); - bool menuMove = menuMoveAnm(); - bool modoruTxtDisp = modoruTxtDispAnm(); - bool selectWakuAlpah = selectWakuAlpahAnm(mSelectNum); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isSelDataMove = selectDataMoveAnm(); + bool isMenuMove = menuMoveAnm(); + bool isModoruTxtDisp = modoruTxtDispAnm(); + bool isSelWakuAlpha = selectWakuAlpahAnm(mSelectNum); - if (headerTxtChange == true && selectDataMove == true && menuMove == true && - modoruTxtDisp == true && selectWakuAlpah == true) { + if (isHeaderTxtChange == true && isSelDataMove == true && isMenuMove == true && + isModoruTxtDisp == true && isSelWakuAlpha == true) + { mSelectMenuNum = 1; - field_0x0340[mSelectMenuNum]->getPanePtr()->setAnimation(field_0x0328); - field_0x0328->setFrame(MenuSelStartFrameTbl[mSelectMenuNum]); - field_0x0340[mSelectMenuNum]->getPanePtr()->animationTransform(); - field_0x0340[mSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + m3mSelPane[mSelectMenuNum]->getPanePtr()->setAnimation(m3mBck); + m3mBck->setFrame(MenuSelStartFrameTbl[mSelectMenuNum]); + m3mSelPane[mSelectMenuNum]->getPanePtr()->animationTransform(); + m3mSelPane[mSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); menuCursorShow(); - field_0x026f = 8; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = mSelectMenuNum; + #endif + + mDataSelProc = DATASELPROC_MENU_SELECT; } } void dFile_select_c::selectDataNameMove() { - bool headerTxtChange = headerTxtChangeAnm(); - bool fileRecScale = fileRecScaleAnm2(); - bool nameMove = nameMoveAnm(); - bool modoruTxtDisp = modoruTxtDispAnm(); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isFileRecScale = fileRecScaleAnm2(); + bool isNameMove = nameMoveAnm(); + bool isModoruTxtDisp = modoruTxtDispAnm(); - if (headerTxtChange == true && fileRecScale == true && nameMove == true && modoruTxtDisp == true) { - field_0x026f = 15; + if (isHeaderTxtChange == true && isFileRecScale == true && isNameMove == true && + isModoruTxtDisp == true) + { + mDataSelProc = DATASELPROC_NAME_INPUT_WAIT; } } void dFile_select_c::selectDataOpenEraseMove() { - bool headerTxtChange = headerTxtChangeAnm(); - bool selectDataMove = selectDataMoveAnm(); - yesnoMenuMoveAnm(); - bool modoruTxtDisp = modoruTxtDispAnm(); - bool selectWakuAlpah = selectWakuAlpahAnm(mSelectNum); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isSelDataMove = selectDataMoveAnm(); + bool isYnMenuMove = yesnoMenuMoveAnm(); + bool isModoruTxtDisp = modoruTxtDispAnm(); + bool isSelWakuAlpha = selectWakuAlpahAnm(mSelectNum); - if (headerTxtChange == true && selectDataMove == true && modoruTxtDisp == true && selectWakuAlpah == true) { - field_0x026e = 2; + if (isHeaderTxtChange == true && isSelDataMove == true && isModoruTxtDisp == true && + isSelWakuAlpha == true) + { + mCommand = 2; yesnoCursorShow(); - field_0x026f = 26; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = field_0x0268; + #endif + + mDataSelProc = DATASELPROC_YES_NO_SELECT; } } // Handles selecting between copy / start / delete menus in quest log void dFile_select_c::menuSelect() { - mStick->checkTrigger(); + stick->checkTrigger(); // if a was pressed, do the menu selection process if (mDoCPd_c::getTrigA(PAD_1)) { menuSelectStart(); - } else { - // if b was pressed, do the menu cancel process - if (mDoCPd_c::getTrigB(PAD_1)) { - menuSelectCansel(); - } else { - if (mStick->checkRightTrigger()) { - if (mDataNew[mSelectNum] == 0 && mSelectMenuNum != 0) { - mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON,0,0,0); - mLastSelectMenuNum = mSelectMenuNum; - mSelectMenuNum--; - menuSelectAnmSet(); // run the menu selection animation - field_0x026f = 9; - } - } else if (mStick->checkLeftTrigger()) { - if (mDataNew[mSelectNum] == 0 && mSelectMenuNum != 2) { - mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON,0,0,0); - mLastSelectMenuNum = mSelectMenuNum; - mSelectMenuNum++; - menuSelectAnmSet(); // run the menu selection animation - field_0x026f = 9; - } - } + } + // if b was pressed, do the menu cancel process + else if (mDoCPd_c::getTrigB(PAD_1)) { + menuSelectCansel(); + } else if (stick->checkRightTrigger()) { + if (!mIsDataNew[mSelectNum] && mSelectMenuNum != 0) { + mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0); + mLastSelectMenuNum = mSelectMenuNum; + mSelectMenuNum--; + menuSelectAnmSet(); // run the menu selection animation + mDataSelProc = DATASELPROC_MENU_SELECT_MOVE_ANM; + } + } else if (stick->checkLeftTrigger()) { + if (!mIsDataNew[mSelectNum] && mSelectMenuNum != 2) { + mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0); + mLastSelectMenuNum = mSelectMenuNum; + mSelectMenuNum++; + menuSelectAnmSet(); // run the menu selection animation + mDataSelProc = DATASELPROC_MENU_SELECT_MOVE_ANM; } } } // Handles copy / start / delete actions depending on which menu is selected from menuSelect void dFile_select_c::menuSelectStart() { - mDoAud_seStart(Z2SE_SY_CURSOR_OK,0,0,0); + mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0); if (mSelectMenuNum == 1) { - dComIfGs_setCardToMemory((char*)mSave,mSelectNum); - mSelectEnd = 1; - field_0x026f = 46; + dComIfGs_setCardToMemory((u8*)mSaveData, mSelectNum); + mIsSelectEnd = true; + mDataSelProc = DATASELPROC_NEXT_MODE_WAIT; dComIfGs_setDataNum(mSelectNum); - } - else if (mSelectMenuNum == 0) { + } else if (mSelectMenuNum == 0) { mSelIcon->setAlphaRate(0.0f); - yesnoMenuMoveAnmInitSet(0x473,0x47d); - headerTxtSet(0x49, 0,0); - field_0x026e = 1; - field_0x026f = 12; - } - else if (mSelectMenuNum == 2) { - field_0x026a = mSelectNum; - menuMoveAnmInitSet(0x329,799); - headerTxtSet(0x44,0,0); + yesnoMenuMoveAnmInitSet(0x473, 0x47d); + headerTxtSet(0x49, 0, 0); + mCommand = 1; + mDataSelProc = DATASELPROC_TO_ERASE_PANE_MOVE; + } else if (mSelectMenuNum == 2) { + mCpDataNum = mSelectNum; + menuMoveAnmInitSet(0x329, 799); + headerTxtSet(0x44, 0, 0); mSelIcon->setAlphaRate(0.0f); - selectDataMoveAnmInitSet(SelOpenEndFrameTbl[mSelectNum],SelOpenStartFrameTbl[mSelectNum]); - selectWakuAlpahAnmInit(mSelectNum,0,255,g_fsHIO.field_0x0008); - copySelMoveAnmInitSet(0xd1f,0xd29); - field_0x026e = 0; - field_0x026f = 11; + selectDataMoveAnmInitSet(SelOpenEndFrameTbl[mSelectNum], SelOpenStartFrameTbl[mSelectNum]); + selectWakuAlpahAnmInit(mSelectNum, 0, 255, g_fsHIO.select_box_appear_frames); + copySelMoveAnmInitSet(0xd1f, 0xd29); + mCommand = 0; + mDataSelProc = DATASELPROC_TO_COPY_PANE_MOVE; } } void dFile_select_c::menuSelectCansel() { - mDoAud_seStart(Z2SE_SY_CURSOR_CANCEL,0,0,0); - int idx = mSelectNum; - selectDataMoveAnmInitSet(SelOpenEndFrameTbl[idx],SelOpenStartFrameTbl[idx]); - menuMoveAnmInitSet(0x329,799); + mDoAud_seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0); + selectDataMoveAnmInitSet(SelOpenEndFrameTbl[mSelectNum], SelOpenStartFrameTbl[mSelectNum]); + menuMoveAnmInitSet(0x329, 799); modoruTxtDispAnmInit(0); - headerTxtSet(0x43,1,0); - mSelIcon->setAlphaRate(0.0); - field_0x026f = 0xd; + headerTxtSet(0x43, 1, 0); + mSelIcon->setAlphaRate(0.0f); + mDataSelProc = DATASELPROC_BACK_SELECT_MOVE; } void dFile_select_c::menuMoveAnmInitSet(int param_0, int param_1) { @@ -1011,23 +1230,25 @@ void dFile_select_c::menuMoveAnmInitSet(int param_0, int param_1) { for (int i = 0; i < 3; i++) { if (i == mSelectMenuNum) { - static_cast(mpPaneMgr2[i]->getPanePtr())->setWhite(JUtility::TColor(255,255,255,255)); + static_cast(m3mSelTextPane[i]->getPanePtr())->setWhite(JUtility::TColor(255, 255, 255, 255)); } else { - static_cast(mpPaneMgr2[i]->getPanePtr())->setWhite(JUtility::TColor(150,150,150,255)); + static_cast(m3mSelTextPane[i]->getPanePtr())->setWhite(JUtility::TColor(150, 150, 150, 255)); } } } - field_0x0118->setAnimation(field_0x0328); + m3mMenuPane->setAnimation(m3mBck); field_0x0358 = param_0; field_0x035c = param_1; - field_0x0328->setFrame(field_0x0358); - field_0x0118->animationTransform(); + m3mBck->setFrame(field_0x0358); + m3mMenuPane->animationTransform(); } bool dFile_select_c::menuMoveAnm() { + bool ret; + if (field_0x0358 != field_0x035c) { - if (field_0x0358 < field_0x035c){ + if (field_0x0358 < field_0x035c) { field_0x0358 += 2; if (field_0x0358 > field_0x035c) @@ -1037,13 +1258,13 @@ bool dFile_select_c::menuMoveAnm() { if (field_0x0358 < field_0x035c) field_0x0358 = field_0x035c; - } + } - field_0x0328->setFrame(field_0x0358); - field_0x0118->animationTransform(); - return false; + m3mBck->setFrame(field_0x0358); + m3mMenuPane->animationTransform(); + ret = false; } else { - field_0x0118->setAnimation((J2DAnmTransform*)0); + m3mMenuPane->setAnimation((J2DAnmTransform*)NULL); if (field_0x035c == 0x0329) { field_0x0360 = true; field_0x0283 = false; @@ -1051,40 +1272,45 @@ bool dFile_select_c::menuMoveAnm() { field_0x0360 = false; if (mSelectMenuNum != 0xFF) { - mpPaneAlpha1[mSelectMenuNum]->setAlpha(0); - mpPaneAlpha2[mSelectMenuNum]->setAlpha(0); - mpPaneAlpha3[mSelectMenuNum]->setAlpha(0); + m3mSelPane_mo[mSelectMenuNum]->setAlpha(0); + m3mSelPane_g[mSelectMenuNum]->setAlpha(0); + m3mSelPane_gr[mSelectMenuNum]->setAlpha(0); } } - return true; + ret = true; } + + return ret; } void dFile_select_c::menuSelectAnmSet() { if (mSelectMenuNum != 0xFF) { - field_0x0340[mSelectMenuNum]->getPanePtr()->setAnimation(field_0x0328); + m3mSelPane[mSelectMenuNum]->getPanePtr()->setAnimation(m3mBck); field_0x034c[mSelectMenuNum] = MenuSelEndFrameTbl[mSelectMenuNum]; - field_0x0328->setFrame(field_0x034c[mSelectMenuNum]); - field_0x0340[mSelectMenuNum]->getPanePtr()->animationTransform(); + m3mBck->setFrame(field_0x034c[mSelectMenuNum]); + m3mSelPane[mSelectMenuNum]->getPanePtr()->animationTransform(); } if (mLastSelectMenuNum != 0xFF) { - field_0x0340[mLastSelectMenuNum]->getPanePtr()->setAnimation(field_0x032c); + m3mSelPane[mLastSelectMenuNum]->getPanePtr()->setAnimation(m3mBck2); field_0x034c[mLastSelectMenuNum] = MenuSelStartFrameTbl[mLastSelectMenuNum]; - field_0x032c->setFrame(field_0x034c[mLastSelectMenuNum]); - field_0x0340[mLastSelectMenuNum]->getPanePtr()->animationTransform(); - menuWakuAlpahAnmInit(mLastSelectMenuNum,0xFF,0,g_fsHIO.field_0x0008); + m3mBck2->setFrame(field_0x034c[mLastSelectMenuNum]); + m3mSelPane[mLastSelectMenuNum]->getPanePtr()->animationTransform(); + menuWakuAlpahAnmInit(mLastSelectMenuNum, 0xFF, 0, g_fsHIO.select_box_appear_frames); mSelIcon->setAlphaRate(0.0f); } } void dFile_select_c::menuSelectMoveAnm() { bool tmp1 = true; - if (mSelectMenuNum != 0xFF && field_0x034c[mSelectMenuNum] != MenuSelStartFrameTbl[mSelectMenuNum]) { + + if (mSelectMenuNum != 0xFF && + field_0x034c[mSelectMenuNum] != MenuSelStartFrameTbl[mSelectMenuNum]) + { if (field_0x034c[mSelectMenuNum] > MenuSelStartFrameTbl[mSelectMenuNum]) { field_0x034c[mSelectMenuNum] -= 2; - + if (field_0x034c[mSelectMenuNum] < MenuSelStartFrameTbl[mSelectMenuNum]) field_0x034c[mSelectMenuNum] = MenuSelStartFrameTbl[mSelectMenuNum]; } else { @@ -1094,84 +1320,87 @@ void dFile_select_c::menuSelectMoveAnm() { field_0x034c[mSelectMenuNum] = MenuSelStartFrameTbl[mSelectMenuNum]; } - field_0x0328->setFrame(field_0x034c[mSelectMenuNum]); - field_0x0340[mSelectMenuNum]->getPanePtr()->animationTransform(); + m3mBck->setFrame(field_0x034c[mSelectMenuNum]); + m3mSelPane[mSelectMenuNum]->getPanePtr()->animationTransform(); tmp1 = false; - } - - bool tmp2 = true; - bool tmp3 = true; - - if (mLastSelectMenuNum != 0xFF) { - if (field_0x034c[mLastSelectMenuNum] != MenuSelEndFrameTbl[mLastSelectMenuNum]) { - if (field_0x034c[mLastSelectMenuNum] < MenuSelEndFrameTbl[mLastSelectMenuNum]) { - field_0x034c[mLastSelectMenuNum] += 2; - - if (field_0x034c[mLastSelectMenuNum] > MenuSelEndFrameTbl[mLastSelectMenuNum]) - field_0x034c[mLastSelectMenuNum] = MenuSelEndFrameTbl[mLastSelectMenuNum]; - - } else { - field_0x034c[mLastSelectMenuNum] -= 2; - - if (field_0x034c[mLastSelectMenuNum] < MenuSelEndFrameTbl[mLastSelectMenuNum]) - field_0x034c[mLastSelectMenuNum] = MenuSelEndFrameTbl[mLastSelectMenuNum]; - } - field_0x032c->setFrame(field_0x034c[mLastSelectMenuNum]); - field_0x0340[mLastSelectMenuNum]->getPanePtr()->animationTransform(); - tmp2 = false; } - tmp3 = menuWakuAlpahAnm(mLastSelectMenuNum); - } - - if (tmp1 == true && tmp2 == true && tmp3 == true) { - if (mSelectMenuNum != 0xFF) { - field_0x0340[mSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); - menuCursorShow(); - } + bool tmp2 = true; + bool tmp3 = true; if (mLastSelectMenuNum != 0xFF) { - field_0x0340[mLastSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + if (field_0x034c[mLastSelectMenuNum] != MenuSelEndFrameTbl[mLastSelectMenuNum]) { + if (field_0x034c[mLastSelectMenuNum] < MenuSelEndFrameTbl[mLastSelectMenuNum]) { + field_0x034c[mLastSelectMenuNum] += 2; + + if (field_0x034c[mLastSelectMenuNum] > MenuSelEndFrameTbl[mLastSelectMenuNum]) + field_0x034c[mLastSelectMenuNum] = MenuSelEndFrameTbl[mLastSelectMenuNum]; + + } else { + field_0x034c[mLastSelectMenuNum] -= 2; + + if (field_0x034c[mLastSelectMenuNum] < MenuSelEndFrameTbl[mLastSelectMenuNum]) + field_0x034c[mLastSelectMenuNum] = MenuSelEndFrameTbl[mLastSelectMenuNum]; + } + m3mBck2->setFrame(field_0x034c[mLastSelectMenuNum]); + m3mSelPane[mLastSelectMenuNum]->getPanePtr()->animationTransform(); + tmp2 = false; + } + + tmp3 = menuWakuAlpahAnm(mLastSelectMenuNum); } - field_0x026f = 8; - } + if (tmp1 == true && tmp2 == true && tmp3 == true) { + if (mSelectMenuNum != 0xFF) { + m3mSelPane[mSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + menuCursorShow(); + } + + if (mLastSelectMenuNum != 0xFF) { + m3mSelPane[mLastSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + } + + mDataSelProc = DATASELPROC_MENU_SELECT; + } } void dFile_select_c::ToNameMove() { - bool headerTxtChange = headerTxtChangeAnm(); - bool nameMove = nameMoveAnm(); - bool menuMove = menuMoveAnm(); - bool fileRecScale = fileRecScaleAnm(); - bool fileInfoScale = fileInfoScaleAnm(); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isNameMove = nameMoveAnm(); + bool isMenuMove = menuMoveAnm(); + bool isFileRecScale = fileRecScaleAnm(); + bool isFileInfoScale = fileInfoScaleAnm(); - if (headerTxtChange == true && nameMove == true && menuMove == true && - (fileRecScale == true && fileInfoScale == true)) { - field_0x026f = 15; + if (isHeaderTxtChange == true && isNameMove == true && isMenuMove == true && + (isFileRecScale == true && isFileInfoScale == true)) + { + mDataSelProc = DATASELPROC_NAME_INPUT_WAIT; } } void dFile_select_c::ToNameMove2() { - bool headerTxtChange = headerTxtChangeAnm(); - bool nameMove = nameMoveAnm(); - bool errorMove = errorMoveAnm(); - bool yesnoMenuMove = yesnoMenuMoveAnm(); - bool ketteiTxtDisp = ketteiTxtDispAnm(); - bool returnTxtDisp = modoruTxtDispAnm(); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isNameMove = nameMoveAnm(); + bool isErrorMove = errorMoveAnm(); + bool isYnMenuMove = yesnoMenuMoveAnm(); + bool isKetteiTxtDisp = ketteiTxtDispAnm(); + bool isModoruTxtDisp = modoruTxtDispAnm(); - if (headerTxtChange == true && nameMove == true && errorMove == true && - (yesnoMenuMove == true && ketteiTxtDisp == true && returnTxtDisp == true)) { - field_0x026f = 15; + if (isHeaderTxtChange == true && isNameMove == true && isErrorMove == true && + (isYnMenuMove == true && isKetteiTxtDisp == true && isModoruTxtDisp == true)) + { + mDataSelProc = DATASELPROC_NAME_INPUT_WAIT; } } void dFile_select_c::nameInputWait() { mpName->showIcon(); - field_0x026f = 16; + mDataSelProc = DATASELPROC_NAME_INPUT; } void dFile_select_c::nameInput() { mpName->_move(); + if (mpName->getCurPos() == 0) { if (field_0x024c != 0) { modoruTxtChange(0); @@ -1180,71 +1409,92 @@ void dFile_select_c::nameInput() { modoruTxtChange(1); } - int inputEnd = mpName->isInputEnd(); - - switch(mpName->isInputEnd()) { + switch (mpName->isInputEnd()) { case 1: if (dComIfGs_getNoFile() == 1) { field_0x021e = 0; - field_0x026f = 0; - field_0x0271 = 0; + mDataSelProc = DATASELPROC_MEMCARD_CHECK_MAIN; + mCardCheckProc = MEMCARDCHECKPROC_STAT_CHECK; } else { - headerTxtSet(0x43,1,0); - fileRecScaleAnmInitSet2(0.0f,1.0f); - nameMoveAnmInitSet(0xd29,0xd1f); + headerTxtSet(0x43, 1, 0); + fileRecScaleAnmInitSet2(0.0f, 1.0f); + nameMoveAnmInitSet(0xd29, 0xd1f); modoruTxtDispAnmInit(0); - field_0x026f = 14; + mDataSelProc = DATASELPROC_NAME_TO_DATA_SELECT_MOVE; } break; case 2: dComIfGs_setPlayerName(mpName->getInputStrPtr()); mpName->hideIcon(); - field_0x020a = 15; - field_0x026f = 17; - + mFadeTimer = 15; + + #if PLATFORM_WII || PLATFORM_SHIELD + mDoGph_gInf_c::startFadeOut(15); + mFadeFlag = true; + #endif + + mDataSelProc = DATASELPROC_NAME_INPUT_FADE; } } void dFile_select_c::nameToDataSelectMove() { - bool headerTxtChange = headerTxtChangeAnm(); - bool fileResScal = fileRecScaleAnm2(); - bool nameMove = nameMoveAnm(); - bool modoruTxtDisp = modoruTxtDispAnm(); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isFileRecScale = fileRecScaleAnm2(); + bool isNameMove = nameMoveAnm(); + bool isModoruTxtDisp = modoruTxtDispAnm(); - if (headerTxtChange == true && fileResScal == true && nameMove == true && modoruTxtDisp == true) { + if (isHeaderTxtChange == true && isFileRecScale == true && isNameMove == true && isModoruTxtDisp == true) + { modoruTxtChange(0); selFileCursorShow(); - field_0x026f = 3; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = mSelectNum; + #endif + + mDataSelProc = DATASELPROC_DATA_SELECT; } } void dFile_select_c::nameInputFade() { - char name[32]; - field_0x020a--; - u8 alpha = (1.0f - (field_0x020a / 15.0f)) * 255.0f; - field_0x2378->setAlpha(alpha); + mFadeTimer--; - if (field_0x020a == 0) { - headerTxtSet(900,1,1); - dMeter2Info_getString(899,name,0); + #if PLATFORM_GCN + u8 alpha = (1.0f - (mFadeTimer / 15.0f)) * 255.0f; + mpFadePict->setAlpha(alpha); + #endif + + if (mFadeTimer == 0) { + char name[32]; + headerTxtSet(900, 1, 1); + dMeter2Info_getString(899, name, NULL); dComIfGs_setHorseName(name); mpName->setNextNameStr(dComIfGs_getHorseName()); mpName->initial(); - field_0x020a = 15; - field_0x026f = 18; + + mFadeTimer = 15; + + #if PLATFORM_WII || PLATFORM_SHIELD + mDoGph_gInf_c::startFadeIn(15); + mFadeFlag = false; + #endif + + mDataSelProc = DATASELPROC_NAME_INPUT2_MOVE; } } void dFile_select_c::nameInput2Move() { - if (mDoRst::isReset() == 0) { - field_0x020a--; + if (!mDoRst::isReset()) { + mFadeTimer--; - u8 alpha = (field_0x020a / 15.0f) * 255.0f; - field_0x2378->setAlpha(alpha); + #if PLATFORM_GCN + u8 alpha = (mFadeTimer / 15.0f) * 255.0f; + mpFadePict->setAlpha(alpha); + #endif - if (field_0x020a == 0) { + if (mFadeTimer == 0) { mpName->showIcon(); - field_0x026f = 19; + mDataSelProc = DATASELPROC_NAME_INPUT2; } } } @@ -1259,137 +1509,172 @@ void dFile_select_c::nameInput2() { modoruTxtChange(1); } - switch(mpName->isInputEnd()) { + switch (mpName->isInputEnd()) { case 1: mpName->hideIcon(); - field_0x020a = 0xf; - field_0x026f = 20; + mFadeTimer = 15; + + #if PLATFORM_WII || PLATFORM_SHIELD + mDoGph_gInf_c::startFadeOut(15); + mFadeFlag = true; + #endif + + mDataSelProc = DATASELPROC_BACK_NAME_INPUT_MOVE0; break; case 2: dComIfGs_setHorseName(mpName->getInputStrPtr()); - mSelectEnd = true; - field_0x026f = 46; + mIsSelectEnd = true; + mDataSelProc = DATASELPROC_NEXT_MODE_WAIT; } } void dFile_select_c::backNameInputMove0() { - field_0x020a--; - u8 alpha = (1.0f - (field_0x020a / 15.0f)) * 255.0f; - field_0x2378->setAlpha(alpha); + mFadeTimer--; - if (field_0x020a == 0) { - headerTxtSet(901,1,1); + #if PLATFORM_GCN + u8 alpha = (1.0f - (mFadeTimer / 15.0f)) * 255.0f; + mpFadePict->setAlpha(alpha); + #endif + + if (mFadeTimer == 0) { + headerTxtSet(901, 1, 1); mpName->setNextNameStr(dComIfGs_getPlayerName()); mpName->initial(); modoruTxtChange(1); - field_0x020a = 15; - field_0x026f = 21; + + mFadeTimer = 15; + + #if PLATFORM_WII || PLATFORM_SHIELD + mDoGph_gInf_c::startFadeIn(15); + mFadeFlag = false; + #endif + + mDataSelProc = DATASELPROC_BACK_NAME_INPUT_MOVE; } } void dFile_select_c::backNameInputMove() { - if (mDoRst::isReset() == 0) { - field_0x020a--; + if (!mDoRst::isReset()) { + mFadeTimer--; - u8 alpha = (field_0x020a / 15.0f) * 255.0f; - field_0x2378->setAlpha(alpha); + #if PLATFORM_GCN + u8 alpha = (mFadeTimer / 15.0f) * 255.0f; + mpFadePict->setAlpha(alpha); + #endif - if (field_0x020a == 0) { + if (mFadeTimer == 0) { modoruTxtChange(1); - field_0x026f = 15; + mDataSelProc = DATASELPROC_NAME_INPUT_WAIT; } } } void dFile_select_c::ToCopyPaneMove() { - bool headerTxtChange = headerTxtChangeAnm(); - bool menuMove = menuMoveAnm(); - bool selectDataMove = selectDataMoveAnm(); - bool selectWakuAlpha = selectWakuAlpahAnm(mSelectNum); - bool nameMove = nameMoveAnm(); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isMenuMove = menuMoveAnm(); + bool isSelDataMove = selectDataMoveAnm(); + bool isSelWakuAlpha = selectWakuAlpahAnm(mSelectNum); + bool isNameMove = nameMoveAnm(); - if (headerTxtChange == true && menuMove == true && selectDataMove == true && - selectWakuAlpha == true && nameMove == true) + if (isHeaderTxtChange == true && isMenuMove == true && isSelDataMove == true && + isSelWakuAlpha == true && isNameMove == true) { field_0x026b = 0; - Vec local_2c = field_0x02a4[field_0x026b]->getGlobalVtxCenter(false, 0); - mSelIcon2->setPos(local_2c.x, local_2c.y, field_0x02a4[field_0x026b]->getPanePtr(), true); + Vec pos = mCpSelPane[field_0x026b]->getGlobalVtxCenter(false, 0); + mSelIcon2->setPos(pos.x, pos.y, mCpSelPane[field_0x026b]->getPanePtr(), true); mSelIcon2->setAlphaRate(1.0f); - field_0x026f = 22; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = field_0x026b; + #endif + + mDataSelProc = DATASELPROC_COPY_DATA_TO_SELECT; } } void dFile_select_c::ToErasePaneMove() { - bool headerTxtChange = headerTxtChangeAnm(); - bool yesnoMenuMove = yesnoMenuMoveAnm(); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isYnMenuMove = yesnoMenuMoveAnm(); - if (headerTxtChange == true && yesnoMenuMove == true) { + if (isHeaderTxtChange == true && isYnMenuMove == true) { yesnoCursorShow(); - field_0x026f = 26; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = field_0x0268; + #endif + + mDataSelProc = DATASELPROC_YES_NO_SELECT; } } void dFile_select_c::backSelectMove() { - bool headerTxtChange = headerTxtChangeAnm(); - bool selectDataMove = selectDataMoveAnm(); - bool menuMove = menuMoveAnm(); - bool modoruTxtDisp = modoruTxtDispAnm(); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isSelDataMove = selectDataMoveAnm(); + bool isMenuMove = menuMoveAnm(); + bool isModoruTxtDisp = modoruTxtDispAnm(); - if (headerTxtChange == true && selectDataMove == true && menuMove == true && modoruTxtDisp == true) { + if (isHeaderTxtChange == true && isSelDataMove == true && isMenuMove == true && + isModoruTxtDisp == true) + { selFileCursorShow(); mpFileSelect3d->drawOff(); - field_0x026f = 3; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = mSelectNum; + #endif + + mDataSelProc = DATASELPROC_DATA_SELECT; } } void dFile_select_c::copySelMoveAnmInitSet(int param_0, int param_1) { - if (param_0 == 0xd1f) { - field_0x02c0[0]->setAlpha(0xff); - field_0x02c8[0]->setAlpha(0xff); - field_0x02d0[0]->setAlpha(0xff); - field_0x02c0[1]->setAlpha(0); - field_0x02c8[1]->setAlpha(0); - field_0x02d0[1]->setAlpha(0); + if (param_0 == 3359) { + mCpSelPane_moyo[0]->setAlpha(0xff); + mCpSelPane_gold[0]->setAlpha(0xff); + mCpSelPane_gold2[0]->setAlpha(0xff); + mCpSelPane_moyo[1]->setAlpha(0); + mCpSelPane_gold[1]->setAlpha(0); + mCpSelPane_gold2[1]->setAlpha(0); - field_0x02a4[0]->getPanePtr()->setAnimation(field_0x029c); - field_0x029c->setFrame(99.0f); - field_0x02a4[0]->getPanePtr()->animationTransform(); - field_0x02a4[0]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + mCpSelPane[0]->getPanePtr()->setAnimation(mCpSelBck); + mCpSelBck->setFrame(99.0f); + mCpSelPane[0]->getPanePtr()->animationTransform(); + mCpSelPane[0]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + + mCpSelPane[1]->getPanePtr()->setAnimation(mCpSelBck2); + mCpSelBck2->setFrame(109.0f); + mCpSelPane[1]->getPanePtr()->animationTransform(); + mCpSelPane[1]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); - field_0x02a4[1]->getPanePtr()->setAnimation(field_0x02a0); - field_0x02a0->setFrame(109.0f); - field_0x02a4[1]->getPanePtr()->animationTransform(); - field_0x02a4[1]->getPanePtr()->setAnimation((J2DAnmTransform*)0); - setSaveDataForCopySel(); - mCpSel.field_0x08 = true; + mCpSel.isShow = true; } - field_0x011c->setAnimation(field_0x0094); + mNameBasePane->setAnimation(field_0x0094); field_0x0120 = param_0; field_0x0124 = param_1; field_0x0094->setFrame(field_0x0120); - field_0x011c->animationTransform(); + mNameBasePane->animationTransform(); } void dFile_select_c::setSaveDataForCopySel() { static u64 l_tagName101[2] = {'w_nun01', 'w_nun02'}; - static char* l_numTex[3] = { - "tt_1_metal_40x40.bti", "tt_2_metal_40x40.bti", "tt_3_metal_40x40.bti" - }; - SaveData* pSave = mSave; + static char* l_numTex[3] = {"tt_1_metal_40x40.bti", "tt_2_metal_40x40.bti", + "tt_3_metal_40x40.bti"}; + SaveDataBuf* pSave = mSaveData; int notSelectedIndex = 0; for (int i = 0; i < 3; i++) { if (i == mSelectNum) { pSave++; continue; } - J2DPicture* tagName = (J2DPicture*) mCpSel.Scr->search(l_tagName101[notSelectedIndex]); - tagName->changeTexture(l_numTex[i], 0); - CPaneMgrAlpha* datBase = mpFileInfo[notSelectedIndex]->getDatBase(); - CPaneMgrAlpha* noDatBase = mpFileInfo[notSelectedIndex]->getNoDatBase(); - int saveResult = - mpFileInfo[notSelectedIndex]->setSaveData((dSv_save_c*)*pSave, field_0x025b[i] == 0, i); + + J2DPicture* numPict = (J2DPicture*)mCpSel.Scr->search(l_tagName101[notSelectedIndex]); + numPict->changeTexture(l_numTex[i], 0); + CPaneMgrAlpha* datBase = mCpFileInfo[notSelectedIndex]->getDatBase(); + CPaneMgrAlpha* noDatBase = mCpFileInfo[notSelectedIndex]->getNoDatBase(); + + int saveResult = mCpFileInfo[notSelectedIndex]->setSaveData((dSv_save_c*)*pSave, mIsNoData[i] == false, i); if (saveResult == -1 || saveResult == 1) { datBase->hide(); noDatBase->show(); @@ -1397,64 +1682,67 @@ void dFile_select_c::setSaveDataForCopySel() { datBase->show(); noDatBase->hide(); } + pSave++; notSelectedIndex++; } } void dFile_select_c::copyDataToSelect() { - mStick->checkTrigger(); - if (mDoCPd_c::getTrigA(0) != 0) { + stick->checkTrigger(); + + if (mDoCPd_c::getTrigA(PAD_1)) { copyDataToSelectStart(); - return; - } - if (mDoCPd_c::getTrigB(0) != 0) { + } else if (mDoCPd_c::getTrigB(PAD_1)) { copyDataToSelectCansel(); - return; - } - if (mStick->checkUpTrigger()) { + } else if (stick->checkUpTrigger()) { if (field_0x026b != 0) { - mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR, 0, 0, 0); + mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR, NULL, 0, 0); field_0x026c = field_0x026b; field_0x026b = 0; copyDataToSelectMoveAnmSet(); - field_0x026f = 23; + mDataSelProc = DATASELPROC_COPY_DATA_TO_SELECT_MOVE_ANM; } - } else if (mStick->checkDownTrigger() && field_0x026b != 1) { - mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR, 0, 0, 0); + } else if (stick->checkDownTrigger() && field_0x026b != 1) { + mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR, NULL, 0, 0); field_0x026c = field_0x026b; field_0x026b = 1; copyDataToSelectMoveAnmSet(); - field_0x026f = 23; + mDataSelProc = DATASELPROC_COPY_DATA_TO_SELECT_MOVE_ANM; } } void dFile_select_c::copyDataToSelectStart() { - mDoAud_seStart(Z2SE_SY_CURSOR_OK, 0, 0, 0); - field_0x026d = getCptoNum(field_0x026b); + mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0); + + mCpDataToNum = getCptoNum(field_0x026b); mSelIcon2->setAlphaRate(0.0f); - if (mDataNew[field_0x026d] != 0) { + + if (mIsDataNew[mCpDataToNum] != 0) { headerTxtSet(70, 0, 0); mpFileWarning->openInit(); - field_0x0158[mSelectNum]->getPanePtr()->scale(1.0f, 1.0f); - field_0x0158[mSelectNum]->alphaAnimeStart(0); - field_0x0158[mSelectNum]->setAlpha(0); - field_0x0158[field_0x026d]->getPanePtr()->scale(1.0f, 1.0f); - field_0x0158[field_0x026d]->alphaAnimeStart(0); - field_0x0158[field_0x026d]->setAlpha(0); - selectWakuAlpahAnmInit(field_0x026d, 0, 0xff, g_fsHIO.field_0x0008); + mCopyEfPane[mSelectNum]->getPanePtr()->scale(1.0f, 1.0f); + mCopyEfPane[mSelectNum]->alphaAnimeStart(0); + mCopyEfPane[mSelectNum]->setAlpha(0); + mCopyEfPane[mCpDataToNum]->getPanePtr()->scale(1.0f, 1.0f); + mCopyEfPane[mCpDataToNum]->alphaAnimeStart(0); + mCopyEfPane[mCpDataToNum]->setAlpha(0); + + selectWakuAlpahAnmInit(mCpDataToNum, 0, 0xff, g_fsHIO.select_box_appear_frames); copySelMoveAnmInitSet(3369, 3359); - field_0x01fc = 0; - field_0x0204 = 0; + + mCpEffBtkFrame = 0; + mCpDtEffBrkFrame = 0; field_0x0209 = 1; field_0x03b1 = 1; modoruTxtDispAnmInit(0); ketteiTxtDispAnmInit(0); - field_0x026f = 29; + + mDataSelProc = DATASELPROC_CMD_EXEC_PANE_MOVE0; } else { yesnoMenuMoveAnmInitSet(1139, 1149); headerTxtSet(69, 0, 0); - field_0x026f = 25; + mDataSelProc = DATASELPROC_COPY_TO_SEL_PANE_MOVE; } } @@ -1465,25 +1753,26 @@ void dFile_select_c::copyDataToSelectCansel() { copySelMoveAnmInitSet(3369, 3359); headerTxtSet(msgTbl[mSelectNum], 1, 0); mSelIcon2->setAlphaRate(0.0f); - selectWakuAlpahAnmInit(mSelectNum, 0xff, 0, g_fsHIO.field_0x0008); - field_0x026f = 24; + selectWakuAlpahAnmInit(mSelectNum, 0xff, 0, g_fsHIO.select_box_appear_frames); + mDataSelProc = DATASELPROC_COPY_TO_SEL_BACK; } void dFile_select_c::copyDataToSelectMoveAnmSet() { if (field_0x026b != 0xff) { - field_0x02d8[field_0x026b]->alphaAnimeStart(0); - field_0x02a4[field_0x026b]->getPanePtr()->setAnimation(field_0x029c); + mCpSelPane_book[field_0x026b]->alphaAnimeStart(0); + mCpSelPane[field_0x026b]->getPanePtr()->setAnimation(mCpSelBck); field_0x02b4[field_0x026b] = 109; - field_0x029c->setFrame(field_0x02b4[field_0x026b]); - field_0x02a4[field_0x026b]->getPanePtr()->animationTransform(); + mCpSelBck->setFrame(field_0x02b4[field_0x026b]); + mCpSelPane[field_0x026b]->getPanePtr()->animationTransform(); } + if (field_0x026c != 0xff) { - copySelectWakuAlpahAnmInit(field_0x026c, 0xff, 0, g_fsHIO.field_0x0008); - field_0x02d8[field_0x026c]->alphaAnimeStart(0); - field_0x02a4[field_0x026c]->getPanePtr()->setAnimation(field_0x02a0); + copySelectWakuAlpahAnmInit(field_0x026c, 0xff, 0, g_fsHIO.select_box_appear_frames); + mCpSelPane_book[field_0x026c]->alphaAnimeStart(0); + mCpSelPane[field_0x026c]->getPanePtr()->setAnimation(mCpSelBck2); field_0x02b4[field_0x026c] = 99; - field_0x02a0->setFrame(field_0x02b4[field_0x026c]); - field_0x02a4[field_0x026c]->getPanePtr()->animationTransform(); + mCpSelBck2->setFrame(field_0x02b4[field_0x026c]); + mCpSelPane[field_0x026c]->getPanePtr()->animationTransform(); mSelIcon2->setAlphaRate(0.0f); } } @@ -1492,80 +1781,89 @@ void dFile_select_c::copyDataToSelectMoveAnm() { bool iVar7 = true; bool iVar6 = true; bool bVar1 = true; + if (field_0x026c != 0xff) { - iVar7 = field_0x02d8[field_0x026c]->alphaAnime(g_fsHIO.field_0x0006, 0xff, 0, 1); + iVar7 = mCpSelPane_book[field_0x026c]->alphaAnime(g_fsHIO.base_effect_appear_frames, 0xff, 0, 1); iVar6 = copySelectWakuAlpahAnm(field_0x026c); if (field_0x02b4[field_0x026c] != 109) { field_0x02b4[field_0x026c] += 2; if (field_0x02b4[field_0x026c] > 109) { field_0x02b4[field_0x026c] = 109; } - field_0x02a0->setFrame(field_0x02b4[field_0x026c]); - field_0x02a4[field_0x026c]->getPanePtr()->animationTransform(); + mCpSelBck2->setFrame(field_0x02b4[field_0x026c]); + mCpSelPane[field_0x026c]->getPanePtr()->animationTransform(); bVar1 = false; } } + bool iVar5 = true; bool bVar2 = true; if (field_0x026b != 0xff) { - iVar5 = field_0x02d8[field_0x026b]->alphaAnime(g_fsHIO.field_0x0006, 0, 0xff, 1); + iVar5 = mCpSelPane_book[field_0x026b]->alphaAnime(g_fsHIO.base_effect_appear_frames, 0, 0xff, 1); if (field_0x02b4[field_0x026b] != 99) { - field_0x02b4[field_0x026b] -= 2; - if (field_0x02b4[field_0x026b] < 99) { - field_0x02b4[field_0x026b] = 99; - } - field_0x029c->setFrame(field_0x02b4[field_0x026b]); - field_0x02a4[field_0x026b]->getPanePtr()->animationTransform(); - bVar2 = false; + field_0x02b4[field_0x026b] -= 2; + if (field_0x02b4[field_0x026b] < 99) { + field_0x02b4[field_0x026b] = 99; } + mCpSelBck->setFrame(field_0x02b4[field_0x026b]); + mCpSelPane[field_0x026b]->getPanePtr()->animationTransform(); + bVar2 = false; + } } if (iVar7 == true && iVar6 == true && bVar1 == true && iVar5 == true && bVar2 == true) { if (field_0x026c != 0xff) { - field_0x02a4[field_0x026c]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + mCpSelPane[field_0x026c]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); } + if (field_0x026b != 0xff) { - field_0x02a4[field_0x026b]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); - field_0x02c0[field_0x026b]->setAlpha(0xff); - field_0x02c8[field_0x026b]->setAlpha(0xff); - field_0x02d0[field_0x026b]->setAlpha(0xff); - Vec local_3c = field_0x02a4[field_0x026b]->getGlobalVtxCenter(false, 0); - mSelIcon2->setPos(local_3c.x, local_3c.y, field_0x02a4[field_0x026b]->getPanePtr(), - true); + mCpSelPane[field_0x026b]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + mCpSelPane_moyo[field_0x026b]->setAlpha(0xff); + mCpSelPane_gold[field_0x026b]->setAlpha(0xff); + mCpSelPane_gold2[field_0x026b]->setAlpha(0xff); + + Vec pos = mCpSelPane[field_0x026b]->getGlobalVtxCenter(false, 0); + mSelIcon2->setPos(pos.x, pos.y, mCpSelPane[field_0x026b]->getPanePtr(), true); mSelIcon2->setAlphaRate(1.0f); } - field_0x026f = 22; + + mDataSelProc = DATASELPROC_COPY_DATA_TO_SELECT; } } -void dFile_select_c::copySelectWakuAlpahAnmInit(u8 param_1, u8 param_2, u8 param_3, u8 param_4) { - if (param_1 != 0xff) { - field_0x02c0[param_1]->alphaAnimeStart(0); - field_0x02c8[param_1]->alphaAnimeStart(0); - field_0x02d0[param_1]->alphaAnimeStart(0); - field_0x02e0[param_1] = param_2; - field_0x02e2[param_1] = param_3; - field_0x02e4[param_1] = param_4; +void dFile_select_c::copySelectWakuAlpahAnmInit(u8 i_idx, u8 param_2, u8 param_3, u8 param_4) { + if (i_idx != 0xff) { + mCpSelPane_moyo[i_idx]->alphaAnimeStart(0); + mCpSelPane_gold[i_idx]->alphaAnimeStart(0); + mCpSelPane_gold2[i_idx]->alphaAnimeStart(0); + field_0x02e0[i_idx] = param_2; + field_0x02e2[i_idx] = param_3; + field_0x02e4[i_idx] = param_4; } } -bool dFile_select_c::copySelectWakuAlpahAnm(u8 param_1) { - if (param_1 == 0xff) { +bool dFile_select_c::copySelectWakuAlpahAnm(u8 i_idx) { + if (i_idx == 0xff) { return true; } + bool rv = false; - bool iVar2 = field_0x02c0[param_1]->alphaAnime(field_0x02e4[param_1], field_0x02e0[param_1], field_0x02e2[param_1], 0); - bool iVar3 = field_0x02c8[param_1]->alphaAnime(field_0x02e4[param_1], field_0x02e0[param_1], field_0x02e2[param_1], 0); - bool iVar4 = field_0x02d0[param_1]->alphaAnime(field_0x02e4[param_1], field_0x02e0[param_1], field_0x02e2[param_1], 0); + bool iVar2 = mCpSelPane_moyo[i_idx]->alphaAnime(field_0x02e4[i_idx], field_0x02e0[i_idx], + field_0x02e2[i_idx], 0); + bool iVar3 = mCpSelPane_gold[i_idx]->alphaAnime(field_0x02e4[i_idx], field_0x02e0[i_idx], + field_0x02e2[i_idx], 0); + bool iVar4 = mCpSelPane_gold2[i_idx]->alphaAnime(field_0x02e4[i_idx], field_0x02e0[i_idx], + field_0x02e2[i_idx], 0); if (iVar2 == true && iVar3 == true && iVar4 == true) { rv = true; } + return rv; } u8 dFile_select_c::getCptoNum(u8 param_0) { u8 cptoNum; - switch (field_0x026a) { + switch (mCpDataNum) { case 0: cptoNum = param_0 + 1; break; @@ -1576,40 +1874,53 @@ u8 dFile_select_c::getCptoNum(u8 param_0) { cptoNum = param_0; break; } + return cptoNum; } void dFile_select_c::copyToSelBack() { - bool txtChanged = headerTxtChangeAnm(); - bool selectDataMoved = selectDataMoveAnm(); - bool menuMoved = menuMoveAnm(); - bool selectWakuAnimated = selectWakuAlpahAnm(mSelectNum); - bool nameMoved = nameMoveAnm(); - if (txtChanged == true && selectDataMoved == true && menuMoved == true && - selectWakuAnimated == true && nameMoved == true) + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isSelDataMove = selectDataMoveAnm(); + bool isMenuMove = menuMoveAnm(); + bool isSelWakuAlpha = selectWakuAlpahAnm(mSelectNum); + bool isNameMove = nameMoveAnm(); + + if (isHeaderTxtChange == true && isSelDataMove == true && isMenuMove == true && + isSelWakuAlpha == true && isNameMove == true) { for (int i = 0; i < 3; i++) { - field_0x0340[i]->getPanePtr()->setAnimation(field_0x0328); + m3mSelPane[i]->getPanePtr()->setAnimation(m3mBck); if (i == mSelectMenuNum) { - field_0x0328->setFrame(MenuSelStartFrameTbl[i]); + m3mBck->setFrame(MenuSelStartFrameTbl[i]); } else { - field_0x0328->setFrame(MenuSelEndFrameTbl[i]); + m3mBck->setFrame(MenuSelEndFrameTbl[i]); } - field_0x0340[i]->getPanePtr()->animationTransform(); - field_0x0340[i]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); - ((J2DTextBox*)mpPaneMgr2[i]->getPanePtr())->setWhite(JUtility::TColor(0x96, 0x96, 0x96, 0xff)); + m3mSelPane[i]->getPanePtr()->animationTransform(); + m3mSelPane[i]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + ((J2DTextBox*)m3mSelTextPane[i]->getPanePtr())->setWhite(JUtility::TColor(0x96, 0x96, 0x96, 0xff)); } + menuCursorShow(); - field_0x026f = 8; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = mSelectMenuNum; + #endif + + mDataSelProc = DATASELPROC_MENU_SELECT; } } void dFile_select_c::copyToSelPaneMove() { - bool txtChanged = headerTxtChangeAnm(); - bool menuMoved = yesnoMenuMoveAnm(); - if (txtChanged == true && menuMoved == true) { + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isYnMenuMove = yesnoMenuMoveAnm(); + if (isHeaderTxtChange == true && isYnMenuMove == true) { yesnoCursorShow(); - field_0x026f = 26; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = field_0x0268; + #endif + + mDataSelProc = DATASELPROC_YES_NO_SELECT; } } @@ -1618,19 +1929,25 @@ void dFile_select_c::yesnoMenuMoveAnmInitSet(int param_1, int param_2) { field_0x0268 = false; field_0x0269 = true; } + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = field_0x0268; + #endif + if (param_1 == 1139) { field_0x0281 = true; - ((J2DTextBox*)field_0x01c0[field_0x0268]->getPanePtr())->setWhite(JUtility::TColor(0xff, 0xff, 0xff, 0xff)); - ((J2DTextBox*)field_0x01c0[field_0x0269]->getPanePtr())->setWhite(JUtility::TColor(0x96, 0x96, 0x96, 0xff)); + ((J2DTextBox*)mYnSelTxtPane[field_0x0268]->getPanePtr())->setWhite(JUtility::TColor(0xff, 0xff, 0xff, 0xff)); + ((J2DTextBox*)mYnSelTxtPane[field_0x0269]->getPanePtr())->setWhite(JUtility::TColor(0x96, 0x96, 0x96, 0xff)); } + mSelIcon->setAlphaRate(0.0f); - field_0x00f0[0]->getPanePtr()->setAnimation(field_0x008c); - field_0x00f0[1]->getPanePtr()->setAnimation(field_0x008c); + mYnSelPane[0]->getPanePtr()->setAnimation(mYnSelBck3); + mYnSelPane[1]->getPanePtr()->setAnimation(mYnSelBck3); field_0x0100 = param_1; field_0x0104 = param_2; - field_0x008c->setFrame(field_0x0100); - field_0x00f0[0]->getPanePtr()->animationTransform(); - field_0x00f0[1]->getPanePtr()->animationTransform(); + mYnSelBck3->setFrame(field_0x0100); + mYnSelPane[0]->getPanePtr()->animationTransform(); + mYnSelPane[1]->getPanePtr()->animationTransform(); } bool dFile_select_c::yesnoMenuMoveAnm() { @@ -1647,32 +1964,72 @@ bool dFile_select_c::yesnoMenuMoveAnm() { field_0x0100 = field_0x0104; } } - field_0x008c->setFrame(field_0x0100); - field_0x00f0[0]->getPanePtr()->animationTransform(); - field_0x00f0[1]->getPanePtr()->animationTransform(); + + mYnSelBck3->setFrame(field_0x0100); + mYnSelPane[0]->getPanePtr()->animationTransform(); + mYnSelPane[1]->getPanePtr()->animationTransform(); rv = false; } else { - field_0x00f0[0]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); - field_0x00f0[1]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + mYnSelPane[0]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + mYnSelPane[1]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + if (field_0x0100 == 1149) { field_0x0108 = true; field_0x0281 = false; } else { field_0x0108 = false; if (field_0x0268 != 0xff) { - field_0x01a0[field_0x0268]->setAlpha(0); - field_0x01a8[field_0x0268]->setAlpha(0); - field_0x01b0[field_0x0268]->setAlpha(0); + mYnSelPane_m[field_0x0268]->setAlpha(0); + mYnSelPane_g[field_0x0268]->setAlpha(0); + mYnSelPane_gr[field_0x0268]->setAlpha(0); } } rv = true; } + return rv; } +#if PLATFORM_WII || PLATFORM_SHIELD +bool dFile_select_c::GCtoWiiTimeConvert() { + u8 err_num = 0; + SaveDataBuf* save_raw_p = mSaveData; + + for (int i = 0; i < 3; i++) { + dSv_save_c* save_p = (dSv_save_c*)save_raw_p; + + BOOL is_valid_checksum = mDoMemCdRWm_TestCheckSumGameData(save_raw_p); + if (is_valid_checksum) { + const char* playerName = save_p->getPlayer().getPlayerInfo().getPlayerName(); + if (*playerName != 0) { + OSTime iplDate = save_p->getPlayer().getPlayerStatusB().getDateIpl(); + save_p->getPlayer().getPlayerStatusB().setDateIpl(1.5 * iplDate); + + OSTime totalTime = save_p->getPlayer().getPlayerInfo().getTotalTime(); + save_p->getPlayer().getPlayerInfo().setTotalTime(1.5 * totalTime); + mDoMemCdRWm_SetCheckSumGameData((u8*)&mSaveData[0], i); + } + } else { + dComIfGs_setInitDataToCard((u8*)&mSaveData[0], i); + mDoMemCdRWm_SetCheckSumGameData((u8*)&mSaveData[0], i); + err_num++; + } + + save_raw_p++; + } + + if (err_num == 3) { + return false; + } + + return true; +} +#endif + bool dFile_select_c::yesnoSelectMoveAnm() { bool rv = false; bool bVar1 = true; + if (field_0x0269 != 0xff && field_0x00f8[field_0x0269] != YnSelStartFrameTbl[field_0x0269]) { if (field_0x00f8[field_0x0269] < YnSelStartFrameTbl[field_0x0269]) { field_0x00f8[field_0x0269] += 2; @@ -1685,13 +2042,14 @@ bool dFile_select_c::yesnoSelectMoveAnm() { field_0x00f8[field_0x0269] = YnSelStartFrameTbl[field_0x0269]; } } - field_0x0310->setFrame(field_0x00f8[field_0x0269]); - field_0x00f0[field_0x0269]->getPanePtr()->animationTransform(); + + mYnSelBck->setFrame(field_0x00f8[field_0x0269]); + mYnSelPane[field_0x0269]->getPanePtr()->animationTransform(); bVar1 = false; } + bool bVar2 = true; - if (field_0x0268 != 0xff && YnSelEndFrameTbl[field_0x0268] != field_0x00f8[field_0x0268]) - { + if (field_0x0268 != 0xff && field_0x00f8[field_0x0268] != YnSelEndFrameTbl[field_0x0268]) { if (field_0x00f8[field_0x0268] < YnSelEndFrameTbl[field_0x0268]) { field_0x00f8[field_0x0268] += 2; if (field_0x00f8[field_0x0268] > YnSelEndFrameTbl[field_0x0268]) { @@ -1703,117 +2061,117 @@ bool dFile_select_c::yesnoSelectMoveAnm() { field_0x00f8[field_0x0268] = YnSelEndFrameTbl[field_0x0268]; } } - field_0x0314->setFrame(field_0x00f8[field_0x0268]); - field_0x00f0[field_0x0268]->getPanePtr()->animationTransform(); + + mYnSelBck2->setFrame(field_0x00f8[field_0x0268]); + mYnSelPane[field_0x0268]->getPanePtr()->animationTransform(); bVar2 = false; } + if (bVar1 == true && bVar2 == true) { if (field_0x0269 != 0xff) { - field_0x00f0[field_0x0269]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + mYnSelPane[field_0x0269]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); } if (field_0x0268 != 0xff) { - field_0x00f0[field_0x0268]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + mYnSelPane[field_0x0268]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); } rv = true; } + return rv; } void dFile_select_c::yesnoCursorShow() { - if (field_0x0268 == 0xff) { - return; + if (field_0x0268 != 0xff) { + ((J2DTextBox*)mYnSelTxtPane[field_0x0268]->getPanePtr())->setWhite(JUtility::TColor(0xff, 0xff, 0xff, 0xff)); + mYnSelPane_m[field_0x0268]->setAlpha(0xff); + mYnSelPane_g[field_0x0268]->setAlpha(0xff); + mYnSelPane_gr[field_0x0268]->setAlpha(0xff); + + Vec pos = mYnSelPane[field_0x0268]->getGlobalVtxCenter(0, 0); + mSelIcon->setPos(pos.x, pos.y, mYnSelPane[field_0x0268]->getPanePtr(), true); + mSelIcon->setAlphaRate(1.0f); + mSelIcon->setParam(0.96f, 0.84f, 0.06f, 0.5f, 0.5f); } - ((J2DTextBox*)field_0x01c0[field_0x0268]->getPanePtr())->setWhite(JUtility::TColor(0xff, 0xff, 0xff, 0xff)); - field_0x01a0[field_0x0268]->setAlpha(0xff); - field_0x01a8[field_0x0268]->setAlpha(0xff); - field_0x01b0[field_0x0268]->setAlpha(0xff); - Vec local_24 = field_0x00f0[field_0x0268]->getGlobalVtxCenter(0, 0); - mSelIcon->setPos(local_24.x, local_24.y, field_0x00f0[field_0x0268]->getPanePtr(), true); - mSelIcon->setAlphaRate(1.0f); - mSelIcon->setParam(0.96f, 0.84f, 0.06f, 0.5f, 0.5f); } void dFile_select_c::YesNoSelect() { - mStick->checkTrigger(); - if (mDoCPd_c::getTrigA(0) != 0) { + stick->checkTrigger(); + + if (mDoCPd_c::getTrigA(PAD_1)) { yesNoSelectStart(); - return; - } - - if (mDoCPd_c::getTrigB(0) != 0) { + } else if (mDoCPd_c::getTrigB(PAD_1)) { yesnoCancelAnmSet(); - return; - } - - if (mStick->checkRightTrigger()) { + } else if (stick->checkRightTrigger()) { if (field_0x0268 != 0) { - mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, 0, 0, 0); + mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0); field_0x0269 = field_0x0268; field_0x0268 = 0; yesnoSelectAnmSet(); - field_0x026f = 28; + mDataSelProc = DATASELPROC_YES_NO_CURSOR_MOVE_ANM; } - } else if (mStick->checkLeftTrigger() && field_0x0268 != 1) { - mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, 0, 0, 0); + } else if (stick->checkLeftTrigger() && field_0x0268 != 1) { + mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0); field_0x0269 = field_0x0268; field_0x0268 = 1; yesnoSelectAnmSet(); - field_0x026f = 28; + mDataSelProc = DATASELPROC_YES_NO_CURSOR_MOVE_ANM; } } void dFile_select_c::yesNoSelectStart() { if (field_0x0268 != 0) { - mDoAud_seStart(Z2SE_SY_CURSOR_OK, 0, 0, 0); + mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0); field_0x03b1 = 1; - switch(field_0x026e) { + + switch (mCommand) { case 1: headerTxtSet(74, 0, 0); mpFileWarning->openInit(); - field_0x014c[mSelectNum]->getPanePtr()->scale(1.0f, 1.0f); - field_0x014c[mSelectNum]->alphaAnimeStart(0); - field_0x014c[mSelectNum]->setAlpha(0); + mDeleteEfPane[mSelectNum]->getPanePtr()->scale(1.0f, 1.0f); + mDeleteEfPane[mSelectNum]->alphaAnimeStart(0); + mDeleteEfPane[mSelectNum]->setAlpha(0); menuMoveAnmInitSet(809, 799); yesnoMenuMoveAnmInitSet(1149, 1139); mSelIcon->setAlphaRate(0.0f); - field_0x01f4 = 0; - field_0x0204 = 0; + mDtEffBtkFrame = 0; + mCpDtEffBrkFrame = 0; field_0x0208 = 1; break; case 2: headerTxtSet(0x4a, 0, 0); mpFileWarning->openInit(); - field_0x014c[mSelectNum]->getPanePtr()->scale(1.0f, 1.0f); - field_0x014c[mSelectNum]->alphaAnimeStart(0); - field_0x014c[mSelectNum]->setAlpha(0); + mDeleteEfPane[mSelectNum]->getPanePtr()->scale(1.0f, 1.0f); + mDeleteEfPane[mSelectNum]->alphaAnimeStart(0); + mDeleteEfPane[mSelectNum]->setAlpha(0); yesnoMenuMoveAnmInitSet(1149, 1139); mSelIcon->setAlphaRate(0.0f); - field_0x01f4 = 0; - field_0x0204 = 0; + mDtEffBtkFrame = 0; + mCpDtEffBrkFrame = 0; field_0x0208 = 1; break; case 0: headerTxtSet(0x46, 0, 0); mpFileWarning->openInit(); - field_0x0158[mSelectNum]->getPanePtr()->scale(1.0f, 1.0f); - field_0x0158[mSelectNum]->alphaAnimeStart(0); - field_0x0158[mSelectNum]->setAlpha(0); - field_0x0158[field_0x026d]->getPanePtr()->scale(1.0f, 1.0f); - field_0x0158[field_0x026d]->alphaAnimeStart(0); - field_0x0158[field_0x026d]->setAlpha(0); + mCopyEfPane[mSelectNum]->getPanePtr()->scale(1.0f, 1.0f); + mCopyEfPane[mSelectNum]->alphaAnimeStart(0); + mCopyEfPane[mSelectNum]->setAlpha(0); + mCopyEfPane[mCpDataToNum]->getPanePtr()->scale(1.0f, 1.0f); + mCopyEfPane[mCpDataToNum]->alphaAnimeStart(0); + mCopyEfPane[mCpDataToNum]->setAlpha(0); yesnoMenuMoveAnmInitSet(1149, 1139); mSelIcon->setAlphaRate(0.0f); mSelIcon2->setAlphaRate(0.0f); - selectWakuAlpahAnmInit(field_0x026d, 0, 0xff, g_fsHIO.field_0x0008); + selectWakuAlpahAnmInit(mCpDataToNum, 0, 0xff, g_fsHIO.select_box_appear_frames); copySelMoveAnmInitSet(0xd29, 0xd1f); - field_0x01fc = 0; - field_0x0204 = 0; + mCpEffBtkFrame = 0; + mCpDtEffBrkFrame = 0; field_0x0209 = 1; break; } + modoruTxtDispAnmInit(0); ketteiTxtDispAnmInit(0); - field_0x026f = 29; + mDataSelProc = DATASELPROC_CMD_EXEC_PANE_MOVE0; } else { yesnoCancelAnmSet(); } @@ -1821,25 +2179,27 @@ void dFile_select_c::yesNoSelectStart() { void dFile_select_c::yesnoSelectAnmSet() { if (field_0x0269 != 0xff) { - yesnoWakuAlpahAnmInit(field_0x0269, 0xff, 0, g_fsHIO.field_0x0008); - field_0x00f0[field_0x0269]->getPanePtr()->setAnimation(field_0x0310); + yesnoWakuAlpahAnmInit(field_0x0269, 0xff, 0, g_fsHIO.select_box_appear_frames); + mYnSelPane[field_0x0269]->getPanePtr()->setAnimation(mYnSelBck); field_0x00f8[field_0x0269] = YnSelEndFrameTbl[field_0x0269]; - field_0x0310->setFrame(field_0x00f8[field_0x0269]); - field_0x00f0[field_0x0269]->getPanePtr()->animationTransform(); + mYnSelBck->setFrame(field_0x00f8[field_0x0269]); + mYnSelPane[field_0x0269]->getPanePtr()->animationTransform(); mSelIcon->setAlphaRate(0.0f); } + if (field_0x0268 != 0xff) { - field_0x00f0[field_0x0268]->getPanePtr()->setAnimation(field_0x0314); + mYnSelPane[field_0x0268]->getPanePtr()->setAnimation(mYnSelBck2); field_0x00f8[field_0x0268] = YnSelStartFrameTbl[field_0x0268]; - field_0x0314->setFrame(field_0x00f8[field_0x0268]); - field_0x00f0[field_0x0268]->getPanePtr()->animationTransform(); + mYnSelBck2->setFrame(field_0x00f8[field_0x0268]); + mYnSelPane[field_0x0268]->getPanePtr()->animationTransform(); } } void dFile_select_c::yesnoCancelAnmSet() { - mDoAud_seStart(Z2SE_SY_CURSOR_CANCEL, 0, 0, 0); + mDoAud_seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0); mSelIcon->setAlphaRate(0.0f); - switch (field_0x026e) { + + switch (mCommand) { case 1: headerTxtSet(msgTbl[mSelectNum], 1, 0); break; @@ -1851,390 +2211,718 @@ void dFile_select_c::yesnoCancelAnmSet() { headerTxtSet(68, 0, 0); break; } + yesnoMenuMoveAnmInitSet(1149, 1139); - field_0x026f = 27; + mDataSelProc = DATASELPROC_YES_NO_CANCEL_MOVE; } void dFile_select_c::YesNoCancelMove() { - bool txtChanged = headerTxtChangeAnm(); - bool moveAnimated = yesnoMenuMoveAnm(); - bool selectMoveAnimated; - switch (field_0x026e) { + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isYnMenuMove = yesnoMenuMoveAnm(); + bool isSelDataMove; + + switch (mCommand) { case 1: - selectMoveAnimated = true; + isSelDataMove = true; break; case 2: - selectMoveAnimated = selectDataMoveAnm(); + isSelDataMove = selectDataMoveAnm(); break; case 0: - selectMoveAnimated = true; + isSelDataMove = true; break; } - if (txtChanged == true && moveAnimated == true && selectMoveAnimated == true) { - switch (field_0x026e) { + + if (isHeaderTxtChange == true && isYnMenuMove == true && isSelDataMove == true) { + switch (mCommand) { case 1: if (mSelectMenuNum != 0xff) { Vec vtxCenter; - vtxCenter = field_0x0340[mSelectMenuNum]->getGlobalVtxCenter(false, 0); - mSelIcon->setPos(vtxCenter.x, vtxCenter.y, field_0x0340[mSelectMenuNum]->getPanePtr(), - true); + vtxCenter = m3mSelPane[mSelectMenuNum]->getGlobalVtxCenter(false, 0); + mSelIcon->setPos(vtxCenter.x, vtxCenter.y, + m3mSelPane[mSelectMenuNum]->getPanePtr(), true); mSelIcon->setAlphaRate(1.0f); mSelIcon->setParam(0.96f, 0.84f, 0.06f, 0.5f, 0.5f); + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = mSelectMenuNum; + #endif } - field_0x026f = 8; + mDataSelProc = DATASELPROC_MENU_SELECT; break; case 2: selFileCursorShow(); - field_0x026f = 3; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = mSelectNum; + #endif + + mDataSelProc = DATASELPROC_DATA_SELECT; break; case 0: mSelIcon2->setAlphaRate(1.0f); - field_0x026f = 22; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = field_0x026b; + #endif + + mDataSelProc = DATASELPROC_COPY_DATA_TO_SELECT; break; } } } void dFile_select_c::yesNoCursorMoveAnm() { - bool moveAnimated = yesnoSelectMoveAnm(); - bool wakuAnimated = yesnoWakuAlpahAnm(field_0x0269); - if (moveAnimated == true && wakuAnimated == true) { + bool isYnSelMove = yesnoSelectMoveAnm(); + bool isYnWakuAlpha = yesnoWakuAlpahAnm(field_0x0269); + if (isYnSelMove == true && isYnWakuAlpha == true) { yesnoCursorShow(); - field_0x026f = 26; + mDataSelProc = DATASELPROC_YES_NO_SELECT; } } void dFile_select_c::CmdExecPaneMove0() { - int txtChanged = headerTxtChangeAnm(); - int unaff_r29; - int unaff_r28; - int unaff_r30; - int unaff_r27; - int nameMoved; - switch (field_0x026e) { + int isHeaderTxtChange = headerTxtChangeAnm(); + int isEffAlphaAnm; + int isYnMoveAnm; + int isMenuMove; + int isSelWakuAlpha; + int isNameMove; + + switch (mCommand) { case 1: - unaff_r29 = field_0x014c[mSelectNum]->alphaAnime(g_fsHIO.field_0x0009, 0, 0xff, 0); - unaff_r28 = yesnoMenuMoveAnm(); - unaff_r30 = menuMoveAnm(); - unaff_r27 = true; - nameMoved = true; + isEffAlphaAnm = mDeleteEfPane[mSelectNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0, 0xff, 0); + isYnMoveAnm = yesnoMenuMoveAnm(); + isMenuMove = menuMoveAnm(); + isSelWakuAlpha = true; + isNameMove = true; break; case 2: - unaff_r29 = field_0x014c[mSelectNum]->alphaAnime(g_fsHIO.field_0x0009, 0, 0xff, 0); - unaff_r28 = true; - unaff_r30 = yesnoMenuMoveAnm(); - unaff_r27 = true; - nameMoved = true; + isEffAlphaAnm = mDeleteEfPane[mSelectNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0, 0xff, 0); + isYnMoveAnm = true; + isMenuMove = yesnoMenuMoveAnm(); + isSelWakuAlpha = true; + isNameMove = true; break; case 0: - unaff_r29 = field_0x0158[field_0x026d]->alphaAnime(g_fsHIO.field_0x0009, 0, 0xff, 0); - unaff_r28 = field_0x0158[mSelectNum]->alphaAnime(g_fsHIO.field_0x0009, 0, 0xff, 0); + isEffAlphaAnm = mCopyEfPane[mCpDataToNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0, 0xff, 0); + isYnMoveAnm = mCopyEfPane[mSelectNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0, 0xff, 0); if (field_0x0108) { - unaff_r30 = yesnoMenuMoveAnm(); + isMenuMove = yesnoMenuMoveAnm(); } else { - unaff_r30 = true; + isMenuMove = true; } - unaff_r27 = selectWakuAlpahAnm(field_0x026d); - nameMoved = nameMoveAnm(); + isSelWakuAlpha = selectWakuAlpahAnm(mCpDataToNum); + isNameMove = nameMoveAnm(); break; } - int modoruTxt = modoruTxtDispAnm(); - int kettaiTxt = ketteiTxtDispAnm(); - int warningStatus = mpFileWarning->getStatus() != 0; - if (txtChanged == true && unaff_r29 == true && unaff_r28 == true && unaff_r30 == true && - unaff_r27 == true && nameMoved == true && modoruTxt == true && kettaiTxt == true && warningStatus == true) + + BOOL isModoruTxtDisp = modoruTxtDispAnm(); + BOOL isKetteiTxtDisp = ketteiTxtDispAnm(); + BOOL warningStatus = mpFileWarning->getStatus(); + if (isHeaderTxtChange == true && isEffAlphaAnm == true && isYnMoveAnm == true && isMenuMove == true && + isSelWakuAlpha == true && isNameMove == true && isModoruTxtDisp == true && isKetteiTxtDisp == true && + warningStatus == true) { - field_0x026f = 30; + mDataSelProc = DATASELPROC_COMMAND_EXEC; } } void dFile_select_c::CommandExec() { - switch (field_0x026e) { + u8* srcData; + u8* dstData; + + switch (mCommand) { case 1: case 2: - mDoAud_seStartLevel(Z2SE_SY_FILE_DELETE_LEVEL, 0, 0, 0); - dComIfGs_setInitDataToCard((u8*)mSave, mSelectNum); - mDoMemCdRWm_SetCheckSumGameData((u8*)mSave, mSelectNum); + mDoAud_seStartLevel(Z2SE_SY_FILE_DELETE_LEVEL, NULL, 0, 0); + dComIfGs_setInitDataToCard((u8*)mSaveData, mSelectNum); + mDoMemCdRWm_SetCheckSumGameData((u8*)mSaveData, mSelectNum); dataSave(); - field_0x026f = 31; + mDataSelProc = DATASELPROC_DATA_ERASE_WAIT; break; case 0: - mDoAud_seStartLevel(Z2SE_SY_FILE_COPY_LEVEL, 0, 0, 0); - memcpy(&mSave[field_0x026d], &mSave[field_0x026a], sizeof(SaveData)); - mDoMemCdRWm_SetCheckSumGameData((u8*)mSave, field_0x026d); - mDoMemCd_setCopyToPos(field_0x026d); + mDoAud_seStartLevel(Z2SE_SY_FILE_COPY_LEVEL, NULL, 0, 0); + + srcData = (u8*)&mSaveData[mCpDataNum]; + dstData = (u8*)&mSaveData[mCpDataToNum]; + memcpy(dstData, srcData, sizeof(SaveDataBuf)); + mDoMemCdRWm_SetCheckSumGameData((u8*)mSaveData, mCpDataToNum); + mDoMemCd_setCopyToPos(mCpDataToNum); dataSave(); - field_0x026f = 33; + mDataSelProc = DATASELPROC_DATA_COPY_WAIT; break; } - field_0x03ac = g_fsHIO.field_0x000c; + + mWaitTimer = g_fsHIO.card_wait_frames; } void dFile_select_c::DataEraseWait() { - if (field_0x03ac != 0) { - field_0x03ac--; + if (mWaitTimer != 0) { + mWaitTimer--; } - mDoAud_seStartLevel(Z2SE_SY_FILE_DELETE_LEVEL, 0, 0, 0); + mDoAud_seStartLevel(Z2SE_SY_FILE_DELETE_LEVEL, NULL, 0, 0); + + #if PLATFORM_GCN field_0x03b4 = mDoMemCd_SaveSync(); + #else + field_0x03b4 = mDoMemCd_SaveSyncNAND(); + #endif + if (field_0x03b4 != 0) { - field_0x026f = 32; + mDataSelProc = DATASELPROC_DATA_ERASE_WAIT2; } } void dFile_select_c::DataEraseWait2() { - if (field_0x03ac != 0) { - mDoAud_seStartLevel(Z2SE_SY_FILE_DELETE_LEVEL, 0, 0, 0); - field_0x03ac--; + if (mWaitTimer != 0) { + mDoAud_seStartLevel(Z2SE_SY_FILE_DELETE_LEVEL, NULL, 0, 0); + mWaitTimer--; } else if (field_0x03b4 == 2) { - mDoAud_seStart(Z2SE_SY_FILE_ERROR, 0, 0, 0); + mDoAud_seStart(Z2SE_SY_FILE_ERROR, NULL, 0, 0); headerTxtSet(76, 0, 0); mpFileWarning->closeInit(); modoruTxtDispAnmInit(1); ketteiTxtDispAnmInit(1); - field_0x014c[mSelectNum]->alphaAnimeStart(0); - field_0x026f = 39; + mDeleteEfPane[mSelectNum]->alphaAnimeStart(0); + mDataSelProc = DATASELPROC_ERROR_MSG_PANE_MOVE; } else if (field_0x03b4 == 1) { - mDoAud_seStart(Z2SE_SY_FILE_DELETE_OK, 0, 0, 0); + mDoAud_seStart(Z2SE_SY_FILE_DELETE_OK, NULL, 0, 0); field_0x03b1 = 0; - field_0x014c[mSelectNum]->alphaAnimeStart(0); - field_0x022c[mSelectNum]->alphaAnimeStart(0); - field_0x0220[mSelectNum]->alphaAnimeStart(0); - field_0x026f = 37; + mDeleteEfPane[mSelectNum]->alphaAnimeStart(0); + mFileInfoNoDatBasePane[mSelectNum]->alphaAnimeStart(0); + mFileInfoDatBasePane[mSelectNum]->alphaAnimeStart(0); + mDataSelProc = DATASELPROC_ERASE_PANE_MOVE_OK; } } void dFile_select_c::ErasePaneMoveOk() { - int iVar1 = field_0x014c[mSelectNum]->alphaAnime(g_fsHIO.field_0x0009, 0xff, 0, 0); + int iVar1 = mDeleteEfPane[mSelectNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0xff, 0, 0); + int iVar2; - if (field_0x025b[mSelectNum] != 0) { - iVar2 = field_0x022c[mSelectNum]->alphaAnime(g_fsHIO.field_0x0009, 0xff, 0, 0); + if (mIsNoData[mSelectNum]) { + iVar2 = mFileInfoNoDatBasePane[mSelectNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0xff, 0, 0); } else { - iVar2 = field_0x0220[mSelectNum]->alphaAnime(g_fsHIO.field_0x0009, 0xff, 0, 0); + iVar2 = mFileInfoDatBasePane[mSelectNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0xff, 0, 0); } + if (iVar1 == 1 && iVar2 == 1) { field_0x0208 = 0; setSaveData(); makeRecInfo(mSelectNum); headerTxtSet(0x4b, 0, 0); mpFileWarning->closeInit(); - field_0x022c[mSelectNum]->alphaAnimeStart(0); - selectWakuAlpahAnmInit(mSelectNum, 0, 0xff, g_fsHIO.field_0x0007); - field_0x026f = 38; + mFileInfoNoDatBasePane[mSelectNum]->alphaAnimeStart(0); + selectWakuAlpahAnmInit(mSelectNum, 0, 0xff, g_fsHIO.char_switch_frames); + mDataSelProc = DATASELPROC_ERASE_PANE_MOVE_OK2; } } void dFile_select_c::ErasePaneMoveOk2() { - bool txtChanged = headerTxtChangeAnm(); - bool iVar2 = - field_0x022c[mSelectNum]->alphaAnime( - g_fsHIO.field_0x0007, 0, 0xff, 0); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool iVar2 = mFileInfoNoDatBasePane[mSelectNum]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xff, 0); bool wakuAnm = selectWakuAlpahAnm(mSelectNum); - bool warningStatus = mpFileWarning->getStatus(); - if (txtChanged == true && iVar2 == true && wakuAnm == true && warningStatus == true) { - field_0x03ac = g_fsHIO.field_0x000a; + u32 warningStatus = mpFileWarning->getStatus(); + + if (isHeaderTxtChange == true && iVar2 == true && wakuAnm == true && warningStatus == true) { + mWaitTimer = g_fsHIO.field_0x000a; mSelectMenuNum = 0; - field_0x026f = 40; + mDataSelProc = DATASELPROC_ERASE_END_BACK_SELECT_WAIT; } } void dFile_select_c::eraseEndBackSelectWait() { - if (field_0x03ac != 0) { - field_0x03ac--; - } else if (field_0x03ac == 0) { + if (mWaitTimer != 0) { + mWaitTimer--; + } else if (mWaitTimer == 0) { selectDataMoveAnmInitSet(SelOpenEndFrameTbl[mSelectNum], SelOpenStartFrameTbl[mSelectNum]); headerTxtSet(67, 1, 0); ketteiTxtDispAnmInit(1); - field_0x026f = 41; + mDataSelProc = DATASELPROC_ERASE_END_BACK_SELECT; } } void dFile_select_c::eraseEndBackSelect() { - bool txtChanged = headerTxtChangeAnm(); - bool dataMoved = selectDataMoveAnm(); - bool ketteiTxtAnm = ketteiTxtDispAnm(); - if (txtChanged == true && dataMoved == true && ketteiTxtAnm == true) { + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isSelDataMove = selectDataMoveAnm(); + bool isKetteiTxtDisp = ketteiTxtDispAnm(); + + if (isHeaderTxtChange == true && isSelDataMove == true && isKetteiTxtDisp == true) { selFileCursorShow(); mpFileSelect3d->drawOff(); - field_0x026f = 3; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = mSelectNum; + #endif + + mDataSelProc = DATASELPROC_DATA_SELECT; } } void dFile_select_c::DataCopyWait() { - if (field_0x03ac != 0) { - field_0x03ac--; + if (mWaitTimer != 0) { + mWaitTimer--; } - mDoAud_seStartLevel(Z2SE_SY_FILE_COPY_LEVEL, 0, 0, 0); + + mDoAud_seStartLevel(Z2SE_SY_FILE_COPY_LEVEL, NULL, 0, 0); + + #if PLATFORM_GCN field_0x03b4 = mDoMemCd_SaveSync(); + #else + field_0x03b4 = mDoMemCd_SaveSyncNAND(); + #endif + if (field_0x03b4 != 0) { - field_0x026f = 34; + mDataSelProc = DATASELPROC_DATA_COPY_WAIT2; } } void dFile_select_c::DataCopyWait2() { - if (field_0x03ac != 0) { - mDoAud_seStartLevel(Z2SE_SY_FILE_COPY_LEVEL, 0, 0, 0); - field_0x03ac--; + if (mWaitTimer != 0) { + mDoAud_seStartLevel(Z2SE_SY_FILE_COPY_LEVEL, NULL, 0, 0); + mWaitTimer--; } else { if (field_0x03b4 == 2) { - mDoAud_seStart(Z2SE_SY_FILE_ERROR, 0, 0, 0); + mDoAud_seStart(Z2SE_SY_FILE_ERROR, NULL, 0, 0); headerTxtSet(0x48, 0, 0); mpFileWarning->closeInit(); modoruTxtDispAnmInit(1); ketteiTxtDispAnmInit(1); - field_0x026f = 39; + mDataSelProc = DATASELPROC_ERROR_MSG_PANE_MOVE; } else if (field_0x03b4 == 1) { - mDoAud_seStart(Z2SE_SY_FILE_COPY_OK, 0, 0, 0); + mDoAud_seStart(Z2SE_SY_FILE_COPY_OK, NULL, 0, 0); field_0x03b1 = 0; - field_0x0158[mSelectNum]->alphaAnimeStart(0); - field_0x0158[field_0x026d]->alphaAnimeStart(0); - field_0x022c[field_0x026d]->alphaAnimeStart(0); - field_0x0220[field_0x026d]->alphaAnimeStart(0); - field_0x026f = 35; + mCopyEfPane[mSelectNum]->alphaAnimeStart(0); + mCopyEfPane[mCpDataToNum]->alphaAnimeStart(0); + mFileInfoNoDatBasePane[mCpDataToNum]->alphaAnimeStart(0); + mFileInfoDatBasePane[mCpDataToNum]->alphaAnimeStart(0); + mDataSelProc = DATASELPROC_COPY_PANE_MOVE_OK; } - } } void dFile_select_c::copyPaneMoveOk() { - bool iVar1 = field_0x0158[field_0x026d]->alphaAnime(g_fsHIO.field_0x0009, 0xff, 0, 0); - bool iVar2 = field_0x0158[mSelectNum]->alphaAnime(g_fsHIO.field_0x0009, 0xff, 0, 0); + bool iVar1 = mCopyEfPane[mCpDataToNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0xff, 0, 0); + bool iVar2 = mCopyEfPane[mSelectNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0xff, 0, 0); + bool iVar3; - if (field_0x025b[field_0x026d] != 0 || mDataNew[field_0x026d] != 0) { - iVar3 = field_0x022c[field_0x026d]->alphaAnime(g_fsHIO.field_0x0009, 0xff, 0, 0); + if (mIsNoData[mCpDataToNum] || mIsDataNew[mCpDataToNum] != 0) { + iVar3 = mFileInfoNoDatBasePane[mCpDataToNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0xff, 0, 0); } else { - iVar3 = field_0x0220[field_0x026d]->alphaAnime(g_fsHIO.field_0x0009, 0xff, 0, 0); + iVar3 = mFileInfoDatBasePane[mCpDataToNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0xff, 0, 0); } + if (iVar1 == true && iVar2 == true && iVar3 == true) { field_0x0209 = 0; headerTxtSet(71, 0, 0); mpFileWarning->closeInit(); setSaveData(); - field_0x022c[field_0x026d]->alphaAnimeStart(0); - field_0x0220[field_0x026d]->alphaAnimeStart(0); - field_0x026f = 36; + mFileInfoNoDatBasePane[mCpDataToNum]->alphaAnimeStart(0); + mFileInfoDatBasePane[mCpDataToNum]->alphaAnimeStart(0); + mDataSelProc = DATASELPROC_COPY_PANE_MOVE_OK2; } } void dFile_select_c::copyPaneMoveOk2() { - bool iVar1 = headerTxtChangeAnm(); + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool iVar2; - if (field_0x025b[field_0x026d] != 0 || mDataNew[field_0x026d] != 0) { - iVar2 = field_0x022c[field_0x026d]->alphaAnime(g_fsHIO.field_0x0007, 0, 0xff, 0); + if (mIsNoData[mCpDataToNum] || mIsDataNew[mCpDataToNum] != 0) { + iVar2 = mFileInfoNoDatBasePane[mCpDataToNum]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xff, 0); } else { - iVar2 = field_0x0220[field_0x026d]->alphaAnime(g_fsHIO.field_0x0007, 0, 0xff, 0); + iVar2 = mFileInfoDatBasePane[mCpDataToNum]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xff, 0); } - bool iVar3 = mpFileWarning->getStatus(); - if (iVar1 == true && iVar2 == true && iVar3 == true) { - field_0x03ac = g_fsHIO.field_0x000a; - field_0x026f = 42; + + u32 iVar3 = mpFileWarning->getStatus(); + if (isHeaderTxtChange == true && iVar2 == true && iVar3 == true) { + mWaitTimer = g_fsHIO.field_0x000a; + mDataSelProc = DATASELPROC_BACK_DAT_SEL_WAIT; } } void dFile_select_c::ErrorMsgPaneMove() { - int txtChanged = headerTxtChangeAnm(); + int isHeaderTxtChange = headerTxtChangeAnm(); int unaff_r30; int unaff_r29; - switch (field_0x026e) { + + switch (mCommand) { case 1: case 2: - unaff_r30 = field_0x014c[mSelectNum]->alphaAnime(g_fsHIO.field_0x0009, 0xff, 0, 0); + unaff_r30 = mDeleteEfPane[mSelectNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0xff, 0, 0); unaff_r29 = 1; break; case 0: - unaff_r30 = field_0x0158[field_0x026d]->alphaAnime(g_fsHIO.field_0x0009, 0xff, 0, 0); - unaff_r29 = field_0x0158[mSelectNum]->alphaAnime(g_fsHIO.field_0x0009, 0xff, 0, 0); + unaff_r30 = mCopyEfPane[mCpDataToNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0xff, 0, 0); + unaff_r29 = mCopyEfPane[mSelectNum]->alphaAnime(g_fsHIO.copy_erase_frames, 0xff, 0, 0); break; } - int modoruTxtAnm = modoruTxtDispAnm(); - int ketteiTxtAnm = ketteiTxtDispAnm(); - int warningStatus = mpFileWarning->getStatus() != 0; - if (txtChanged == 1 && unaff_r30 == 1 && unaff_r29 == 1 && modoruTxtAnm == 1 && ketteiTxtAnm == 1 && - warningStatus == 1) + + int isModoruTxtDisp = modoruTxtDispAnm(); + int isKetteiTxtDisp = ketteiTxtDispAnm(); + BOOL warningStatus = mpFileWarning->getStatus(); + + if (isHeaderTxtChange == true && unaff_r30 == true && unaff_r29 == true && isModoruTxtDisp == true && + isKetteiTxtDisp == true && warningStatus == true) { field_0x0208 = 0; field_0x0209 = 0; field_0x03b1 = 0; - field_0x03ac = g_fsHIO.field_0x000a; - field_0x026f = 43; + mWaitTimer = g_fsHIO.field_0x000a; + mDataSelProc = DATASELPROC_BACK_DAT_SEL_WAIT2; } } void dFile_select_c::backDatSelPaneMove() { - int headerTxtAnm = headerTxtChangeAnm(); - int menuMoved = menuMoveAnm(); - int selectDataMoved = selectDataMoveAnm(); - int wakuAlpha1 = selectWakuAlpahAnm(mSelectNum); - int wakuAlpha2 = selectWakuAlpahAnm(field_0x026d); - int modoruTxtAnm = modoruTxtDispAnm(); - int ketteiTxtAnm = ketteiTxtDispAnm(); - if (headerTxtAnm == 1 && menuMoved == 1 && selectDataMoved == 1 && wakuAlpha1 == 1 && - wakuAlpha2 == 1 && modoruTxtAnm == 1 && ketteiTxtAnm == 1) + int isHeaderTxtChange = headerTxtChangeAnm(); + int isMenuMove = menuMoveAnm(); + int isSelDataMove = selectDataMoveAnm(); + int isWaku1Alpha = selectWakuAlpahAnm(mSelectNum); + int isWaku2Alpha = selectWakuAlpahAnm(mCpDataToNum); + int isModoruTxtAnm = modoruTxtDispAnm(); + int isKetteiTxtDisp = ketteiTxtDispAnm(); + + if (isHeaderTxtChange == true && isMenuMove == true && isSelDataMove == true && isWaku1Alpha == true && + isWaku2Alpha == true && isModoruTxtAnm == true && isKetteiTxtDisp == true) { if (mSelectMenuNum != 0xff) { - field_0x0340[mSelectMenuNum]->getPanePtr()->setAnimation(field_0x0328); - field_0x0328->setFrame(MenuSelStartFrameTbl[mSelectMenuNum]); - field_0x0340[mSelectMenuNum]->getPanePtr()->animationTransform(); - field_0x0340[mSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + m3mSelPane[mSelectMenuNum]->getPanePtr()->setAnimation(m3mBck); + m3mBck->setFrame(MenuSelStartFrameTbl[mSelectMenuNum]); + m3mSelPane[mSelectMenuNum]->getPanePtr()->animationTransform(); + m3mSelPane[mSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); menuCursorShow(); } - field_0x026f = 8; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = mSelectMenuNum; + #endif + + mDataSelProc = DATASELPROC_MENU_SELECT; } } void dFile_select_c::backDatSelWait() { - if (field_0x03ac != 0) { - field_0x03ac--; - } else if (field_0x03ac == 0) { + if (mWaitTimer != 0) { + mWaitTimer--; + } else if (mWaitTimer == 0) { headerTxtSet(msgTbl[mSelectNum], 1, 0); - selectWakuAlpahAnmInit(field_0x026d, 0xff, 0, g_fsHIO.field_0x0008); - selectWakuAlpahAnmInit(mSelectNum, 0xff, 0, g_fsHIO.field_0x0008); + selectWakuAlpahAnmInit(mCpDataToNum, 0xff, 0, g_fsHIO.select_box_appear_frames); + selectWakuAlpahAnmInit(mSelectNum, 0xff, 0, g_fsHIO.select_box_appear_frames); menuMoveAnmInitSet(799, 809); selectDataMoveAnmInitSet(SelOpenStartFrameTbl[mSelectNum], SelOpenEndFrameTbl[mSelectNum]); modoruTxtDispAnmInit(1); ketteiTxtDispAnmInit(1); - field_0x026f = 44; + mDataSelProc = DATASELPROC_BACK_DAT_SEL_PANE_MOVE; } } void dFile_select_c::backDatSelWait2() { - if (field_0x03ac != 0) { - field_0x03ac--; + if (mWaitTimer != 0) { + mWaitTimer--; } - if (cAPICPad_ANY_BUTTON(0) != 0 || field_0x03ac == 0) { - field_0x026f = 0; - field_0x0271 = 0; + + if (cAPICPad_ANY_BUTTON(0) != 0 || mWaitTimer == 0) { + mDataSelProc = DATASELPROC_MEMCARD_CHECK_MAIN; + mCardCheckProc = MEMCARDCHECKPROC_STAT_CHECK; } } -void dFile_select_c::nextModeWait() { - /* empty function */ +void dFile_select_c::nextModeWait() {} + +#if PLATFORM_WII || PLATFORM_SHIELD +void dFile_select_c::dataSelectInCopy() { + bool isHeaderTxtChange = headerTxtChangeAnm(); + bool isSelectDataBaseMove = selectDataBaseMoveAnm(); + + bool isErrorMove = true; + if (field_0x014a) { + isErrorMove = errorMoveAnm(); + } + + bool isYnMenuMove = true; + if (field_0x0108) { + isYnMenuMove = yesnoMenuMoveAnm(); + } + + if (isHeaderTxtChange == true && isSelectDataBaseMove == true && isErrorMove == true && isYnMenuMove == true) { + for (int i = 0; i < 3; i++) { + mSelFilePanes[i]->reinit(); + } + + headerTxtSet(0xECC, 0, 0); + mpFileWarning->setText(0xECD); + mpFileWarning->openInit(); + + for (int i = 0; i < 3; i++) { + mCopyEfPane[i]->getPanePtr()->scale(1.0f, 1.0f); + mCopyEfPane[i]->alphaAnimeStart(0); + mCopyEfPane[i]->setAlpha(0); + selectWakuAlpahAnmInit(i, 0, 0xFF, g_fsHIO.select_box_appear_frames); + } + + ketteiTxtDispAnmInit(0); + + mCpEffBtkFrame = 0; + mCpDtEffBrkFrame = 0; + field_0x0209 = 1; + mDataSelProc = DATASELPROC_CARD_TO_NAND_DATA_COPY; + } } +void dFile_select_c::cardToNandDataCopy() { + BOOL isHeaderTxtChange = headerTxtChangeAnm(); + BOOL temp_r29 = mCopyEfPane[0]->alphaAnime(g_fsHIO.copy_erase_frames, 0, 0xFF, 0); + BOOL temp_r28 = mCopyEfPane[1]->alphaAnime(g_fsHIO.copy_erase_frames, 0, 0xFF, 0); + BOOL temp_r27 = mCopyEfPane[2]->alphaAnime(g_fsHIO.copy_erase_frames, 0, 0xFF, 0); + BOOL temp_r26 = selectWakuAlpahAnm(0); + BOOL temp_r25 = selectWakuAlpahAnm(1); + BOOL temp_r24 = selectWakuAlpahAnm(2); + BOOL isKetteiTxtDisp = ketteiTxtDispAnm(); + + if (isHeaderTxtChange == TRUE && temp_r29 == TRUE && temp_r28 == TRUE && temp_r27 == TRUE && temp_r26 == TRUE && temp_r25 == TRUE && temp_r24 == TRUE && isKetteiTxtDisp == TRUE) { + memcpy(&mSaveData, &field_0x2376, SAVEFILE_SIZE); + mDoMemCdRWm_SetCheckSumGameData((u8*)&mSaveData[0], 0); + mDoMemCdRWm_SetCheckSumGameData((u8*)&mSaveData[0], 1); + mDoMemCdRWm_SetCheckSumGameData((u8*)&mSaveData[0], 2); + mDoMemCd_saveNAND(&mSaveData, SAVEFILE_SIZE, 0); + mWaitTimer = g_fsHIO.card_wait_frames; + mDataSelProc = DATASELPROC_CARD_TO_NAND_DATA_COPY_WAIT; + } +} + +void dFile_select_c::cardToNandDataCopyWait() { + if (mWaitTimer != 0) { + mWaitTimer--; + } + + mDoAud_seStartLevel(Z2SE_SY_FILE_COPY_LEVEL, NULL, 0, 0); + + field_0x03b4 = mDoMemCd_SaveSyncNAND(); + if (field_0x03b4 != 0) { + mDataSelProc = DATASELPROC_CARD_TO_NAND_DATA_COPY_WAIT2; + } +} + +void dFile_select_c::cardToNandDataCopyWait2() { + if (mWaitTimer != 0) { + mDoAud_seStartLevel(Z2SE_SY_FILE_COPY_LEVEL, NULL, 0, 0); + mWaitTimer--; + return; + } + + if (field_0x03b4 == 2) { + mDoAud_seStart(Z2SE_SY_FILE_ERROR, NULL, 0, 0); + headerTxtSet(0xECF, 0, 0); + mpFileWarning->closeInit(); + + for (int i = 0; i < 3; i++) { + mCopyEfPane[i]->alphaAnimeStart(0); + selectWakuAlpahAnmInit(i, 0xFF, 0, g_fsHIO.select_box_appear_frames); + } + + mDataSelProc = DATASELPROC_CARD_TO_NAND_DATA_COPY_ERR_DISP; + } else if (field_0x03b4 == 1) { + mDoAud_seStart(Z2SE_SY_FILE_COPY_OK, NULL, 0, 0); + + for (int i = 0; i < 3; i++) { + mCopyEfPane[i]->alphaAnimeStart(0); + mFileInfoNoDatBasePane[i]->alphaAnimeStart(0); + mFileInfoDatBasePane[i]->alphaAnimeStart(0); + selectWakuAlpahAnmInit(i, 0xFF, 0, g_fsHIO.select_box_appear_frames); + } + + mDataSelProc = DATASELPROC_CARD_TO_NAND_DATA_COPY_OK_DISP; + } +} + +void dFile_select_c::cardToNandDataCopyOkDisp() { + bool temp_r25 = mCopyEfPane[0]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + bool temp_r24 = mCopyEfPane[1]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + bool temp_r23 = mCopyEfPane[2]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + + bool var_r28; + if (mIsNoData[0] || mIsDataNew[0] != 0) { + var_r28 = mFileInfoNoDatBasePane[0]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + } else { + var_r28 = mFileInfoDatBasePane[0]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + } + + bool var_r27; + if (mIsNoData[1] || mIsDataNew[1] != 0) { + var_r27 = mFileInfoNoDatBasePane[1]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + } else { + var_r27 = mFileInfoDatBasePane[1]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + } + + bool var_r26; + if (mIsNoData[2] || mIsDataNew[2] != 0) { + var_r26 = mFileInfoNoDatBasePane[2]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + } else { + var_r26 = mFileInfoDatBasePane[2]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + } + + bool temp_r22 = selectWakuAlpahAnm(0); + bool temp_r21 = selectWakuAlpahAnm(1); + bool temp_r20 = selectWakuAlpahAnm(2); + + if (temp_r25 == true && temp_r24 == true && temp_r23 == true && var_r28 == true && var_r27 == true && var_r26 == true && temp_r22 == true && temp_r21 == true && temp_r20 == true) { + field_0x0209 = 0; + headerTxtSet(0xECE, 0, 0); + mpFileWarning->closeInit(); + setSaveData(); + + for (int i = 0; i < 3; i++) { + mFileInfoNoDatBasePane[i]->alphaAnimeStart(0); + mFileInfoDatBasePane[i]->alphaAnimeStart(0); + } + + mDataSelProc = DATASELPROC_CARD_TO_NAND_DATA_COPY_OK_DISP2; + } +} + +void dFile_select_c::cardToNandDataCopyOkDisp2() { + bool isHeaderTxtChange = headerTxtChangeAnm(); + + bool var_r28; + if (mIsNoData[0] || mIsDataNew[0] != 0) { + var_r28 = mFileInfoNoDatBasePane[0]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xFF, 0); + } else { + var_r28 = mFileInfoDatBasePane[0]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xFF, 0); + } + + bool var_r27; + if (mIsNoData[1] || mIsDataNew[1] != 0) { + var_r27 = mFileInfoNoDatBasePane[1]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xFF, 0); + } else { + var_r27 = mFileInfoDatBasePane[1]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xFF, 0); + } + + bool var_r26; + if (mIsNoData[2] || mIsDataNew[2] != 0) { + var_r26 = mFileInfoNoDatBasePane[2]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xFF, 0); + } else { + var_r26 = mFileInfoDatBasePane[2]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xFF, 0); + } + + u32 temp_r22 = mpFileWarning->getStatus(); + + if (isHeaderTxtChange == true && var_r28 == true && var_r27 == true && var_r26 == true && temp_r22 == true) { + mWaitTimer = g_fsHIO.field_0x000a; + mpFileWarning->setText(0xED6); + + mDataSelProc = DATASELPROC_CARD_TO_NAND_DATA_COPY_OK_DISP3; + } +} + +void dFile_select_c::cardToNandDataCopyOkDisp3() { + if (mWaitTimer != 0) { + mWaitTimer--; + return; + } + + headerTxtSet(0x43, 1, 0); + + SaveDataBuf* savebuf_p = mSaveData; + dSv_save_c* save_p = (dSv_save_c*)savebuf_p; + OSTime date_ipl = save_p->getPlayer().getPlayerStatusB().getDateIpl(); + mSelectNum = 0; + + for (int i = 0; i < 3; i++) { + save_p = (dSv_save_c*)savebuf_p; + if (!mIsNoData[i]) { + OSTime date_ipl2 = save_p->getPlayer().getPlayerStatusB().getDateIpl(); + if (OSTicksToSeconds(date_ipl) < OSTicksToSeconds(date_ipl2)) { + date_ipl = date_ipl2; + mSelectNum = i; + } + } + + savebuf_p++; + } + + mLastSelectNum = mSelectNum; + ketteiTxtDispAnmInit(1); + + mSelFilePanes[mSelectNum]->getPanePtr()->setAnimation(mBaseMoveAnm); + field_0x00e0[mSelectNum] = SelStartFrameTbl[mSelectNum]; + mSelFilePane_Book_l[mSelectNum]->alphaAnimeStart(0); + ketteiTxtDispAnmInit(1); + + mDataSelProc = DATASELPROC_DATA_SELECT_INIT; +} + +void dFile_select_c::cardToNandDataCopyErrDisp() { + BOOL isHeaderTxtChange = headerTxtChangeAnm(); + BOOL temp_r29 = mCopyEfPane[0]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + BOOL temp_r28 = mCopyEfPane[1]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + BOOL temp_r27 = mCopyEfPane[2]->alphaAnime(g_fsHIO.copy_erase_frames, 0xFF, 0, 0); + BOOL temp_r26 = selectWakuAlpahAnm(0); + BOOL temp_r25 = selectWakuAlpahAnm(1); + BOOL temp_r24 = selectWakuAlpahAnm(2); + BOOL temp_r23 = mpFileWarning->getStatus(); + + if (isHeaderTxtChange == true && temp_r29 == true && temp_r28 == true && temp_r27 == true && temp_r26 == true && temp_r25 == true && temp_r24 == true && temp_r23 == true) { + field_0x0208 = 0; + field_0x0209 = 0; + mWaitTimer = g_fsHIO.field_0x000a; + mDataSelProc = DATASELPROC_CARD_TO_NAND_DATA_COPY_ERR_DISP2; + } +} + +void dFile_select_c::cardToNandDataCopyErrDisp2() { + if (mWaitTimer != 0) { + mWaitTimer--; + return; + } + + headerTxtSet(0xFFFF, 0, 0); + + if (field_0x00b8 != 0) { + selectDataBaseMoveAnmInitSet(0x21, 1); + } + + mDataSelProc = DATASELPROC_CARD_TO_NAND_DATA_COPY_ERR_DISP3; +} + +void dFile_select_c::cardToNandDataCopyErrDisp3() { + bool isHeaderTxtChange = headerTxtChangeAnm(); + + bool isSelectDataBaseMove; + if (field_0x00b8 != 0) { + isSelectDataBaseMove = selectDataBaseMoveAnm(); + } + + if (isHeaderTxtChange == true && isSelectDataBaseMove == true) { + mDataSelProc = DATASELPROC_MEMCARD_CHECK_MAIN; + mCardCheckProc = MEMCARDCHECKPROC_NAND_STAT_CHECK; + } +} +#endif + void dFile_select_c::screenSet() { static u64 l_tagName0[3] = {'w_sel_00', 'w_sel_01', 'w_sel_02'}; static u64 l_tagName3[3] = {'w_moyo00', 'w_moyo01', 'w_moyo02'}; static u64 l_tagName4[3] = {'w_gold00', 'w_gold01', 'w_gold02'}; static u64 l_tagName5[3] = {'w_go2_00', 'w_go2_01', 'w_go2_02'}; static u64 l_tagName12[3] = {'w_bk_l00', 'w_bk_l01', 'w_bk_l02'}; - static u64 l_nouseTag[15] = { - 'w_mcheck', 'w_tabi1', 'w_tabi2', 'w_tabi3', 'w_doko_c', 'w_uwa_c', 'w_cp_chu', 'w_cpsita', - 'w_cp_x', 'w_de', 'w_de_chu', 'w_desita', 'w_de_x', 'w_name', 'w_h_name'}; - - #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) + static u64 l_nouseTag[15] = {'w_mcheck', 'w_tabi1', 'w_tabi2', 'w_tabi3', 'w_doko_c', + 'w_uwa_c', 'w_cp_chu', 'w_cpsita', 'w_cp_x', 'w_de', + 'w_de_chu', 'w_desita', 'w_de_x', 'w_name', 'w_h_name'}; + +#if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) static u64 l_tagName21[2] = {'w_tabi_s', 'w_tabi_x'}; - #else +#else static u64 l_tagName21[2] = {'t_for', 't_for1'}; - #endif - +#endif + static u64 l_tagName18[3] = {'w_de_ef0', 'w_de_ef1', 'w_de_ef2'}; static u64 l_tagName19[3] = {'w_cp_ef0', 'w_cp_ef1', 'w_cp_ef2'}; - #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) +#if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) static u64 l_tagName20[2] = {'w_er_msg', 'w_er_msR'}; - #else +#else static u64 l_tagName20[2] = {'er_for0', 'er_for1'}; - #endif +#endif static u64 l_tagName131[3] = {'N_sel_00', 'N_sel_01', 'N_sel_02'}; @@ -2242,219 +2930,254 @@ void dFile_select_c::screenSet() { JUT_ASSERT(4917, fileSel.Scr != NULL); fileSel.Scr->setPriority("zelda_file_select.blo", 0x1100000, mpArchive); dPaneClass_showNullPane(fileSel.Scr); - void* uVar14 = JKRGetNameResource("zelda_file_select.bck", mpArchive); - field_0x0084 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(uVar14); - field_0x0088 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(uVar14); - field_0x0090 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(uVar14); - field_0x0094 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(uVar14); - field_0x0098 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(uVar14); - field_0x009c = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(uVar14); - field_0x0084->searchUpdateMaterialID(fileSel.Scr); + + void* bck = JKRGetNameResource("zelda_file_select.bck", mpArchive); + mBaseMoveAnm = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + field_0x0088 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + field_0x0090 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + field_0x0094 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + field_0x0098 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + field_0x009c = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + mBaseMoveAnm->searchUpdateMaterialID(fileSel.Scr); field_0x0088->searchUpdateMaterialID(fileSel.Scr); field_0x0090->searchUpdateMaterialID(fileSel.Scr); field_0x009c->searchUpdateMaterialID(fileSel.Scr); - field_0x00a4 = new CPaneMgr(fileSel.Scr, 'w_move_n', 0, NULL); - mpPane = fileSel.Scr->search('w_sub_n'); - for (int i = 0; i < 3; i++) { - field_0x00bc[i] = new CPaneMgr(fileSel.Scr, l_tagName0[i], 1, NULL); - } - fileSel.Scr->search('Wi_btn_n')->hide(); - field_0x0238 = new CPaneMgrAlpha(fileSel.Scr, 'w_n_bbtn', 2, NULL); - field_0x023c = new CPaneMgrAlpha(fileSel.Scr, 'w_n_abtn', 2, NULL); - #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - field_0x0240 = new CPaneMgrAlpha(fileSel.Scr, 'w_modo', 2, NULL); - field_0x0244 = new CPaneMgrAlpha(fileSel.Scr, 'w_kete', 2, NULL); + mBaseMovePane = new CPaneMgr(fileSel.Scr, 'w_move_n', 0, NULL); + mBaseSubPane = fileSel.Scr->search('w_sub_n'); + + for (int i = 0; i < 3; i++) { + mSelFilePanes[i] = new CPaneMgr(fileSel.Scr, l_tagName0[i], 1, NULL); + } + + fileSel.Scr->search('Wi_btn_n')->hide(); + mBbtnPane = new CPaneMgrAlpha(fileSel.Scr, 'w_n_bbtn', 2, NULL); + mAbtnPane = new CPaneMgrAlpha(fileSel.Scr, 'w_n_abtn', 2, NULL); + +#if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) + mModoruTxtPane = new CPaneMgrAlpha(fileSel.Scr, 'w_modo', 2, NULL); + mKetteiTxtPane = new CPaneMgrAlpha(fileSel.Scr, 'w_kete', 2, NULL); fileSel.Scr->search('f_modo')->hide(); fileSel.Scr->search('f_kete')->hide(); - #else - field_0x0240 = new CPaneMgrAlpha(fileSel.Scr, 'f_modo', 2, NULL); - field_0x0244 = new CPaneMgrAlpha(fileSel.Scr, 'f_kete', 2, NULL); +#else + mModoruTxtPane = new CPaneMgrAlpha(fileSel.Scr, 'f_modo', 2, NULL); + mKetteiTxtPane = new CPaneMgrAlpha(fileSel.Scr, 'f_kete', 2, NULL); fileSel.Scr->search('w_modo')->hide(); fileSel.Scr->search('w_kete')->hide(); - #endif +#endif - ((J2DTextBox*)field_0x0240->getPanePtr())->setFont(fileSel.mpMessageFont[0]); - ((J2DTextBox*)field_0x0244->getPanePtr())->setFont(fileSel.mpMessageFont[0]); - ((J2DTextBox*)field_0x0240->getPanePtr())->setString(32, ""); - field_0x0250 = ((J2DTextBox*)field_0x0240->getPanePtr())->getStringPtr(); - fopMsgM_messageGet(field_0x0250, 0x54); + ((J2DTextBox*)mModoruTxtPane->getPanePtr())->setFont(fileSel.font[0]); + ((J2DTextBox*)mKetteiTxtPane->getPanePtr())->setFont(fileSel.font[0]); + ((J2DTextBox*)mModoruTxtPane->getPanePtr())->setString(32, ""); + + mModoruStringPtr = ((J2DTextBox*)mModoruTxtPane->getPanePtr())->getStringPtr(); + fopMsgM_messageGet(mModoruStringPtr, 0x54); field_0x024c = 0; - char acStack_38[32]; - fopMsgM_messageGet(acStack_38, 0x55); - ((J2DTextBox*)field_0x0244->getPanePtr())->setString(acStack_38); + + char ketteiTxtBuf[32]; + fopMsgM_messageGet(ketteiTxtBuf, 0x55); + ((J2DTextBox*)mKetteiTxtPane->getPanePtr())->setString(ketteiTxtBuf); + void* bpk = JKRGetNameResource("zelda_file_select.bpk", mpArchive); JUT_ASSERT(4994, bpk != NULL); - field_0x01c8 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); - field_0x01c8->searchUpdateMaterialID(fileSel.Scr); - field_0x01cc = 0; + mFileSelBpk = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); + mFileSelBpk->searchUpdateMaterialID(fileSel.Scr); + mSelFileBpkFrame = 0; + void* btk = JKRGetNameResource("zelda_file_select_05.btk", mpArchive); JUT_ASSERT(5004, btk != NULL); - field_0x01d0 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); - field_0x01d0->searchUpdateMaterialID(fileSel.Scr); - field_0x01d4 = 0; + mFileSel05Btk = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); + mFileSel05Btk->searchUpdateMaterialID(fileSel.Scr); + mSelFileBtk05Frame = 0; + for (int i = 0; i < 3; i++) { - field_0x0164[i] = new CPaneMgr(fileSel.Scr, l_tagName3[i], 0, NULL); - field_0x0170[i] = new CPaneMgr(fileSel.Scr, l_tagName4[i], 0, NULL); - field_0x017c[i] = new CPaneMgr(fileSel.Scr, l_tagName5[i], 0, NULL); - field_0x0164[i]->getPanePtr()->setAnimation(field_0x01c8); - field_0x0170[i]->getPanePtr()->setAnimation(field_0x01c8); - field_0x017c[i]->getPanePtr()->setAnimation(field_0x01c8); - field_0x0170[i]->getPanePtr()->setAnimation(field_0x01d0); - field_0x017c[i]->getPanePtr()->setAnimation(field_0x01d0); + mSelFileMoyoPane[i] = new CPaneMgr(fileSel.Scr, l_tagName3[i], 0, NULL); + mSelFileGoldPane[i] = new CPaneMgr(fileSel.Scr, l_tagName4[i], 0, NULL); + mSelFileGold2Pane[i] = new CPaneMgr(fileSel.Scr, l_tagName5[i], 0, NULL); + mSelFileMoyoPane[i]->getPanePtr()->setAnimation(mFileSelBpk); + mSelFileGoldPane[i]->getPanePtr()->setAnimation(mFileSelBpk); + mSelFileGold2Pane[i]->getPanePtr()->setAnimation(mFileSelBpk); + mSelFileGoldPane[i]->getPanePtr()->setAnimation(mFileSel05Btk); + mSelFileGold2Pane[i]->getPanePtr()->setAnimation(mFileSel05Btk); } - field_0x01d8 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); - field_0x01d8->searchUpdateMaterialID(fileSel.Scr); + + mSelFileBookBpk = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); + mSelFileBookBpk->searchUpdateMaterialID(fileSel.Scr); + btk = JKRGetNameResource("zelda_file_select.btk", mpArchive); JUT_ASSERT(5039, btk != NULL); - field_0x01e0 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); - field_0x01e0->searchUpdateMaterialID(fileSel.Scr); + mSelFileBookBtk = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); + mSelFileBookBtk->searchUpdateMaterialID(fileSel.Scr); + void* brk = JKRGetNameResource("zelda_file_select.brk", mpArchive); JUT_ASSERT(5048, brk != NULL); - field_0x01e8 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(brk); - field_0x0200 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(brk); - field_0x01e8->searchUpdateMaterialID(fileSel.Scr); - field_0x0200->searchUpdateMaterialID(fileSel.Scr); - field_0x01dc = 0; - field_0x01e4 = 0; - field_0x01ec = 0; + mSelFileBookBrk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(brk); + mCpDtEffBrk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(brk); + mSelFileBookBrk->searchUpdateMaterialID(fileSel.Scr); + mCpDtEffBrk->searchUpdateMaterialID(fileSel.Scr); + + mSelFileBookBpkFrame = 0; + mSelFileBookBtkFrame = 0; + mSelFileBookBrkFrame = 0; for (int i = 0; i < 3; i++) { - field_0x0188[i] = new CPaneMgr(fileSel.Scr, l_tagName12[i], 0, NULL); - field_0x0188[i]->getPanePtr()->setAnimation(field_0x01d8); - field_0x0188[i]->getPanePtr()->setAnimation(field_0x01e0); - field_0x0188[i]->getPanePtr()->setAnimation(field_0x01e8); + mSelFilePane_Book_l[i] = new CPaneMgr(fileSel.Scr, l_tagName12[i], 0, NULL); + mSelFilePane_Book_l[i]->getPanePtr()->setAnimation(mSelFileBookBpk); + mSelFilePane_Book_l[i]->getPanePtr()->setAnimation(mSelFileBookBtk); + mSelFilePane_Book_l[i]->getPanePtr()->setAnimation(mSelFileBookBrk); } + for (int i = 0; i < 15; i++) { fileSel.Scr->search(l_nouseTag[i])->hide(); } - #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) +#if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) fileSel.Scr->search('t_for')->hide(); fileSel.Scr->search('t_for1')->hide(); - #else +#else fileSel.Scr->search('w_tabi_s')->hide(); fileSel.Scr->search('w_tabi_x')->hide(); fileSel.Scr->search('w_mgn1')->hide(); fileSel.Scr->search('w_mgn2')->hide(); - #endif +#endif for (int i = 0; i < 2; i++) { - field_0x020c[i] = new CPaneMgrAlpha(fileSel.Scr, l_tagName21[i], 0, NULL); - ((J2DTextBox*)field_0x020c[i]->getPanePtr())->setFont(fileSel.mpMessageFont[0]); - ((J2DTextBox*)field_0x020c[i]->getPanePtr())->setString(512, ""); + mHeaderTxtPane[i] = new CPaneMgrAlpha(fileSel.Scr, l_tagName21[i], 0, NULL); + ((J2DTextBox*)mHeaderTxtPane[i]->getPanePtr())->setFont(fileSel.font[0]); + ((J2DTextBox*)mHeaderTxtPane[i]->getPanePtr())->setString(512, ""); #if VERSION == VERSION_GCN_JPN - ((J2DTextBox*)field_0x020c[i]->getPanePtr())->setFontSize(21.0f, 21.0f); - ((J2DTextBox*)field_0x020c[i]->getPanePtr())->setLineSpace(22.0f); - ((J2DTextBox*)field_0x020c[i]->getPanePtr())->setCharSpace(2.0f); + ((J2DTextBox*)mHeaderTxtPane[i]->getPanePtr())->setFontSize(21.0f, 21.0f); + ((J2DTextBox*)mHeaderTxtPane[i]->getPanePtr())->setLineSpace(22.0f); + ((J2DTextBox*)mHeaderTxtPane[i]->getPanePtr())->setCharSpace(2.0f); #else - ((J2DTextBox*)field_0x020c[i]->getPanePtr())->setFontSize(24.0f, 24.0f); - ((J2DTextBox*)field_0x020c[i]->getPanePtr())->setLineSpace(20.0f); - ((J2DTextBox*)field_0x020c[i]->getPanePtr())->setCharSpace(0.0f); + ((J2DTextBox*)mHeaderTxtPane[i]->getPanePtr())->setFontSize(24.0f, 24.0f); + ((J2DTextBox*)mHeaderTxtPane[i]->getPanePtr())->setLineSpace(20.0f); + ((J2DTextBox*)mHeaderTxtPane[i]->getPanePtr())->setCharSpace(0.0f); #endif - field_0x0214[i] = ((J2DTextBox*)field_0x020c[i]->getPanePtr())->getStringPtr(); + mHeaderStringPtr[i] = ((J2DTextBox*)mHeaderTxtPane[i]->getPanePtr())->getStringPtr(); } - field_0x020c[0]->setAlpha(0xff); - field_0x020c[1]->setAlpha(0); - field_0x021c = 0; + + mHeaderTxtPane[0]->setAlpha(0xff); + mHeaderTxtPane[1]->setAlpha(0); + mHeaderTxtDispIdx = 0; + bpk = JKRGetNameResource("zelda_file_select_02.btk", mpArchive); JUT_ASSERT(5124, bpk != NULL); - field_0x01f8 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(bpk); - field_0x01f8->searchUpdateMaterialID(fileSel.Scr); + mCpEffBtk = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(bpk); + mCpEffBtk->searchUpdateMaterialID(fileSel.Scr); + bpk = JKRGetNameResource("zelda_file_select_03.btk", mpArchive); JUT_ASSERT(5133, bpk != NULL); - field_0x01f0 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(bpk); - field_0x01f0->searchUpdateMaterialID(fileSel.Scr); - field_0x01f4 = 0; - field_0x01fc = 0; - field_0x0204 = 0; + mDtEffBtk = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(bpk); + mDtEffBtk->searchUpdateMaterialID(fileSel.Scr); + + mDtEffBtkFrame = 0; + mCpEffBtkFrame = 0; + mCpDtEffBrkFrame = 0; for (int i = 0; i < 3; i++) { - field_0x014c[i] = new CPaneMgrAlpha(fileSel.Scr, l_tagName18[i], 0, NULL); - field_0x0158[i] = new CPaneMgrAlpha(fileSel.Scr, l_tagName19[i], 0, NULL); - field_0x014c[i]->getPanePtr()->setAnimation(field_0x01f0); - field_0x014c[i]->getPanePtr()->setAnimation(field_0x0200); - field_0x0158[i]->getPanePtr()->setAnimation(field_0x01f8); - field_0x0158[i]->getPanePtr()->setAnimation(field_0x0200); + mDeleteEfPane[i] = new CPaneMgrAlpha(fileSel.Scr, l_tagName18[i], 0, NULL); + mCopyEfPane[i] = new CPaneMgrAlpha(fileSel.Scr, l_tagName19[i], 0, NULL); + mDeleteEfPane[i]->getPanePtr()->setAnimation(mDtEffBtk); + mDeleteEfPane[i]->getPanePtr()->setAnimation(mCpDtEffBrk); + mCopyEfPane[i]->getPanePtr()->setAnimation(mCpEffBtk); + mCopyEfPane[i]->getPanePtr()->setAnimation(mCpDtEffBrk); } + field_0x0208 = 0; field_0x0209 = 0; - field_0x012c = fileSel.Scr->search('w_er_n'); + mErrorMsgPane = fileSel.Scr->search('w_er_n'); - #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) +#if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) fileSel.Scr->search('er_for0')->hide(); fileSel.Scr->search('er_for1')->hide(); - #else +#else fileSel.Scr->search('w_er_msg')->hide(); fileSel.Scr->search('w_er_msR')->hide(); - #endif +#endif fileSel.Scr->search('w_er_msE')->hide(); + for (int i = 0; i < 2; i++) { - field_0x0138[i] = new CPaneMgrAlpha(fileSel.Scr, l_tagName20[i], 0, NULL); - ((J2DTextBox*)field_0x0138[i]->getPanePtr())->setFont(fileSel.mpMessageFont[0]); - ((J2DTextBox*)field_0x0138[i]->getPanePtr())->setString(512, ""); + mErrorMsgTxtPane[i] = new CPaneMgrAlpha(fileSel.Scr, l_tagName20[i], 0, NULL); + ((J2DTextBox*)mErrorMsgTxtPane[i]->getPanePtr())->setFont(fileSel.font[0]); + ((J2DTextBox*)mErrorMsgTxtPane[i]->getPanePtr())->setString(512, ""); - #if (VERSION != VERSION_GCN_JPN) && (VERSION != VERSION_WII_JPN) - field_0x0138[i]->getPanePtr()->resize(440.0f, 198.0f); - #endif +#if (VERSION != VERSION_GCN_JPN) && (VERSION != VERSION_WII_JPN) + mErrorMsgTxtPane[i]->getPanePtr()->resize(440.0f, 198.0f); +#endif - ((J2DTextBox*)field_0x0138[i]->getPanePtr())->setFontSize(21.0f, 21.0f); + ((J2DTextBox*)mErrorMsgTxtPane[i]->getPanePtr())->setFontSize(21.0f, 21.0f); - #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - ((J2DTextBox*)field_0x0138[i]->getPanePtr())->setLineSpace(22.0f); - ((J2DTextBox*)field_0x0138[i]->getPanePtr())->setCharSpace(2.0f); - #else - ((J2DTextBox*)field_0x0138[i]->getPanePtr())->setLineSpace(21.0f); - ((J2DTextBox*)field_0x0138[i]->getPanePtr())->setCharSpace(1.0f); - #endif +#if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) + ((J2DTextBox*)mErrorMsgTxtPane[i]->getPanePtr())->setLineSpace(22.0f); + ((J2DTextBox*)mErrorMsgTxtPane[i]->getPanePtr())->setCharSpace(2.0f); +#else + ((J2DTextBox*)mErrorMsgTxtPane[i]->getPanePtr())->setLineSpace(21.0f); + ((J2DTextBox*)mErrorMsgTxtPane[i]->getPanePtr())->setCharSpace(1.0f); +#endif - field_0x0140[i] = ((J2DTextBox*)field_0x0138[i]->getPanePtr())->getStringPtr(); - field_0x0138[i]->show(); + mErrorMsgStringPtr[i] = ((J2DTextBox*)mErrorMsgTxtPane[i]->getPanePtr())->getStringPtr(); + mErrorMsgTxtPane[i]->show(); } - field_0x0148 = 0; - field_0x0138[field_0x0148]->setAlpha(0xff); - field_0x0138[field_0x0148 ^ 1]->setAlpha(0); + + mErrorTxtDispIdx = 0; + mErrorMsgTxtPane[mErrorTxtDispIdx]->setAlpha(0xff); + mErrorMsgTxtPane[mErrorTxtDispIdx ^ 1]->setAlpha(0); + mSelIcon = new dSelect_cursor_c(0, 1.0f, NULL); JUT_ASSERT(5209, mSelIcon != NULL); mSelIcon->setParam(0.96f, 0.94f, 0.03f, 0.7f, 0.7f); Vec vtxCenter; - vtxCenter = field_0x00bc[mSelectNum]->getGlobalVtxCenter(false, 0); - mSelIcon->setPos(vtxCenter.x, vtxCenter.y, field_0x00bc[mSelectNum]->getPanePtr(), true); + vtxCenter = mSelFilePanes[mSelectNum]->getGlobalVtxCenter(false, 0); + mSelIcon->setPos(vtxCenter.x, vtxCenter.y, mSelFilePanes[mSelectNum]->getPanePtr(), true); mSelIcon->setAlphaRate(0.0f); - J2DPane* piVar5 = fileSel.Scr->search('Nm_02'); - piVar5->setAnimation(field_0x0084); + + J2DPane* basePane = fileSel.Scr->search('Nm_02'); + basePane->setAnimation(mBaseMoveAnm); + setWakuAnm(); + field_0x00a0 = 1; - field_0x0084->setFrame(field_0x00a0); - piVar5->animationTransform(); - piVar5->setAnimation((J2DAnmTransform*)NULL); - field_0x020c[0]->getPanePtr()->scale(1.0f, 1.0f); - field_0x020c[1]->getPanePtr()->scale(1.0f, 1.0f); - J2DPane* apJStack_54[3]; + mBaseMoveAnm->setFrame(field_0x00a0); + + basePane->animationTransform(); + basePane->setAnimation((J2DAnmTransform*)NULL); + + mHeaderTxtPane[0]->getPanePtr()->scale(1.0f, 1.0f); + mHeaderTxtPane[1]->getPanePtr()->scale(1.0f, 1.0f); + + J2DPane* selChildPanes[3]; for (int i = 0; i < 3; i++) { - apJStack_54[i] = new J2DPane(l_tagName13[i], JGeometry::TBox2(238.0f, 43.0f, 712.0f, 130.0f)); - apJStack_54[i]->setUserInfo('n_43'); - field_0x00bc[i]->getPanePtr()->insertChild(fileSel.Scr->search(l_tagName131[i]), apJStack_54[i]); - } - for (int i = 0; i < 3; i++) { - field_0x0070[i] = new dFile_info_c(mpArchive, 0); - field_0x0070[i]->setBasePane(apJStack_54[i]); - field_0x0220[i] = field_0x0070[i]->getDatBase(); - field_0x022c[i] = field_0x0070[i]->getNoDatBase(); + selChildPanes[i] = new J2DPane(l_tagName13[i], JGeometry::TBox2(238.0f, 43.0f, 712.0f, 130.0f)); + selChildPanes[i]->setUserInfo('n_43'); + mSelFilePanes[i]->getPanePtr()->insertChild(fileSel.Scr->search(l_tagName131[i]), + selChildPanes[i]); } - field_0x011c = fileSel.Scr->search('name_n'); - mpName = new dName_c(field_0x011c); + for (int i = 0; i < 3; i++) { + mFileInfo[i] = new dFile_info_c(mpArchive, 0); + mFileInfo[i]->setBasePane(selChildPanes[i]); + mFileInfoDatBasePane[i] = mFileInfo[i]->getDatBase(); + mFileInfoNoDatBasePane[i] = mFileInfo[i]->getNoDatBase(); + } + + mNameBasePane = fileSel.Scr->search('name_n'); + mpName = new dName_c(mNameBasePane); field_0x0128 = false; mpFileWarning = new dFile_warning_c(mpArchive, 0); mSelDt.mpPane = fileSel.Scr->search('w_moyo03'); + + #if PLATFORM_GCN JUtility::TColor black = mDoGph_gInf_c::getFadeColor(); JUtility::TColor white = mDoGph_gInf_c::getFadeColor(); black.a = 0; white.a = 0xff; - ResTIMG* uVar20 = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti"); - field_0x2378 = new J2DPicture('PICT01', JGeometry::TBox2(0.0f, FB_WIDTH, 0.0f, FB_HEIGHT), uVar20, NULL); - field_0x2378->setBlackWhite(black, white); - field_0x2378->setAlpha(0); + + ResTIMG* timg = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti"); + mpFadePict = new J2DPicture('PICT01', JGeometry::TBox2(0.0f, FB_WIDTH, 0.0f, FB_HEIGHT), + timg, NULL); + mpFadePict->setBlackWhite(black, white); + mpFadePict->setAlpha(0); + #endif } void dFile_select_c::screenSetCopySel() { @@ -2466,74 +3189,84 @@ void dFile_select_c::screenSetCopySel() { static u64 l_tagName005[2] = {'w_cp_ef1', 'w_cp_ef2'}; mCpSel.Scr = new J2DScreen(); + JUT_ASSERT(5286, mCpSel.Scr != NULL); mCpSel.Scr->setPriority("zelda_file_select_copy_select.blo", 0x1100000, mpArchive); dPaneClass_showNullPane(mCpSel.Scr); mCpSel.mpPane2 = mCpSel.Scr->search('name_n'); mCpSel.mpPane1 = fileSel.Scr->search('name_n'); - void* bck = JKRGetNameResource("zelda_file_select_copy_select.bck", - mpArchive); - field_0x029c = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); - field_0x02a0 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); - field_0x029c->searchUpdateMaterialID(mCpSel.Scr); - field_0x02a0->searchUpdateMaterialID(mCpSel.Scr); + + void* bck = JKRGetNameResource("zelda_file_select_copy_select.bck", mpArchive); + mCpSelBck = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + mCpSelBck2 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + mCpSelBck->searchUpdateMaterialID(mCpSel.Scr); + mCpSelBck2->searchUpdateMaterialID(mCpSel.Scr); + void* bpk = JKRGetNameResource("zelda_file_select_copy_select.bpk", mpArchive); JUT_ASSERT(5315, bpk != NULL); - field_0x02e8 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); - field_0x02e8->searchUpdateMaterialID(mCpSel.Scr); - field_0x02ec = 0; + mCpSelBpk = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); + mCpSelBpk->searchUpdateMaterialID(mCpSel.Scr); + mCpSelBpkFrame = 0; + void* btk = JKRGetNameResource("zelda_file_select_copy_select_03.btk", mpArchive); JUT_ASSERT(5325, btk != NULL); - field_0x02f0 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); - field_0x02f0->searchUpdateMaterialID(mCpSel.Scr); - field_0x02f4 = 0; - field_0x02f8 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); - field_0x02f8->searchUpdateMaterialID(mCpSel.Scr); + mCpSel03Btk = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); + mCpSel03Btk->searchUpdateMaterialID(mCpSel.Scr); + mCpSel03BtkFrame = 0; + mCpSelBookBpk = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); + mCpSelBookBpk->searchUpdateMaterialID(mCpSel.Scr); + btk = JKRGetNameResource("zelda_file_select_copy_select.btk", mpArchive); JUT_ASSERT(5343, btk != NULL); - field_0x0300 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); - field_0x0300->searchUpdateMaterialID(mCpSel.Scr); + mCpSelBookBtk = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); + mCpSelBookBtk->searchUpdateMaterialID(mCpSel.Scr); + void* brk = JKRGetNameResource("zelda_file_select_copy_select.brk", mpArchive); JUT_ASSERT(5352, brk != NULL); - field_0x0308 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(brk); - field_0x0308->searchUpdateMaterialID(mCpSel.Scr); - field_0x02fc = 0; - field_0x0304 = 0; - field_0x030c = 0; - for (int i = 0; i < 2; i++) { - field_0x02a4[i] = new CPaneMgr(mCpSel.Scr, l_tagName000[i], 0, NULL); - field_0x02c0[i] = new CPaneMgr(mCpSel.Scr, l_tagName001[i], 0, NULL); - field_0x02c8[i] = new CPaneMgr(mCpSel.Scr, l_tagName002[i], 0, NULL); - field_0x02d0[i] = new CPaneMgr(mCpSel.Scr, l_tagName003[i], 0, NULL); - field_0x02d8[i] = new CPaneMgr(mCpSel.Scr, l_tagName004[i], 0, NULL); + mCpSelBookBrk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(brk); + mCpSelBookBrk->searchUpdateMaterialID(mCpSel.Scr); + mCpSelBookBpkFrame = 0; + mCpSelBookBtkFrame = 0; + mCpSelBookBrkFrame = 0; - field_0x02c0[i]->getPanePtr()->setAnimation(field_0x02e8); - field_0x02c8[i]->getPanePtr()->setAnimation(field_0x02e8); - field_0x02d0[i]->getPanePtr()->setAnimation(field_0x02e8); - field_0x02c8[i]->getPanePtr()->setAnimation(field_0x02f0); - field_0x02d0[i]->getPanePtr()->setAnimation(field_0x02f0); - field_0x02d8[i]->getPanePtr()->setAnimation(field_0x02f8); - field_0x02d8[i]->getPanePtr()->setAnimation(field_0x0300); - field_0x02d8[i]->getPanePtr()->setAnimation(field_0x0308); + for (int i = 0; i < 2; i++) { + mCpSelPane[i] = new CPaneMgr(mCpSel.Scr, l_tagName000[i], 0, NULL); + mCpSelPane_moyo[i] = new CPaneMgr(mCpSel.Scr, l_tagName001[i], 0, NULL); + mCpSelPane_gold[i] = new CPaneMgr(mCpSel.Scr, l_tagName002[i], 0, NULL); + mCpSelPane_gold2[i] = new CPaneMgr(mCpSel.Scr, l_tagName003[i], 0, NULL); + mCpSelPane_book[i] = new CPaneMgr(mCpSel.Scr, l_tagName004[i], 0, NULL); + + mCpSelPane_moyo[i]->getPanePtr()->setAnimation(mCpSelBpk); + mCpSelPane_gold[i]->getPanePtr()->setAnimation(mCpSelBpk); + mCpSelPane_gold2[i]->getPanePtr()->setAnimation(mCpSelBpk); + mCpSelPane_gold[i]->getPanePtr()->setAnimation(mCpSel03Btk); + mCpSelPane_gold2[i]->getPanePtr()->setAnimation(mCpSel03Btk); + mCpSelPane_book[i]->getPanePtr()->setAnimation(mCpSelBookBpk); + mCpSelPane_book[i]->getPanePtr()->setAnimation(mCpSelBookBtk); + mCpSelPane_book[i]->getPanePtr()->setAnimation(mCpSelBookBrk); mCpSel.Scr->search(l_tagName005[i])->hide(); } + J2DPane* namePane = mCpSel.Scr->search('name_n'); - namePane->setAnimation(field_0x029c); - field_0x029c->setFrame(0.0f); + namePane->setAnimation(mCpSelBck); + mCpSelBck->setFrame(0.0f); namePane->animationTransform(); namePane->setAnimation((J2DAnmTransform*)NULL); + mSelIcon2 = new dSelect_cursor_c(0, 1.0f, NULL); JUT_ASSERT(5406, mSelIcon2 != NULL); mSelIcon2->setParam(0.96f, 0.94f, 0.03f, 0.7f, 0.7f); - Vec local_24 = field_0x02a4[0]->getGlobalVtxCenter(false, 0); - mSelIcon2->setPos(local_24.x, local_24.y, field_0x02a4[0]->getPanePtr(), true); + Vec center = mCpSelPane[0]->getGlobalVtxCenter(false, 0); + mSelIcon2->setPos(center.x, center.y, mCpSelPane[0]->getPanePtr(), true); mSelIcon2->setAlphaRate(0.0f); + for (int i = 0; i < 2; i++) { - mpFileInfo[i] = new dFile_info_c(mpArchive, 0); - mpFileInfo[i]->setBasePane(mCpSel.Scr->search(l_tagName13[i + 1])); + mCpFileInfo[i] = new dFile_info_c(mpArchive, 0); + mCpFileInfo[i]->setBasePane(mCpSel.Scr->search(l_tagName13[i + 1])); } - mCpSel.field_0x08 = false; + + mCpSel.isShow = false; } void dFile_select_c::screenSetYesNo() { @@ -2541,7 +3274,10 @@ void dFile_select_c::screenSetYesNo() { static u64 l_tagName013[2] = {'w_no_t', 'w_yes_t'}; static u64 l_tagName013U[2] = {'f_no_t', 'f_yes_t'}; static u64 l_tagName9[2] = {'w_no_m', 'w_yes_m'}; - static u64 l_tagName10[2] = {'w_no_g', 'w_yes_g',}; + static u64 l_tagName10[2] = { + 'w_no_g', + 'w_yes_g', + }; static u64 l_tagName11[2] = {'w_no_gr', 'w_yes_gr'}; static u8 l_msgNum2[2] = {0x08, 0x07}; @@ -2549,47 +3285,53 @@ void dFile_select_c::screenSetYesNo() { JUT_ASSERT(5435, mYnSel.ScrYn != NULL); mYnSel.ScrYn->setPriority("zelda_file_select_yes_no_window.blo", 0x1100000, mpArchive); dPaneClass_showNullPane(mYnSel.ScrYn); + void* bck = JKRGetNameResource("zelda_file_select_yes_no_window.bck", mpArchive); - field_0x0310 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); - field_0x0314 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); - field_0x008c = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); - field_0x0310->searchUpdateMaterialID(mYnSel.ScrYn); - field_0x0314->searchUpdateMaterialID(mYnSel.ScrYn); - field_0x008c->searchUpdateMaterialID(mYnSel.ScrYn); + mYnSelBck = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + mYnSelBck2 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + mYnSelBck3 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + mYnSelBck->searchUpdateMaterialID(mYnSel.ScrYn); + mYnSelBck2->searchUpdateMaterialID(mYnSel.ScrYn); + mYnSelBck3->searchUpdateMaterialID(mYnSel.ScrYn); + for (int i = 0; i < 2; i++) { - field_0x00f0[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName012[i], 0, NULL); + mYnSelPane[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName012[i], 0, NULL); #if VERSION == VERSION_GCN_JPN - field_0x01c0[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName013[i], 0, NULL); + mYnSelTxtPane[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName013[i], 0, NULL); mYnSel.ScrYn->search(l_tagName013U[i])->hide(); #else - field_0x01c0[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName013U[i], 0, NULL); + mYnSelTxtPane[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName013U[i], 0, NULL); mYnSel.ScrYn->search(l_tagName013[i])->hide(); #endif - ((J2DTextBox*)field_0x01c0[i]->getPanePtr())->setFont(mDoExt_getMesgFont()); - char acStack_30[16]; - fopMsgM_messageGet(acStack_30, l_msgNum2[i]); - ((J2DTextBox*)field_0x01c0[i]->getPanePtr())->setString(acStack_30); + ((J2DTextBox*)mYnSelTxtPane[i]->getPanePtr())->setFont(mDoExt_getMesgFont()); + + char textBuf[16]; + fopMsgM_messageGet(textBuf, l_msgNum2[i]); + ((J2DTextBox*)mYnSelTxtPane[i]->getPanePtr())->setString(textBuf); } + void* bpk = JKRGetNameResource("zelda_file_select_yes_no_window.bpk", mpArchive); JUT_ASSERT(5483, bpk != NULL); - field_0x0318 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); - field_0x0318->searchUpdateMaterialID(mYnSel.ScrYn); - field_0x031c = 0; + mYnSelBpk = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); + mYnSelBpk->searchUpdateMaterialID(mYnSel.ScrYn); + mYnSelBpkFrame = 0; + void* btk = JKRGetNameResource("zelda_file_select_yes_no_window.btk", mpArchive); JUT_ASSERT(5493, btk != NULL); - field_0x0320 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); - field_0x0320->searchUpdateMaterialID(mYnSel.ScrYn); - field_0x0324 = 0; - for (int i = 0; i < 2; i++) { - field_0x01a0[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName9[i], 0, NULL); - field_0x01a8[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName10[i], 0, NULL); - field_0x01b0[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName11[i], 0, NULL); + mYnSelBtk = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); + mYnSelBtk->searchUpdateMaterialID(mYnSel.ScrYn); + mYnSelBtkFrame = 0; - field_0x01a0[i]->getPanePtr()->setAnimation(field_0x0318); - field_0x01a8[i]->getPanePtr()->setAnimation(field_0x0318); - field_0x01b0[i]->getPanePtr()->setAnimation(field_0x0318); - field_0x01a8[i]->getPanePtr()->setAnimation(field_0x0320); - field_0x01b0[i]->getPanePtr()->setAnimation(field_0x0320); + for (int i = 0; i < 2; i++) { + mYnSelPane_m[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName9[i], 0, NULL); + mYnSelPane_g[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName10[i], 0, NULL); + mYnSelPane_gr[i] = new CPaneMgr(mYnSel.ScrYn, l_tagName11[i], 0, NULL); + + mYnSelPane_m[i]->getPanePtr()->setAnimation(mYnSelBpk); + mYnSelPane_g[i]->getPanePtr()->setAnimation(mYnSelBpk); + mYnSelPane_gr[i]->getPanePtr()->setAnimation(mYnSelBpk); + mYnSelPane_g[i]->getPanePtr()->setAnimation(mYnSelBtk); + mYnSelPane_gr[i]->getPanePtr()->setAnimation(mYnSelBtk); } } @@ -2606,49 +3348,55 @@ void dFile_select_c::screenSet3Menu() { JUT_ASSERT(5530, m3mSel.Scr3m != NULL); m3mSel.Scr3m->setPriority("zelda_file_select_3menu_window.blo", 0x1100000, mpArchive); dPaneClass_showNullPane(m3mSel.Scr3m); + void* bck = JKRGetNameResource("zelda_file_select_3menu_window.bck", mpArchive); - field_0x0328 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); - field_0x032c = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); - field_0x0328->searchUpdateMaterialID(m3mSel.Scr3m); - field_0x032c->searchUpdateMaterialID(m3mSel.Scr3m); + m3mBck = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + m3mBck2 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + m3mBck->searchUpdateMaterialID(m3mSel.Scr3m); + m3mBck2->searchUpdateMaterialID(m3mSel.Scr3m); + void* bpk = JKRGetNameResource("zelda_file_select_3menu_window.bpk", mpArchive); JUT_ASSERT(5552, bpk != NULL); - field_0x0330 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); - field_0x0330->searchUpdateMaterialID(m3mSel.Scr3m); - field_0x0334 = 0; + m3mBpk = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); + m3mBpk->searchUpdateMaterialID(m3mSel.Scr3m); + m3mBpkFrame = 0; + void* btk = JKRGetNameResource("zelda_file_select_3menu_window.btk", mpArchive); JUT_ASSERT(5562, btk != NULL); - field_0x0338 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); - field_0x0338->searchUpdateMaterialID(m3mSel.Scr3m); - field_0x033c = 0; - field_0x0118 = m3mSel.Scr3m->search('wmenu_n'); - field_0x0118->setAnimation(field_0x0328); - field_0x0328->setFrame(799.0f); - field_0x0118->animationTransform(); + m3mBtk = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); + m3mBtk->searchUpdateMaterialID(m3mSel.Scr3m); + m3mBtkFrame = 0; + + m3mMenuPane = m3mSel.Scr3m->search('wmenu_n'); + m3mMenuPane->setAnimation(m3mBck); + m3mBck->setFrame(799.0f); + m3mMenuPane->animationTransform(); + for (int i = 0; i < 3; i++) { - field_0x0340[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName1[i], 0, NULL); + m3mSelPane[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName1[i], 0, NULL); #if VERSION == VERSION_GCN_JPN - mpPaneMgr2[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName011[i], 0, NULL); + m3mSelTextPane[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName011[i], 0, NULL); m3mSel.Scr3m->search(l_tagName011U[i])->hide(); #else - mpPaneMgr2[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName011U[i], 0, NULL); + m3mSelTextPane[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName011U[i], 0, NULL); m3mSel.Scr3m->search(l_tagName011[i])->hide(); #endif - ((J2DTextBox*)mpPaneMgr2[i]->getPanePtr())->setFont(mDoExt_getMesgFont()); - char acStack_30[32]; - fopMsgM_messageGet(acStack_30, l_msgNum[i]); - ((J2DTextBox*)mpPaneMgr2[i]->getPanePtr())->setString(acStack_30); + ((J2DTextBox*)m3mSelTextPane[i]->getPanePtr())->setFont(mDoExt_getMesgFont()); + char textbuf[32]; + fopMsgM_messageGet(textbuf, l_msgNum[i]); + ((J2DTextBox*)m3mSelTextPane[i]->getPanePtr())->setString(textbuf); - mpPaneAlpha1[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName6[i], 0, NULL); - mpPaneAlpha2[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName7[i], 0, NULL); - mpPaneAlpha3[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName8[i], 0, NULL); + m3mSelPane_mo[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName6[i], 0, NULL); + m3mSelPane_g[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName7[i], 0, NULL); + m3mSelPane_gr[i] = new CPaneMgr(m3mSel.Scr3m, l_tagName8[i], 0, NULL); - mpPaneAlpha1[i]->getPanePtr()->setAnimation(field_0x0330); - mpPaneAlpha2[i]->getPanePtr()->setAnimation(field_0x0330); - mpPaneAlpha3[i]->getPanePtr()->setAnimation(field_0x0330); - mpPaneAlpha2[i]->getPanePtr()->setAnimation(field_0x0338); - mpPaneAlpha3[i]->getPanePtr()->setAnimation(field_0x0338); + m3mSelPane_mo[i]->getPanePtr()->setAnimation(m3mBpk); + m3mSelPane_g[i]->getPanePtr()->setAnimation(m3mBpk); + m3mSelPane_gr[i]->getPanePtr()->setAnimation(m3mBpk); + + m3mSelPane_g[i]->getPanePtr()->setAnimation(m3mBtk); + m3mSelPane_gr[i]->getPanePtr()->setAnimation(m3mBtk); } } @@ -2656,100 +3404,116 @@ void dFile_select_c::screenSetDetail() { mSelDt.ScrDt = new J2DScreen(); JUT_ASSERT(5622, mSelDt.ScrDt != NULL); mSelDt.ScrDt->setPriority("zelda_file_select_details.blo", 0x1100000, mpArchive); + void* btk = JKRGetNameResource("zelda_file_select_details.btk", mpArchive); JUT_ASSERT(5628, btk != NULL); - field_0x03a0 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); - mSelDt.ScrDt->setAnimation(field_0x03a0); - field_0x03a4 = 0; + mSelDtBtk = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); + mSelDt.ScrDt->setAnimation(mSelDtBtk); + mSelDtBtkFrame = 0; + mSelDt.mpPane2 = mSelDt.ScrDt->search('n_all'); - field_0x03a8 = new CPaneMgr(mSelDt.ScrDt, 'mset_p_n', 0, NULL); - mpFileSelect3d->setBasePane(field_0x03a8); + mSelDtPane_mset = new CPaneMgr(mSelDt.ScrDt, 'mset_p_n', 0, NULL); + + mpFileSelect3d->setBasePane(mSelDtPane_mset); mpFileSelect3d->setBase2Pane(fileSel.Scr->search('w_sub_n')); + mSelDt.ScrDt->search('d_win_n')->setUserInfo('n_43'); } void dFile_select_c::setWakuAnm() { field_0x0098->setFrame(3000.0f); + for (int i = 0; i < 3; i++) { - field_0x0164[i]->getPanePtr()->setAnimation(field_0x0098); - field_0x0170[i]->getPanePtr()->setAnimation(field_0x0098); - field_0x017c[i]->getPanePtr()->setAnimation(field_0x0098); - field_0x0164[i]->getPanePtr()->animationTransform(); - field_0x0170[i]->getPanePtr()->animationTransform(); - field_0x017c[i]->getPanePtr()->animationTransform(); - field_0x0164[i]->setAlpha(0); - field_0x0170[i]->setAlpha(0); - field_0x017c[i]->setAlpha(0); + mSelFileMoyoPane[i]->getPanePtr()->setAnimation(field_0x0098); + mSelFileGoldPane[i]->getPanePtr()->setAnimation(field_0x0098); + mSelFileGold2Pane[i]->getPanePtr()->setAnimation(field_0x0098); + mSelFileMoyoPane[i]->getPanePtr()->animationTransform(); + mSelFileGoldPane[i]->getPanePtr()->animationTransform(); + mSelFileGold2Pane[i]->getPanePtr()->animationTransform(); + mSelFileMoyoPane[i]->setAlpha(0); + mSelFileGoldPane[i]->setAlpha(0); + mSelFileGold2Pane[i]->setAlpha(0); } } void dFile_select_c::displayInit() { field_0x03b1 = 0; - mSelectEnd = false; - field_0x03ac = g_fsHIO.field_0x000b; + mIsSelectEnd = false; + mWaitTimer = g_fsHIO.appear_display_wait_frames; field_0x00b8 = 0; field_0x014a = false; field_0x0360 = false; field_0x0108 = false; field_0x021e = 0; + + #if PLATFORM_GCN field_0x00b9 = 0; field_0x014b = false; + #endif + field_0x0281 = false; field_0x0283 = false; mDoMemCd_clearProbeStat(); + field_0x0248 = false; field_0x024a = false; field_0x0249 = false; field_0x024b = false; - field_0x0240->setAlpha(0); - field_0x0244->setAlpha(0); - field_0x0238->setAlpha(0x80); - field_0x023c->setAlpha(0x80); - field_0x026f = 0; - field_0x0271 = 0; + + mModoruTxtPane->setAlpha(0); + mKetteiTxtPane->setAlpha(0); + mBbtnPane->setAlpha(0x80); + mAbtnPane->setAlpha(0x80); + + mDataSelProc = DATASELPROC_MEMCARD_CHECK_MAIN; + mCardCheckProc = MEMCARDCHECKPROC_STAT_CHECK; } void dFile_select_c::setSaveData() { - dSv_save_c* pSave = (dSv_save_c*)mSave; - for (int i = 0; i < 3; i++) { - int res = field_0x0070[i]->setSaveData(pSave, mDoMemCdRWm_TestCheckSumGameData(pSave), i); + dSv_save_c* pSave = (dSv_save_c*)mSaveData; + for (int i = 0; i < SAVEDATA_NUM; i++) { + int res = mFileInfo[i]->setSaveData(pSave, mDoMemCdRWm_TestCheckSumGameData(pSave), i); if (res == -1) { - field_0x025b[i] = 1; - mDataNew[i] = 0; + mIsNoData[i] = true; + mIsDataNew[i] = false; } else { - mDataNew[i] = res; - field_0x025b[i] = 0; + mIsDataNew[i] = res; + mIsNoData[i] = false; } - pSave = (dSv_save_c*)((u8*)pSave + 0xa94); + pSave = (dSv_save_c*)((u8*)pSave + SAVEDATA_SIZE); } } -void dFile_select_c::headerTxtSet(u16 param_1, u8 param_2, u8 param_3) { - static f32 fontsize[2] = {21.0f, 27.0f}; -#if VERSION == VERSION_GCN_JPN - static f32 linespace[2] = {22.0f, 20.0f}; - static f32 charspace[2] = {2.0f, 3.0f}; -#else - static f32 linespace[2] = {21.0f, 20.0f}; - static f32 charspace[2] = {0.0f, 0.0f}; -#endif - - u8 uVar1 = field_0x021c ^ 1; +void dFile_select_c::headerTxtSet(u16 i_msgId, u8 i_type, u8 param_3) { + u8 dispIdx = mHeaderTxtDispIdx ^ 1; if (param_3 != 0) { - uVar1 = field_0x021c; + dispIdx = mHeaderTxtDispIdx; } - if (param_1 == 0xffff) { - strcpy(field_0x0214[uVar1], ""); + + if (i_msgId == 0xFFFF) { + strcpy(mHeaderStringPtr[dispIdx], ""); } else { - ((J2DTextBox*)field_0x020c[uVar1]->getPanePtr())->setFont(fileSel.mpMessageFont[param_2]); - ((J2DTextBox*)field_0x020c[uVar1]->getPanePtr())->setFontSize(fontsize[param_2], fontsize[param_2]); - ((J2DTextBox*)field_0x020c[uVar1]->getPanePtr())->setLineSpace(linespace[param_2]); - ((J2DTextBox*)field_0x020c[uVar1]->getPanePtr())->setCharSpace(charspace[param_2]); - fileSel.mpMessageString->getString(param_1, ((J2DTextBox*)field_0x020c[uVar1]->getPanePtr()), NULL, fileSel.mpMessageFont[param_2], NULL, 0); + static f32 fontsize[2] = {21.0f, 27.0f}; + #if VERSION == VERSION_GCN_JPN + static f32 linespace[2] = {22.0f, 20.0f}; + static f32 charspace[2] = {2.0f, 3.0f}; + #else + static f32 linespace[2] = {21.0f, 20.0f}; + static f32 charspace[2] = {0.0f, 0.0f}; + #endif + + ((J2DTextBox*)mHeaderTxtPane[dispIdx]->getPanePtr())->setFont(fileSel.font[i_type]); + ((J2DTextBox*)mHeaderTxtPane[dispIdx]->getPanePtr())->setFontSize(fontsize[i_type], fontsize[i_type]); + ((J2DTextBox*)mHeaderTxtPane[dispIdx]->getPanePtr())->setLineSpace(linespace[i_type]); + ((J2DTextBox*)mHeaderTxtPane[dispIdx]->getPanePtr())->setCharSpace(charspace[i_type]); + fileSel.mMessageString->getString(i_msgId, + ((J2DTextBox*)mHeaderTxtPane[dispIdx]->getPanePtr()), NULL, + fileSel.font[i_type], NULL, 0); } + if (param_3 == 0) { - field_0x020c[field_0x021c]->alphaAnimeStart(0); - field_0x020c[field_0x021c ^ 1]->alphaAnimeStart(0); + mHeaderTxtPane[mHeaderTxtDispIdx]->alphaAnimeStart(0); + mHeaderTxtPane[mHeaderTxtDispIdx ^ 1]->alphaAnimeStart(0); field_0x021d = 0; } } @@ -2757,44 +3521,43 @@ void dFile_select_c::headerTxtSet(u16 param_1, u8 param_2, u8 param_3) { bool dFile_select_c::headerTxtChangeAnm() { if (field_0x021d != 0) { return true; - } else { - bool ret = false; - - bool alphaAnime1 = field_0x020c[field_0x021c]->alphaAnime(g_fsHIO.field_0x0007, 0xFF, 0, 0); - bool alphaAnime2 = - field_0x020c[field_0x021c ^ 1]->alphaAnime(g_fsHIO.field_0x0007, 0, 0xFF, 0); - int msgKeyWaitTimer = dMeter2Info_getMsgKeyWaitTimer(); - - if (alphaAnime1 == true && alphaAnime2 == true && msgKeyWaitTimer == 0) { - field_0x021c ^= 1; - field_0x021d = 1; - ret = true; - } - - return ret; } + + bool ret = false; + + bool alphaAnime1 = mHeaderTxtPane[mHeaderTxtDispIdx]->alphaAnime(g_fsHIO.char_switch_frames, 0xFF, 0, 0); + bool alphaAnime2 = mHeaderTxtPane[mHeaderTxtDispIdx ^ 1]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xFF, 0); + int msgKeyWaitTimer = dMeter2Info_getMsgKeyWaitTimer(); + + if (alphaAnime1 == true && alphaAnime2 == true && msgKeyWaitTimer == 0) { + mHeaderTxtDispIdx ^= 1; + field_0x021d = 1; + ret = true; + } + + return ret; } void dFile_select_c::modoruTxtChange(u8 param_1) { if (param_1 != 0) { - fopMsgM_messageGet(field_0x0250, 981); + fopMsgM_messageGet(mModoruStringPtr, 981); field_0x024c = 1; } else { - fopMsgM_messageGet(field_0x0250, 84); + fopMsgM_messageGet(mModoruStringPtr, 84); field_0x024c = 0; } } void dFile_select_c::modoruTxtDispAnmInit(u8 param_1) { field_0x024a = param_1; - if ((param_1 != 0 || field_0x0240->getAlpha() != 0) && - (param_1 != 1 || field_0x0240->getAlpha() != 0xff)) + if ((param_1 != 0 || mModoruTxtPane->getAlpha() != 0) && + (param_1 != 1 || mModoruTxtPane->getAlpha() != 0xff)) { - field_0x0240->alphaAnimeStart(0); - field_0x0238->alphaAnimeStart(0); + mModoruTxtPane->alphaAnimeStart(0); + mBbtnPane->alphaAnimeStart(0); } else { - field_0x0240->alphaAnimeStart(g_fsHIO.field_0x0007); - field_0x0238->alphaAnimeStart(g_fsHIO.field_0x0007); + mModoruTxtPane->alphaAnimeStart(g_fsHIO.char_switch_frames); + mBbtnPane->alphaAnimeStart(g_fsHIO.char_switch_frames); } } @@ -2802,29 +3565,30 @@ bool dFile_select_c::modoruTxtDispAnm() { bool iVar1; bool iVar2; if (field_0x024a != 0) { - iVar1 = field_0x0240->alphaAnime(g_fsHIO.field_0x0007, 0, 0xff, 0); - iVar2 = field_0x0238->alphaAnime(g_fsHIO.field_0x0007, 0x80, 0xff, 0); + iVar1 = mModoruTxtPane->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xff, 0); + iVar2 = mBbtnPane->alphaAnime(g_fsHIO.char_switch_frames, 0x80, 0xff, 0); } else { - iVar1 = field_0x0240->alphaAnime(g_fsHIO.field_0x0007, 0xff, 0, 0); - iVar2 = field_0x0238->alphaAnime(g_fsHIO.field_0x0007, 0xff, 0x80, 0); + iVar1 = mModoruTxtPane->alphaAnime(g_fsHIO.char_switch_frames, 0xff, 0, 0); + iVar2 = mBbtnPane->alphaAnime(g_fsHIO.char_switch_frames, 0xff, 0x80, 0); } if (iVar1 == true && iVar2 == true) { return true; - } + } + return false; } void dFile_select_c::ketteiTxtDispAnmInit(u8 param_1) { field_0x024b = param_1; - if ((param_1 != 0 || field_0x0244->getAlpha() != 0) && - (param_1 != 1 || field_0x0244->getAlpha() != 0xff)) + if ((param_1 != 0 || mKetteiTxtPane->getAlpha() != 0) && + (param_1 != 1 || mKetteiTxtPane->getAlpha() != 0xff)) { - field_0x0244->alphaAnimeStart(0); - field_0x023c->alphaAnimeStart(0); + mKetteiTxtPane->alphaAnimeStart(0); + mAbtnPane->alphaAnimeStart(0); } else { - field_0x0244->alphaAnimeStart(g_fsHIO.field_0x0007); - field_0x023c->alphaAnimeStart(g_fsHIO.field_0x0007); + mKetteiTxtPane->alphaAnimeStart(g_fsHIO.char_switch_frames); + mAbtnPane->alphaAnimeStart(g_fsHIO.char_switch_frames); } } @@ -2832,23 +3596,24 @@ bool dFile_select_c::ketteiTxtDispAnm() { bool iVar1; bool iVar2; if (field_0x024b != 0) { - iVar1 = field_0x0244->alphaAnime(g_fsHIO.field_0x0007, 0, 0xff, 0); - iVar2 = field_0x023c->alphaAnime(g_fsHIO.field_0x0007, 0x80, 0xff, 0); + iVar1 = mKetteiTxtPane->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xff, 0); + iVar2 = mAbtnPane->alphaAnime(g_fsHIO.char_switch_frames, 0x80, 0xff, 0); } else { - iVar1 = field_0x0244->alphaAnime(g_fsHIO.field_0x0007, 0xff, 0, 0); - iVar2 = field_0x023c->alphaAnime(g_fsHIO.field_0x0007, 0xff, 0x80, 0); + iVar1 = mKetteiTxtPane->alphaAnime(g_fsHIO.char_switch_frames, 0xff, 0, 0); + iVar2 = mAbtnPane->alphaAnime(g_fsHIO.char_switch_frames, 0xff, 0x80, 0); } if (iVar1 == true && iVar2 == true) { return true; - } + } + return false; } void dFile_select_c::selectWakuAlpahAnmInit(u8 param_1, u8 param_2, u8 param_3, u8 param_4) { - field_0x0164[param_1]->alphaAnimeStart(0); - field_0x0170[param_1]->alphaAnimeStart(0); - field_0x017c[param_1]->alphaAnimeStart(0); + mSelFileMoyoPane[param_1]->alphaAnimeStart(0); + mSelFileGoldPane[param_1]->alphaAnimeStart(0); + mSelFileGold2Pane[param_1]->alphaAnimeStart(0); field_0x0194[param_1] = param_2; field_0x0197[param_1] = param_3; field_0x019a[param_1] = param_4; @@ -2858,80 +3623,84 @@ bool dFile_select_c::selectWakuAlpahAnm(u8 param_1) { if (param_1 == 0xff) { return true; } + bool rv = false; - bool iVar2 = field_0x0164[param_1]->alphaAnime(field_0x019a[param_1], field_0x0194[param_1], field_0x0197[param_1], 0); - bool iVar3 = field_0x0170[param_1]->alphaAnime(field_0x019a[param_1], field_0x0194[param_1], field_0x0197[param_1], 0); - bool iVar4 = field_0x017c[param_1]->alphaAnime(field_0x019a[param_1], field_0x0194[param_1], field_0x0197[param_1], 0); + bool iVar2 = mSelFileMoyoPane[param_1]->alphaAnime(field_0x019a[param_1], field_0x0194[param_1], + field_0x0197[param_1], 0); + bool iVar3 = mSelFileGoldPane[param_1]->alphaAnime(field_0x019a[param_1], field_0x0194[param_1], + field_0x0197[param_1], 0); + bool iVar4 = mSelFileGold2Pane[param_1]->alphaAnime(field_0x019a[param_1], field_0x0194[param_1], + field_0x0197[param_1], 0); if (iVar2 == true && iVar3 == true && iVar4 == true) { rv = true; } + return rv; } void dFile_select_c::selFileCursorShow() { - field_0x0164[mSelectNum]->setAlpha(0xff); - field_0x0170[mSelectNum]->setAlpha(0xff); - field_0x017c[mSelectNum]->setAlpha(0xff); + mSelFileMoyoPane[mSelectNum]->setAlpha(0xff); + mSelFileGoldPane[mSelectNum]->setAlpha(0xff); + mSelFileGold2Pane[mSelectNum]->setAlpha(0xff); - Vec local_1c = field_0x00bc[mSelectNum]->getGlobalVtxCenter(false, 0); - mSelIcon->setPos(local_1c.x, local_1c.y, field_0x00bc[mSelectNum]->getPanePtr(), true); + Vec local_1c = mSelFilePanes[mSelectNum]->getGlobalVtxCenter(false, 0); + mSelIcon->setPos(local_1c.x, local_1c.y, mSelFilePanes[mSelectNum]->getPanePtr(), true); mSelIcon->setAlphaRate(1.0f); mSelIcon->setParam(0.96f, 0.94f, 0.03f, 0.7f, 0.7f); } void dFile_select_c::menuWakuAlpahAnmInit(u8 i_idx, u8 param_1, u8 param_2, u8 param_3) { - mpPaneAlpha1[i_idx]->alphaAnimeStart(0); - mpPaneAlpha2[i_idx]->alphaAnimeStart(0); - mpPaneAlpha3[i_idx]->alphaAnimeStart(0); + m3mSelPane_mo[i_idx]->alphaAnimeStart(0); + m3mSelPane_g[i_idx]->alphaAnimeStart(0); + m3mSelPane_gr[i_idx]->alphaAnimeStart(0); field_0x0388[i_idx] = param_1; field_0x038b[i_idx] = param_2; field_0x038e[i_idx] = param_3; - mpPaneMgr2[i_idx]->colorAnimeStart(0); + m3mSelTextPane[i_idx]->colorAnimeStart(0); } bool dFile_select_c::menuWakuAlpahAnm(u8 param_1) { bool rv = false; - bool iVar1 = mpPaneAlpha1[param_1]->alphaAnime(field_0x038e[param_1], field_0x0388[param_1], + bool iVar1 = m3mSelPane_mo[param_1]->alphaAnime(field_0x038e[param_1], field_0x0388[param_1], field_0x038b[param_1], 0); - bool iVar2 = mpPaneAlpha2[param_1]->alphaAnime(field_0x038e[param_1], field_0x0388[param_1], + bool iVar2 = m3mSelPane_g[param_1]->alphaAnime(field_0x038e[param_1], field_0x0388[param_1], field_0x038b[param_1], 0); - bool iVar3 = mpPaneAlpha3[param_1]->alphaAnime(field_0x038e[param_1], field_0x0388[param_1], + bool iVar3 = m3mSelPane_gr[param_1]->alphaAnime(field_0x038e[param_1], field_0x0388[param_1], field_0x038b[param_1], 0); - mpPaneMgr2[param_1]->colorAnime(field_0x038e[param_1], mpPaneMgr2[param_1]->getInitBlack(), - mpPaneMgr2[param_1]->getInitBlack(), + bool var_r25 = m3mSelTextPane[param_1]->colorAnime(field_0x038e[param_1], m3mSelTextPane[param_1]->getInitBlack(), + m3mSelTextPane[param_1]->getInitBlack(), JUtility::TColor(0xff, 0xff, 0xff, 0xff), JUtility::TColor(0x96, 0x96, 0x96, 0xff), 0); - if (((iVar1 == 1) && (iVar2 == 1)) && (iVar3 == 1)) { + if (iVar1 == 1 && iVar2 == 1 && iVar3 == 1) { rv = true; } + return rv; } void dFile_select_c::menuCursorShow() { - if (mSelectMenuNum == 0xff) { - return; - } - ((J2DTextBox*)mpPaneMgr2[mSelectMenuNum]->getPanePtr()) - ->setWhite(JUtility::TColor(0xff, 0xff, 0xff, 0xff)); - mpPaneAlpha1[mSelectMenuNum]->setAlpha(0xff); - mpPaneAlpha2[mSelectMenuNum]->setAlpha(0xff); - mpPaneAlpha3[mSelectMenuNum]->setAlpha(0xff); - Vec local_24 = field_0x0340[mSelectMenuNum]->getGlobalVtxCenter(false, 0); - mSelIcon->setPos(local_24.x, local_24.y, field_0x0340[mSelectMenuNum]->getPanePtr(), true); - mSelIcon->setAlphaRate(1.0f); - mSelIcon->setParam(0.96f, 0.84f, 0.06f, 0.5f, 0.5f); -} + if (mSelectMenuNum != 0xff) { + ((J2DTextBox*)m3mSelTextPane[mSelectMenuNum]->getPanePtr())->setWhite(JUtility::TColor(0xff, 0xff, 0xff, 0xff)); + m3mSelPane_mo[mSelectMenuNum]->setAlpha(0xff); + m3mSelPane_g[mSelectMenuNum]->setAlpha(0xff); + m3mSelPane_gr[mSelectMenuNum]->setAlpha(0xff); + Vec local_24 = m3mSelPane[mSelectMenuNum]->getGlobalVtxCenter(false, 0); + mSelIcon->setPos(local_24.x, local_24.y, m3mSelPane[mSelectMenuNum]->getPanePtr(), true); + mSelIcon->setAlphaRate(1.0f); + mSelIcon->setParam(0.96f, 0.84f, 0.06f, 0.5f, 0.5f); + } +} void dFile_select_c::yesnoWakuAlpahAnmInit(u8 param_1, u8 param_2, u8 param_3, u8 param_4) { if (param_1 != 0xff) { - field_0x01a0[param_1]->alphaAnimeStart(0); - field_0x01a8[param_1]->alphaAnimeStart(0); - field_0x01b0[param_1]->alphaAnimeStart(0); + mYnSelPane_m[param_1]->alphaAnimeStart(0); + mYnSelPane_g[param_1]->alphaAnimeStart(0); + mYnSelPane_gr[param_1]->alphaAnimeStart(0); field_0x01b8[param_1] = param_2; field_0x01ba[param_1] = param_3; field_0x01bc[param_1] = param_4; - field_0x01c0[param_1]->colorAnimeStart(0); + mYnSelTxtPane[param_1]->colorAnimeStart(0); } } @@ -2942,20 +3711,22 @@ bool dFile_select_c::yesnoWakuAlpahAnm(u8 param_1) { bool iVar3 = true; bool iVar2 = true; if (param_1 != 0xff) { - iVar5 = field_0x01a0[param_1]->alphaAnime(field_0x01bc[param_1], field_0x01b8[param_1], + iVar5 = mYnSelPane_m[param_1]->alphaAnime(field_0x01bc[param_1], field_0x01b8[param_1], field_0x01ba[param_1], 0); - iVar4 = field_0x01a8[param_1]->alphaAnime(field_0x01bc[param_1], field_0x01b8[param_1], + iVar4 = mYnSelPane_g[param_1]->alphaAnime(field_0x01bc[param_1], field_0x01b8[param_1], field_0x01ba[param_1], 0); - iVar3 = field_0x01b0[param_1]->alphaAnime(field_0x01bc[param_1], field_0x01b8[param_1], + iVar3 = mYnSelPane_gr[param_1]->alphaAnime(field_0x01bc[param_1], field_0x01b8[param_1], field_0x01ba[param_1], 0); - iVar2 = field_0x01c0[param_1]->colorAnime( - field_0x01bc[param_1], field_0x01c0[param_1]->getInitBlack(), - field_0x01c0[param_1]->getInitBlack(), JUtility::TColor(0xff, 0xff, 0xff, 0xff), + iVar2 = mYnSelTxtPane[param_1]->colorAnime( + field_0x01bc[param_1], mYnSelTxtPane[param_1]->getInitBlack(), + mYnSelTxtPane[param_1]->getInitBlack(), JUtility::TColor(0xff, 0xff, 0xff, 0xff), JUtility::TColor(0x96, 0x96, 0x96, 0xff), 0); } + if (iVar5 == true && iVar4 == true && iVar3 == true && iVar2 == true) { rv = true; } + return rv; } @@ -2964,17 +3735,17 @@ void dFile_select_c::_draw() { dComIfGd_set2DOpa(&fileSel); for (int i = 0; i < 3; i++) { - field_0x0070[i]->draw(); + mFileInfo[i]->draw(); } dComIfGd_set2DOpa(&mSelDt); mpFileSelect3d->draw(); - if (mCpSel.field_0x08 != false) { + if (mCpSel.isShow != false) { dComIfGd_set2DOpa(&mCpSel); for (int i = 0; i < 2; i++) { - mpFileInfo[i]->draw(); + mCpFileInfo[i]->draw(); } } @@ -2987,9 +3758,12 @@ void dFile_select_c::_draw() { mpFileWarning->draw(); dComIfGd_set2DOpa(mSelIcon); dComIfGd_set2DOpa(mSelIcon2); - field_0x2378->draw(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(), - mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF(), - false, false, false); + + #if PLATFORM_GCN + mpFadePict->draw(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(), + mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF(), false, false, + false); + #endif } } @@ -3003,10 +3777,10 @@ void dDlst_FileSelDt_c::draw() { MtxP local_98 = (MtxP)&mpPane->getGlbMtx()[0][0]; Mtx auStack_60; Mtx auStack_90; - MTXTrans(auStack_60, mpPane->getWidth() / 2, mpPane->getHeight() / 2, - 0.0f); + MTXTrans(auStack_60, mpPane->getWidth() / 2, mpPane->getHeight() / 2, 0.0f); MTXConcat(local_98, auStack_60, local_98); - MTXScale(auStack_90, mpPane->getWidth() / mpPane2->getWidth(), mpPane->getHeight() / mpPane2->getHeight(), 1.0f); + MTXScale(auStack_90, mpPane->getWidth() / mpPane2->getWidth(), + mpPane->getHeight() / mpPane2->getHeight(), 1.0f); MTXConcat(local_98, auStack_90, local_98); mpPane2->setMtx(local_98); ScrDt->draw(0.0f, 0.0f, grafContext); @@ -3016,7 +3790,8 @@ void dDlst_FileSelCp_c::draw() { J2DGrafContext* grafContext = dComIfGp_getCurrentGrafPort(); MtxP local_98 = (MtxP)&mpPane1->getGlbMtx()[0][0]; Mtx auStack_90; - MTXScale(auStack_90, mpPane1->getWidth() / mpPane2->getWidth(), mpPane1->getHeight() / mpPane2->getHeight(), 1.0f); + MTXScale(auStack_90, mpPane1->getWidth() / mpPane2->getWidth(), + mpPane1->getHeight() / mpPane2->getHeight(), 1.0f); MTXConcat(local_98, auStack_90, local_98); mpPane2->setMtx(local_98); Scr->draw(0.0f, 0.0f, grafContext); @@ -3033,18 +3808,22 @@ void dDlst_FileSel3m_c::draw() { } void dFile_select_c::errorMoveAnmInitSet(int param_1, int param_2) { - field_0x012c->setAnimation(field_0x0090); + mErrorMsgPane->setAnimation(field_0x0090); field_0x0130 = param_1; field_0x0134 = param_2; field_0x0090->setFrame(field_0x0130); - field_0x012c->animationTransform(); + mErrorMsgPane->animationTransform(); + + #if PLATFORM_GCN field_0x014b = true; + #endif } bool dFile_select_c::errorMoveAnm() { + bool ret; if (field_0x0130 != field_0x0134) { if (field_0x0130 < field_0x0134) { - field_0x0130 +=2; + field_0x0130 += 2; if (field_0x0130 > field_0x0134) field_0x0130 = field_0x0134; @@ -3056,56 +3835,138 @@ bool dFile_select_c::errorMoveAnm() { } field_0x0090->setFrame(field_0x0130); - field_0x012c->animationTransform(); - return false; + mErrorMsgPane->animationTransform(); + ret = false; } else { - field_0x012c->setAnimation((J2DAnmTransform*)0); - field_0x0134 == 0xb2b ? field_0x014a = true : field_0x014a = false; + mErrorMsgPane->setAnimation((J2DAnmTransform*)NULL); + + if (field_0x0134 == 0xb2b) { + field_0x014a = true; + } else { + field_0x014a = false; + } + + #if PLATFORM_GCN field_0x014b = false; - return true; + #endif + + ret = true; } + + return ret; } void dFile_select_c::errDispInitSet(int param_1, int param_2) { if (param_2 != 0) { headerTxtSet(0xffff, 0, 0); } else { + #if PLATFORM_GCN headerTxtSet(1, 0, 0); + #else + headerTxtSet(1, 1, 0); + #endif } + + #if PLATFORM_GCN field_0x021e = 0; - field_0x0138[field_0x0148]->setAlpha(0xff); - field_0x0138[field_0x0148 ^ 1]->setAlpha(0); - fileSel.mpMessageString->getString(param_1, (J2DTextBox*)field_0x0138[field_0x0148]->getPanePtr(), NULL, - fileSel.mpMessageFont[0], NULL, 0); - if (field_0x014a || field_0x014b) { + #endif + + mErrorMsgTxtPane[mErrorTxtDispIdx]->setAlpha(0xff); + mErrorMsgTxtPane[mErrorTxtDispIdx ^ 1]->setAlpha(0); + fileSel.mMessageString->getString(param_1, + (J2DTextBox*)mErrorMsgTxtPane[mErrorTxtDispIdx]->getPanePtr(), NULL, + fileSel.font[0], NULL, 0); + #if PLATFORM_GCN + if (field_0x014a || field_0x014b) + #else + if (field_0x014a) + #endif + { errorMoveAnmInitSet(2859, 2849); } - if (field_0x00b8 != 0 || field_0x00b9 != 0) { + + #if PLATFORM_GCN + if (field_0x00b8 != 0 || field_0x00b9 != 0) + #else + if (field_0x00b8 != 0) + #endif + { mpFileSelect3d->drawOff(); selectDataBaseMoveAnmInitSet(33, 1); } + if (field_0x0108 || field_0x0281) { yesnoMenuMoveAnmInitSet(1149, 1139); } + if (field_0x0360 || field_0x0283) { menuMoveAnmInitSet(809, 799); } + if (field_0x0128 != 0) { nameMoveAnmInitSet(3369, 3359); } - if (mCpSel.field_0x08) { + + if (mCpSel.isShow) { copySelMoveAnmInitSet(3369, 3359); } + modoruTxtDispAnmInit(0); ketteiTxtDispAnmInit(0); + + #if PLATFORM_GCN mpFileWarning->init(); + #endif + mSelIcon->setAlphaRate(0.0f); mSelIcon2->setAlphaRate(0.0f); - field_0x0271 = 22; + mCardCheckProc = MEMCARDCHECKPROC_MSG_WINDOW_INIT_OPEN; } +#if PLATFORM_WII || PLATFORM_SHIELD +void dFile_select_c::errDispInitSet(char* i_errMesg) { + headerTxtSet(1, 1, 0); + + mErrorMsgTxtPane[mErrorTxtDispIdx]->setAlpha(0xFF); + mErrorMsgTxtPane[mErrorTxtDispIdx ^ 1]->setAlpha(0); + + strcpy(mErrorMsgStringPtr[mErrorTxtDispIdx], i_errMesg); + + if (field_0x014a) { + errorMoveAnmInitSet(2859, 2849); + } + + if (field_0x00b8 != 0) { + selectDataBaseMoveAnmInitSet(33, 1); + } + + if (field_0x0108 || field_0x0281) { + yesnoMenuMoveAnmInitSet(1149, 1139); + } + + if (field_0x0360 || field_0x0283) { + menuMoveAnmInitSet(809, 799); + } + + if (field_0x0128 != 0) { + nameMoveAnmInitSet(3369, 3359); + } + + if (mCpSel.isShow) { + copySelMoveAnmInitSet(3369, 3359); + } + + modoruTxtDispAnmInit(0); + ketteiTxtDispAnmInit(0); + + mSelIcon->setAlphaRate(0.0f); + mSelIcon2->setAlphaRate(0.0f); + mCardCheckProc = MEMCARDCHECKPROC_MSG_WINDOW_INIT_OPEN; +} +#endif + typedef void (dFile_select_c::*MemCardCheckFuncT)(); -static MemCardCheckFuncT MemCardCheckProc[27] = { +static MemCardCheckFuncT MemCardCheckProc[] = { &dFile_select_c::MemCardStatCheck, &dFile_select_c::MemCardLoadWait, &dFile_select_c::MemCardErrMsgWaitKey, @@ -3133,119 +3994,431 @@ static MemCardCheckFuncT MemCardCheckProc[27] = { &dFile_select_c::MemCardMsgWindowClose, &dFile_select_c::MemCardErrYesNoCursorMoveAnm, &dFile_select_c::MemCardSaveDataClear, + + #if PLATFORM_WII || PLATFORM_SHIELD + &dFile_select_c::nandStatCheck, + &dFile_select_c::gameFileInitSel, + &dFile_select_c::gameFileInitSelDisp, + &dFile_select_c::gameFileInit, + &dFile_select_c::gameFileInitCheck, + &dFile_select_c::MemCardLoadWaitCard, + &dFile_select_c::cardDataCopySel, + &dFile_select_c::cardDataCopySel2Disp, + &dFile_select_c::cardDataCopySel2, + &dFile_select_c::loadWaitNand, + &dFile_select_c::loadNandFile, + #endif }; void dFile_select_c::MemCardCheckMain() { - (this->*MemCardCheckProc[field_0x0271])(); + (this->*MemCardCheckProc[mCardCheckProc])(); } void dFile_select_c::MemCardStatCheck() { +#if PLATFORM_WII + loadFileNAND(); + return; +#endif + u32 status = mDoMemCd_getStatus(0); if (status == 14) { return; } - switch(status) { + +#if PLATFORM_GCN + switch (status) { case 0: errDispInitSet(2, 0); field_0x0280 = false; - field_0x0284 = NULL; - field_0x0273 = 2; - field_0x0290 = &dFile_select_c::noSaveSelDispInit; - field_0x0274 = 3; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = &dFile_select_c::noSaveSelDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_NO_SAVE_SEL_DISP; break; case 8: errDispInitSet(3, 0); field_0x0280 = false; - field_0x0284 = NULL; - field_0x0273 = 2; - field_0x0290 = &dFile_select_c::noSaveSelDispInit; - field_0x0274 = 3; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = &dFile_select_c::noSaveSelDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_NO_SAVE_SEL_DISP; break; case 9: errDispInitSet(4, 0); field_0x0280 = false; - field_0x0284 = NULL; - field_0x0273 = 2; - field_0x0290 = &dFile_select_c::noSaveSelDispInit; - field_0x0274 = 3; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = &dFile_select_c::noSaveSelDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_NO_SAVE_SEL_DISP; break; case 10: errDispInitSet(5, 0); field_0x0280 = false; - field_0x0284 = NULL; - field_0x0273 = 2; - field_0x0290 = &dFile_select_c::noSaveSelDispInit; - field_0x0274 = 3; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = &dFile_select_c::noSaveSelDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_NO_SAVE_SEL_DISP; break; case 6: case 7: errDispInitSet(6, 0); field_0x0280 = true; - field_0x0273 = 5; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_FORMAT_SEL; break; case 11: case 12: errDispInitSet(9, 0); field_0x0280 = false; - field_0x0284 = NULL; - field_0x0273 = 2; - field_0x0290 = &dFile_select_c::noFileSpaceDispInit; - field_0x0274 = 18; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = &dFile_select_c::noFileSpaceDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_NO_FILESPACE_DISP; break; case 2: mDoMemCd_Load(); - field_0x0271 = 1; + mCardCheckProc = MEMCARDCHECKPROC_LOAD_WAIT; break; case 1: errDispInitSet(22, 0); field_0x0280 = true; - field_0x0273 = 13; + mNextCardCheckProc = MEMCARDCHECKPROC_MAKE_GAMEFILE_SEL; + break; + } +#else + switch (status) { + case 8: + case 9: + case 10: + case 6: + case 7: + case 11: + case 12: + case 1: + errDispInitSet(0xEC8, 0); + field_0x0280 = false; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = NULL; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_LOAD_NAND_FILE; + break; + case 0: + default: + if (field_0x4332 == 1) { + field_0x03b1 = 1; + errDispInitSet(0xED0, 0); + field_0x0280 = false; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = NULL; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_LOAD_NAND_FILE; + field_0x4332 = 0; + } else { + loadFileNAND(); + } + break; + case 2: + mDoMemCd_Load(); + mCardCheckProc = MEMCARDCHECKPROC_LOAD_WAIT_CARD; + break; + } +#endif +} + +void dFile_select_c::MemCardLoadWait() { + #if PLATFORM_GCN + int loadRes = mDoMemCd_LoadSync(mSaveData, sizeof(mSaveData), 0); + #else + int loadRes = mDoMemCd_LoadSyncNAND(mSaveData, sizeof(mSaveData), 0); + #endif + if (loadRes == 0) { + return; + } + + if (loadRes == 1) { + #if DEBUG + if (mDoMemCd_getDataVersion() != 6) { + char errmsg[264]; + // "Savedata version is different\n\nVersion %d\n\nFormatting data." + sprintf(errmsg, "セーブデータのバージョンが違います\n\nバージョン %d\n\nデータを初期化します。", mDoMemCd_getDataVersion()); + errDispInitSet(errmsg); + field_0x0280 = false; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = &dFile_select_c::saveDataClearInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_SAVEDATA_CLEAR; + } else + #endif + { + #if PLATFORM_GCN + if (dComIfGs_getNoFile() != 0) { + dComIfGs_setNoFile(0); + } + #endif + + dataSelectInAnmSet(); + + #if PLATFORM_GCN + if (field_0x014a || field_0x014b) + #else + if (field_0x014a) + #endif + { + errorMoveAnmInitSet(2859, 2849); + } + + if (field_0x0108 || field_0x0281) { + yesnoMenuMoveAnmInitSet(1149, 1139); + } + + if (field_0x0128) { + nameMoveAnmInitSet(3369, 3359); + } + + if (mCpSel.isShow) { + #if PLATFORM_GCN + mSelIcon2->setAlphaRate(0.0f); + #endif + + copySelMoveAnmInitSet(3369, 3359); + } + + #if PLATFORM_GCN + if (field_0x0360 || field_0x0283) { + menuMoveAnmInitSet(809, 799); + } + #endif + + modoruTxtDispAnmInit(0); + headerTxtSet(0xffff, 0, 0); + field_0x021e = 0; + mDataSelProc = DATASELPROC_DATA_SELECT_IN; + } + } else if (loadRes == 2) { + #if PLATFORM_WII || PLATFORM_SHIELD + OS_REPORT("== NAND LOAD ERR %d ==\n", loadRes); + mCardCheckProc = MEMCARDCHECKPROC_NAND_STAT_CHECK; + #else + mCardCheckProc = MEMCARDCHECKPROC_STAT_CHECK; + #endif + } +} + +#if PLATFORM_WII || PLATFORM_SHIELD +void dFile_select_c::nandStatCheck() { + u32 status = mDoMemCd_getStatusNAND(); + + switch (status) { + case 1: + mDoMemCd_LoadNAND(); + mCardCheckProc = MEMCARDCHECKPROC_LOAD_WAIT; + break; + case 0: + errDispInitSet(0xEE8, 0); + field_0x0280 = true; + mNextCardCheckProc = MEMCARDCHECKPROC_MAKE_GAMEFILE_SEL; + break; + case 4: + case 6: + errDispInitSet(0xEDD, 0); + field_0x0280 = true; + mNextCardCheckProc = MEMCARDCHECKPROC_GAMEFILE_INIT_SEL; + break; + case 5: + errDispInitSet(0xEDC, 0); + field_0x0280 = false; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = &dFile_select_c::noSaveSelDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_NO_SAVE_SEL_DISP; + break; + case 7: + errDispInitSet(0xEE3, 0); + field_0x0280 = false; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = &dFile_select_c::iplSelDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_GOTO_IPL_SELECT_DISP; + break; + case 8: + errDispInitSet(0xEE4, 0); + field_0x0280 = false; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = &dFile_select_c::iplSelDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_GOTO_IPL_SELECT_DISP; break; } } -void dFile_select_c::MemCardLoadWait() { - int loadRes = mDoMemCd_LoadSync(mSave, sizeof(mSave), 0); - if (loadRes == 0) { - return; - } - if (loadRes == 1) { - if (dComIfGs_getNoFile() != 0) { - dComIfGs_setNoFile(0); - } - dataSelectInAnmSet(); - if (field_0x014a || field_0x014b) { - errorMoveAnmInitSet(2859, 2849); - } - if (field_0x0108 || field_0x0281) { - yesnoMenuMoveAnmInitSet(1149, 1139); - } - if (field_0x0128) { - nameMoveAnmInitSet(3369, 3359); - } - if (mCpSel.field_0x08) { - mSelIcon2->setAlphaRate(0.0f); - copySelMoveAnmInitSet(3369, 3359); - } +void dFile_select_c::loadFileNAND() { + field_0x03b1 = 1; + s32 ret = mDoMemCd_checkNANDFile(); + mCardCheckProc = MEMCARDCHECKPROC_NAND_STAT_CHECK; +} - if (field_0x0360 || field_0x0283) { - menuMoveAnmInitSet(809, 799); +void dFile_select_c::MemCardLoadWaitCard() { + s32 result = mDoMemCd_LoadSync(mSaveData, SAVEFILE_SIZE, 0); + if (result != 0) { + if (result == 1) { + bool var_r28 = GCtoWiiTimeConvert(); + if (var_r28) { + errDispInitSet(0xEC5, 0); // copy memcard save to wii memory? + field_0x0280 = 1; + mNextCardCheckProc = MEMCARDCHECKPROC_CARD_DATA_COPY_SEL; + field_0x4332 = 1; + } else { + errDispInitSet(0xEC8, 0); // no savefile on memcard. save in wii memory will be loaded instead + field_0x0280 = 0; + mWindowCloseMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + mKeyWaitMsgDispCb = NULL; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_LOAD_NAND_FILE; + } + } else if (result == 2) { + // "\n=== failed to read from memory card ===\n\n" + OS_REPORT("\n=== メモリーカードからの読み込み失敗 ===\n\n"); + loadFileNAND(); } - modoruTxtDispAnmInit(0); - headerTxtSet(0xffff, 0, 0); - field_0x021e = 0; - field_0x026f = 1; - } else if (loadRes == 2) { - field_0x0271 = 0; } } -void dFile_select_c::MemCardErrMsgWaitKey() { - if (cAPICPad_ANY_BUTTON(0) != 0 && dMeter2Info_getMsgKeyWaitTimer() == 0) { - if (field_0x0290 != NULL) { - (this->*field_0x0290)(); +void dFile_select_c::cardDataCopySel() { + if (errYesNoSelect()) { + if (field_0x0268 != 0) { + u32 var_r29 = mDoMemCd_checkNANDFile(); + if (var_r29 == 1) { + errorTxtSet(0xEC9); + field_0x0268 = 0; + field_0x0269 = 1; + yesnoSelectAnmSet(); + field_0x4333 = field_0x0268; + mCardCheckProc = MEMCARDCHECKPROC_CARD_DATA_COPY_SEL2_DISP; + } else { + s32 var_r28 = mDoMemCd_getStatusNAND(); + if (var_r28 == 0) { + field_0x03b1 = 1; + memcpy(field_0x2376, mSaveData, SAVEFILE_SIZE); + setInitSaveData(); + dataSelectInAnmSet(); + + if (field_0x014a) { + errorMoveAnmInitSet(0xB2B, 0xB21); + } + + if (field_0x0108) { + yesnoMenuMoveAnmInitSet(0x47D, 0x473); + } + + headerTxtSet(0xFFFF, 0, 0); + field_0x021e = 0; + setSaveData(); + mDataSelProc = DATASELPROC_DATA_SELECT_IN_COPY; + } else { + mCardCheckProc = MEMCARDCHECKPROC_NAND_STAT_CHECK; + } + } + } else { + #if PLATFORM_SHIELD + cardDataCopyNoSelect(); + #else + field_0x4332 = 0; + loadFileNAND(); + #endif } - field_0x0271 = field_0x0274; + } +} + +void dFile_select_c::cardDataCopySel2Disp() { + bool isErrorTxtChange = errorTxtChangeAnm(); + bool isYnSelMove = yesnoSelectMoveAnm(); + bool isYnWakuAlpha = yesnoWakuAlpahAnm(field_0x0269); + + if (isErrorTxtChange == true && isYnSelMove == true && isYnWakuAlpha == true) { + yesnoCursorShow(); + mCardCheckProc = MEMCARDCHECKPROC_CARD_DATA_COPY_SEL2; + } +} + +void dFile_select_c::cardDataCopySel2() { + if (errYesNoSelect()) { + if (field_0x0268 != 0) { + field_0x03b1 = 1; + memcpy(field_0x2376, mSaveData, SAVEFILE_SIZE); + mDoMemCd_LoadNAND(); + mCardCheckProc = MEMCARDCHECKPROC_LOAD_WAIT_NAND; + } else { + #if PLATFORM_SHIELD + cardDataCopyNoSelect(); + #else + field_0x4332 = 0; + loadFileNAND(); + #endif + } + } +} + +void dFile_select_c::cardDataCopyNoSelect() { + field_0x4332 = 0; + setSaveData(); + dataSelectInAnmSet(); + + if (field_0x014a) { + errorMoveAnmInitSet(0xB2B, 0xB21); + } + + if (field_0x0108) { + yesnoMenuMoveAnmInitSet(0x47D, 0x473); + } + + if (field_0x0128) { + nameMoveAnmInitSet(0xD29, 0xD1F); + } + + if (mCpSel.isShow) { + copySelMoveAnmInitSet(0xD29, 0xD1F); + } + + modoruTxtDispAnmInit(0); + headerTxtSet(0xFFFF, 0, 0); + field_0x021e = 0; + mDataSelProc = DATASELPROC_DATA_SELECT_IN; +} + +void dFile_select_c::loadWaitNand() { + s32 temp_r3 = mDoMemCd_LoadSyncNAND(mSaveData, SAVEFILE_SIZE, 0); + if (temp_r3 != 0) { + if (temp_r3 == 1) { + dataSelectInAnmSet(); + + if (field_0x014a) { + errorMoveAnmInitSet(0xB2B, 0xB21); + } + + if (field_0x0108) { + yesnoMenuMoveAnmInitSet(0x47D, 0x473); + } + + headerTxtSet(0xFFFF, 0, 0); + field_0x021e = 0; + setSaveData(); + mDataSelProc = DATASELPROC_DATA_SELECT_IN_COPY; + } else if (temp_r3 == 2) { + mCardCheckProc = MEMCARDCHECKPROC_NAND_STAT_CHECK; + } + } +} + +void dFile_select_c::loadNandFile() { + loadFileNAND(); +} +#endif + +void dFile_select_c::MemCardErrMsgWaitKey() { + if (cAPICPad_ANY_BUTTON(PAD_1) != 0 && dMeter2Info_getMsgKeyWaitTimer() == 0) { + if (mKeyWaitMsgDispCb != NULL) { + (this->*mKeyWaitMsgDispCb)(); + } + mCardCheckProc = mKeyWaitCardCheckProc; } } @@ -3254,59 +4427,78 @@ void dFile_select_c::noFileSpaceDispInit() { } void dFile_select_c::MemCardNoFileSpaceDisp() { - if (errorTxtChangeAnm() == true) { - field_0x0290 = &dFile_select_c::iplSelDispInit; - field_0x0274 = 19; - field_0x0271 = 2; + bool isErrorTxtChange = errorTxtChangeAnm(); + if (isErrorTxtChange == true) { + mKeyWaitMsgDispCb = &dFile_select_c::iplSelDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_GOTO_IPL_SELECT_DISP; + mCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; } } void dFile_select_c::iplSelDispInit() { + #if PLATFORM_WII + errorTxtSet(0xEE5); + #else errorTxtSet(18); + #endif + ketteiTxtDispAnmInit(1); field_0x0280 = true; yesnoMenuMoveAnmInitSet(0x473, 0x47d); } void dFile_select_c::MemCardGotoIPLSelectDisp() { - bool txhChanged = errorTxtChangeAnm(); - bool yesNoMenuMoved = yesnoMenuMoveAnm(); - bool ketteiTxtDisplayed = ketteiTxtDispAnm(); - if (txhChanged == true && yesNoMenuMoved == true && ketteiTxtDisplayed == true) { + bool isErrorTxtChange = errorTxtChangeAnm(); + bool isYnMenuMove = yesnoMenuMoveAnm(); + bool isKetteiTxtDisp = ketteiTxtDispAnm(); + if (isErrorTxtChange == true && isYnMenuMove == true && isKetteiTxtDisp == true) { yesnoCursorShow(); - field_0x0271 = 20; + mCardCheckProc = MEMCARDCHECKPROC_GOTO_IPL_SELECT; } } void dFile_select_c::MemCardGotoIPLSelect() { if (errYesNoSelect()) { if (field_0x0268) { + #if PLATFORM_GCN field_0x03b1 = 1; - field_0x03ac = g_fsHIO.field_0x000d; - mDoGph_gInf_c::startFadeOut(field_0x03ac); + #endif + + mWaitTimer = g_fsHIO.field_0x000d; + mDoGph_gInf_c::startFadeOut(mWaitTimer); mFadeFlag = true; - field_0x0271 = 21; + mCardCheckProc = MEMCARDCHECKPROC_GOTO_IPL; } else { - yesnoWakuAlpahAnmInit(field_0x0268, 0xff, 0, g_fsHIO.field_0x0008); + yesnoWakuAlpahAnmInit(field_0x0268, 0xff, 0, g_fsHIO.select_box_appear_frames); noSaveSelDispInit(); - field_0x0271 = 3; + mCardCheckProc = MEMCARDCHECKPROC_NO_SAVE_SEL_DISP; } } } void dFile_select_c::MemCardGotoIPL() { - if (field_0x03ac != 0) { - field_0x03ac--; + if (mWaitTimer != 0) { + mWaitTimer--; } else { mHasDrawn = true; mDoGph_gInf_c::startFadeIn(0); mFadeFlag = false; + + #if PLATFORM_GCN mDoRst::onShutdown(); + #else + mDoRst::onReturnToMenu(); + #endif } } void dFile_select_c::noSaveSelDispInit() { + #if PLATFORM_WII + errorTxtSet(0xED9); + #else errorTxtSet(19); + #endif + field_0x0282 = false; if (!field_0x0108) { ketteiTxtDispAnmInit(1); @@ -3328,11 +4520,12 @@ void dFile_select_c::MemCardNoSaveSelDisp() { } else { iVar3 = yesnoWakuAlpahAnm(field_0x0268); } + if (iVar1 == true && iVar3 == true && iVar2 == true) { if (field_0x0280) { yesnoCursorShow(); } - field_0x0271 = 4; + mCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_NO_SAVE_SEL; } } @@ -3343,35 +4536,43 @@ void dFile_select_c::MemCardErrMsgWaitNoSaveSel() { if (field_0x0268 != 0) { setInitSaveData(); - dComIfGs_setCardToMemory((char*)mSave, 0); + dComIfGs_setCardToMemory((u8*)mSaveData, 0); dComIfGs_setNoFile(1); dComIfGs_setDataNum(0); + for (int i = 0; i < 3; i++) { - mDataNew[i] = 1; + mIsDataNew[i] = true; } + headerTxtSet(901, 1, 0); mSelIcon->setAlphaRate(1.0f); - char auStack_38[32]; - dMeter2Info_getString(0x382, auStack_38, 0); - dComIfGs_setPlayerName(auStack_38); - dMeter2Info_getString(899, auStack_38, 0); - dComIfGs_setHorseName(auStack_38); + + char namebuf[32]; + dMeter2Info_getString(0x382, namebuf, 0); + dComIfGs_setPlayerName(namebuf); + dMeter2Info_getString(899, namebuf, 0); + dComIfGs_setHorseName(namebuf); mpName->setNextNameStr(dComIfGs_getPlayerName()); mpName->initial(); + modoruTxtChange(1); nameMoveAnmInitSet(3359, 3369); yesnoMenuMoveAnmInitSet(1149, 1139); errorMoveAnmInitSet(2859, 2849); modoruTxtDispAnmInit(1); ketteiTxtDispAnmInit(1); - field_0x026f = 45; + mDataSelProc = DATASELPROC_TO_NAME_MOVE2; } else { - field_0x0284 = NULL; - field_0x0273 = 0; + mWindowCloseMsgDispCb = NULL; + #if PLATFORM_GCN + mNextCardCheckProc = MEMCARDCHECKPROC_STAT_CHECK; + #else + mNextCardCheckProc = MEMCARDCHECKPROC_NAND_STAT_CHECK; + #endif ketteiTxtDispAnmInit(0); errorMoveAnmInitSet(2859, 2849); yesnoMenuMoveAnmInitSet(1149, 1139); - field_0x0271 = 24; + mCardCheckProc = MEMCARDCHECKPROC_MSG_WINDOW_CLOSE; } } @@ -3379,35 +4580,40 @@ void dFile_select_c::formatYesSelDispInitSet() { errorTxtSet(14); field_0x0268 = 0; field_0x0269 = 1; + + #if PLATFORM_WII || PLATFORM_SHIELD + field_0x4333 = field_0x0268; + #endif + yesnoSelectAnmSet(); - field_0x0271 = 6; + mCardCheckProc = MEMCARDCHECKPROC_FORMAT_YES_SEL_DISP; } void dFile_select_c::formatNoSelDispInitSet() { errorTxtSet(17); field_0x0280 = false; yesnoMenuMoveAnmInitSet(0x47d, 0x473); - field_0x0271 = 7; + mCardCheckProc = MEMCARDCHECKPROC_FORMAT_NO_SEL_DISP; } void dFile_select_c::MemCardFormatYesSelDisp() { - bool iVar1 = errorTxtChangeAnm(); - bool iVar2 = yesnoSelectMoveAnm(); - bool iVar3 = yesnoWakuAlpahAnm(field_0x0269); - if (iVar1 == true && iVar2 == true && iVar3 == true) { + bool isErrorTxtChange = errorTxtChangeAnm(); + bool isYnSelMove = yesnoSelectMoveAnm(); + bool isYnWakuAlpha = yesnoWakuAlpahAnm(field_0x0269); + if (isErrorTxtChange == true && isYnSelMove == true && isYnWakuAlpha == true) { yesnoCursorShow(); - field_0x0271 = 8; + mCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_FORMAT_SEL2; } } void dFile_select_c::MemCardFormatNoSelDisp() { - bool iVar1 = errorTxtChangeAnm(); - bool iVar2 = yesnoMenuMoveAnm(); - if (iVar1 == true && iVar2 == true) { - field_0x0284 = NULL; - field_0x0290 = &dFile_select_c::noSaveSelDispInit; - field_0x0274 = 3; - field_0x0271 = 2; + bool isErrorTxtChange = errorTxtChangeAnm(); + bool isYnMenuMove = yesnoMenuMoveAnm(); + if (isErrorTxtChange == true && isYnMenuMove == true) { + mWindowCloseMsgDispCb = NULL; + mKeyWaitMsgDispCb = &dFile_select_c::noSaveSelDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_NO_SAVE_SEL_DISP; + mCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; } } @@ -3425,7 +4631,7 @@ void dFile_select_c::formatYesSel2DispInitSet() { errorTxtSet(13); field_0x0280 = false; yesnoMenuMoveAnmInitSet(0x47d, 0x473); - field_0x0271 = 9; + mCardCheckProc = MEMCARDCHECKPROC_FORMAT_YES_SEL2_DISP; } void dFile_select_c::MemCardErrMsgWaitFormatSel2() { @@ -3440,45 +4646,47 @@ void dFile_select_c::MemCardErrMsgWaitFormatSel2() { } void dFile_select_c::MemCardFormatYesSel2Disp() { - bool iVar1 = errorTxtChangeAnm(); - bool iVar2 = yesnoMenuMoveAnm(); - if (iVar1 == true && iVar2 == true) { - field_0x03ac = g_fsHIO.field_0x000c; + bool isErrorTxtChange = errorTxtChangeAnm(); + bool isYnMenuMove = yesnoMenuMoveAnm(); + if (isErrorTxtChange == true && isYnMenuMove == true) { + mWaitTimer = g_fsHIO.card_wait_frames; mDoMemCd_Format(); - field_0x0271 = 10; + mCardCheckProc = MEMCARDCHECKPROC_FORMAT; } } void dFile_select_c::MemCardFormat() { - if (field_0x03ac != 0) { - field_0x03ac--; + if (mWaitTimer != 0) { + mWaitTimer--; } + field_0x03b4 = mDoMemCd_FormatSync(); if (field_0x03b4 != 0) { - field_0x0271 = 11; + mCardCheckProc = MEMCARDCHECKPROC_FORMAT_WAIT; } } void dFile_select_c::MemCardFormatWait() { - if (field_0x03ac != 0) { - field_0x03ac--; + if (mWaitTimer != 0) { + mWaitTimer--; } else { if (field_0x03b4 == 2) { errorTxtSet(11); } else if (field_0x03b4 == 1) { errorTxtSet(12); } - field_0x0271 = 12; + mCardCheckProc = MEMCARDCHECKPROC_FORMAT_CHECK; } } void dFile_select_c::MemCardFormatCheck() { - if (errorTxtChangeAnm() == true) { - field_0x0284 = NULL; - field_0x0290 = NULL; - field_0x0273 = 0; - field_0x0274 = 24; - field_0x0271 = 2; + bool isErrorTxtChange = errorTxtChangeAnm(); + if (isErrorTxtChange == true) { + mWindowCloseMsgDispCb = NULL; + mKeyWaitMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_STAT_CHECK; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_MSG_WINDOW_CLOSE; + mCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; field_0x03b1 = 0; } } @@ -3486,99 +4694,201 @@ void dFile_select_c::MemCardFormatCheck() { void dFile_select_c::MemCardMakeGameFileSel() { if (errYesNoSelect()) { if (field_0x0268 != 0) { + #if PLATFORM_WII + errorTxtSet(0xEEC); + #else errorTxtSet(27); field_0x03b1 = 1; + #endif } else { + #if PLATFORM_WII + errorTxtSet(0xEEB); + #else errorTxtSet(25); + #endif } ketteiTxtDispAnmInit(0); yesnoMenuMoveAnmInitSet(0x47d, 0x473); - field_0x0271 = 14; + mCardCheckProc = MEMCARDCHECKPROC_MAKE_GAMEFILE_SEL_DISP; } } void dFile_select_c::MemCardMakeGameFileSelDisp() { - bool iVar1 = errorTxtChangeAnm(); - bool iVar2 = yesnoMenuMoveAnm(); - bool iVar3 = ketteiTxtDispAnm(); - if (iVar1 == true && iVar2 == true && iVar3 == true) { + bool isErrorTxtChange = errorTxtChangeAnm(); + bool isYnMenuMove = yesnoMenuMoveAnm(); + bool isKetteiTxtDisp = ketteiTxtDispAnm(); + + if (isErrorTxtChange == true && isYnMenuMove == true && isKetteiTxtDisp == true) { if (field_0x0268 != 0) { - field_0x03ac = g_fsHIO.field_0x000c; + mWaitTimer = g_fsHIO.card_wait_frames; setInitSaveData(); dataSave(); - field_0x0271 = 15; + mCardCheckProc = MEMCARDCHECKPROC_MAKE_GAMEFILE; } else { - field_0x0284 = NULL; - field_0x0290 = &dFile_select_c::noSaveSelDispInit; - field_0x0274 = 3; - field_0x0271 = 2; + mWindowCloseMsgDispCb = NULL; + mKeyWaitMsgDispCb = &dFile_select_c::noSaveSelDispInit; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_NO_SAVE_SEL_DISP; + mCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; } } } void dFile_select_c::MemCardMakeGameFile() { - if (field_0x03ac != 0) { - field_0x03ac--; + if (mWaitTimer != 0) { + mWaitTimer--; } + + #if PLATFORM_GCN field_0x03b4 = mDoMemCd_SaveSync(); + #else + field_0x03b4 = mDoMemCd_SaveSyncNAND(); + #endif + if (field_0x03b4 != 0) { - field_0x0271 = 16; + mCardCheckProc = MEMCARDCHECKPROC_MAKE_GAMEFILE_WAIT; } } void dFile_select_c::MemCardMakeGameFileWait() { - if (field_0x03ac != 0) { - field_0x03ac--; + if (mWaitTimer != 0) { + mWaitTimer--; } else { if (field_0x03b4 == 1) { - errorTxtSet(0x1c); + #if PLATFORM_WII + errorTxtSet(0xEEE); + #else + errorTxtSet(0x1C); + #endif } else if (field_0x03b4 == 2) { - errorTxtSet(0x1a); + #if PLATFORM_WII + errorTxtSet(0xEED); + #else + errorTxtSet(0x1A); + #endif } - field_0x0271 = 17; + mCardCheckProc = MEMCARDCHECKPROC_MAKE_GAMEFILE_CHECK; } } void dFile_select_c::MemCardMakeGameFileCheck() { - if (errorTxtChangeAnm() == 1) { - field_0x0284 = NULL; - field_0x0290 = NULL; - field_0x0273 = 0; - field_0x0274 = 24; - field_0x0271 = 2; + bool isErrorTxtChange = errorTxtChangeAnm(); + if (isErrorTxtChange == true) { + mWindowCloseMsgDispCb = NULL; + mKeyWaitMsgDispCb = NULL; + + #if PLATFORM_GCN + mNextCardCheckProc = MEMCARDCHECKPROC_STAT_CHECK; + #else + mNextCardCheckProc = MEMCARDCHECKPROC_NAND_STAT_CHECK; + #endif + + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_MSG_WINDOW_CLOSE; + mCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; field_0x03b1 = 0; } } +#if PLATFORM_WII || PLATFORM_SHIELD +void dFile_select_c::gameFileInitSel() { + if (errYesNoSelect() != 0) { + if (field_0x0268 != 0) { + errorTxtSet(0xEE0); + yesnoMenuMoveAnmInitSet(0x47D, 0x473); + mCardCheckProc = MEMCARDCHECKPROC_GAMEFILE_INIT_SEL_DISP; + } else { + yesnoWakuAlpahAnmInit(field_0x0268, 0xFF, 0, g_fsHIO.select_box_appear_frames); + noSaveSelDispInit(); + mCardCheckProc = MEMCARDCHECKPROC_NO_SAVE_SEL_DISP; + } + } +} + +void dFile_select_c::gameFileInitSelDisp() { + bool isErrorTxtChange = errorTxtChangeAnm(); + bool isYnMenuMove = yesnoMenuMoveAnm(); + + if (isErrorTxtChange == true && isYnMenuMove == true) { + mWaitTimer = g_fsHIO.card_wait_frames; + setInitSaveData(); + dataSave(); + mCardCheckProc = MEMCARDCHECKPROC_GAMEFILE_INIT; + } +} + +void dFile_select_c::gameFileInit() { + if (mWaitTimer != 0) { + mWaitTimer--; + } + + field_0x03b4 = mDoMemCd_SaveSyncNAND(); + if (field_0x03b4 != 0 && mWaitTimer == 0) { + if (field_0x03b4 == 1) { + errorTxtSet(0xEE1); + } else if (field_0x03b4 == 2) { + errorTxtSet(0xEE2); + } + mCardCheckProc = MEMCARDCHECKPROC_GAMEFILE_INIT_CHECK; + } +} + +void dFile_select_c::gameFileInitCheck() { + bool isErrorTxtChange = errorTxtChangeAnm(); + if (isErrorTxtChange == true) { + mWindowCloseMsgDispCb = NULL; + mKeyWaitMsgDispCb = NULL; + mNextCardCheckProc = MEMCARDCHECKPROC_NAND_STAT_CHECK; + mKeyWaitCardCheckProc = MEMCARDCHECKPROC_MSG_WINDOW_CLOSE; + mCardCheckProc = MEMCARDCHECKPROC_ERRMSG_WAIT_KEY; + } +} +#endif + void dFile_select_c::MemCardMsgWindowInitOpen() { bool iVar1; - if (field_0x021e == 0x0) { + if (field_0x021e == 0) { iVar1 = headerTxtChangeAnm(); } else { iVar1 = true; } + bool iVar8 = true; bool iVar7 = true; bool iVar6 = true; bool iVar5 = true; - if (field_0x00b8 || field_0x00b9) { + + #if PLATFORM_GCN + if (field_0x00b8 || field_0x00b9) + #else + if (field_0x00b8) + #endif + { iVar8 = selectDataBaseMoveAnm(); } + if (field_0x0108 || field_0x0281) { iVar7 = yesnoMenuMoveAnm(); } + if (field_0x0360 || field_0x0283) { iVar6 = menuMoveAnm(); } - if (field_0x014a || field_0x014b) { + + #if PLATFORM_GCN + if (field_0x014a || field_0x014b) + #else + if (field_0x014a) + #endif + { iVar5 = errorMoveAnm(); } + bool iVar2 = modoruTxtDispAnm(); bool iVar3 = ketteiTxtDispAnm(); bool iVar4 = true; - if (field_0x0128 || mCpSel.field_0x08) { + if (field_0x0128 || mCpSel.isShow) { iVar4 = nameMoveAnm(); } + if (iVar1 == true && iVar8 == true && iVar7 == true && iVar6 == true && iVar5 == true && iVar2 == true && iVar3 == true && iVar4 == true) { @@ -3592,7 +4902,7 @@ void dFile_select_c::MemCardMsgWindowInitOpen() { ketteiTxtDispAnmInit(0); } field_0x021e = 1; - field_0x0271 = 23; + mCardCheckProc = MEMCARDCHECKPROC_MSG_WINDOW_OPEN; } } @@ -3607,7 +4917,7 @@ void dFile_select_c::MemCardMsgWindowOpen() { if (field_0x0280) { yesnoCursorShow(); } - field_0x0271 = field_0x0273; + mCardCheckProc = mNextCardCheckProc; } } @@ -3621,18 +4931,19 @@ void dFile_select_c::MemCardMsgWindowClose() { } if (errorRes == true && menuMoveRes == true && textAnmRes == true) { field_0x0280 = false; - if (field_0x0284 != NULL) { - (this->*field_0x0284)(); + if (mWindowCloseMsgDispCb != NULL) { + (this->*mWindowCloseMsgDispCb)(); } else { - field_0x0271 = field_0x0273; + mCardCheckProc = mNextCardCheckProc; } } } bool dFile_select_c::errYesNoSelect() { bool rv = false; - mStick->checkTrigger(); - if (mDoCPd_c::getTrigA(0) != 0) { + stick->checkTrigger(); + + if (mDoCPd_c::getTrigA(PAD_1)) { if (field_0x0268 != 0) { mDoAud_seStart(Z2SE_SY_CURSOR_OK, 0, 0, 0); } else { @@ -3640,13 +4951,13 @@ bool dFile_select_c::errYesNoSelect() { } mSelIcon->setAlphaRate(0.0f); rv = true; - } else if (mStick->checkRightTrigger()) { + } else if (stick->checkRightTrigger()) { if (field_0x0268) { field_0x0269 = field_0x0268; field_0x0268 = field_0x0268 ^ 1; errCurMove(0); } - } else if (mStick->checkLeftTrigger()) { + } else if (stick->checkLeftTrigger()) { if (field_0x0268 != 1) { field_0x0269 = field_0x0268; field_0x0268 = field_0x0268 ^ 1; @@ -3659,8 +4970,8 @@ bool dFile_select_c::errYesNoSelect() { void dFile_select_c::errCurMove(u8 param_1) { mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, 0, param_1, 0); yesnoSelectAnmSet(); - field_0x0272 = field_0x0271; - field_0x0271 = 25; + field_0x0272 = mCardCheckProc; + mCardCheckProc = MEMCARDCHECKPROC_ERR_YESNO_CURSOR_MOVE_ANM; } void dFile_select_c::MemCardErrYesNoCursorMoveAnm() { @@ -3668,20 +4979,21 @@ void dFile_select_c::MemCardErrYesNoCursorMoveAnm() { bool anmRes = yesnoWakuAlpahAnm(field_0x0269); if (moveRes == true && anmRes == true) { yesnoCursorShow(); - field_0x0271 = field_0x0272; + mCardCheckProc = field_0x0272; } } -void dFile_select_c::errorTxtSet(u16 param_1) { - if (param_1 == 0xffff) { - strcpy(field_0x0140[field_0x0148 ^ 1], ""); +void dFile_select_c::errorTxtSet(u16 i_msgId) { + if (i_msgId == 0xffff) { + strcpy(mErrorMsgStringPtr[mErrorTxtDispIdx ^ 1], ""); } else { - fileSel.mpMessageString - ->getString(param_1, (J2DTextBox*)field_0x0138[field_0x0148 ^ 1]->getPanePtr(), - NULL, fileSel.mpMessageFont[0], NULL, 0); + fileSel.mMessageString->getString( + i_msgId, (J2DTextBox*)mErrorMsgTxtPane[mErrorTxtDispIdx ^ 1]->getPanePtr(), NULL, + fileSel.font[0], NULL, 0); } - field_0x0138[field_0x0148]->alphaAnimeStart(0); - field_0x0138[field_0x0148 ^ 1]->alphaAnimeStart(0); + + mErrorMsgTxtPane[mErrorTxtDispIdx]->alphaAnimeStart(0); + mErrorMsgTxtPane[mErrorTxtDispIdx ^ 1]->alphaAnimeStart(0); field_0x0149 = 0; } @@ -3689,12 +5001,13 @@ bool dFile_select_c::errorTxtChangeAnm() { if (field_0x0149) { return true; } + bool rv = false; - bool animeRes1 = field_0x0138[field_0x0148]->alphaAnime(g_fsHIO.field_0x0007, 0xff, 0, 0); - bool animeRes2 = field_0x0138[field_0x0148 ^ 1]->alphaAnime(g_fsHIO.field_0x0007, 0, 0xff, 0); + bool animeRes1 = mErrorMsgTxtPane[mErrorTxtDispIdx]->alphaAnime(g_fsHIO.char_switch_frames, 0xff, 0, 0); + bool animeRes2 = mErrorMsgTxtPane[mErrorTxtDispIdx ^ 1]->alphaAnime(g_fsHIO.char_switch_frames, 0, 0xff, 0); s32 timer = dMeter2Info_getMsgKeyWaitTimer(); if (animeRes1 == true && animeRes2 == true && timer == 0) { - field_0x0148 ^= 1; + mErrorTxtDispIdx ^= 1; field_0x0149 = 1; rv = true; } @@ -3703,8 +5016,8 @@ bool dFile_select_c::errorTxtChangeAnm() { } bool dFile_select_c::fileRecScaleAnm() { - return field_0x00bc[mSelectNum]->scaleAnime(g_fsHIO.field_0x0005, field_0x00c8[0], - field_0x00d4[0], 0); + bool var_r30 = mSelFilePanes[mSelectNum]->scaleAnime(g_fsHIO.select_icon_appear_frames, field_0x00c8[0], field_0x00d4[0], 0); + return var_r30; } void dFile_select_c::fileRecScaleAnmInitSet2(f32 param_1, f32 param_2) { @@ -3713,13 +5026,13 @@ void dFile_select_c::fileRecScaleAnmInitSet2(f32 param_1, f32 param_2) { field_0x00d4[i] = param_2; if (i == mSelectNum) { if (param_1 > 0.0f) { - field_0x00c8[i] = g_fsHIO.field_0x0010[mSelectNum]; + field_0x00c8[i] = g_fsHIO.test_frame_counts[mSelectNum]; } if (param_2 > 0.0f) { - field_0x00d4[i] = g_fsHIO.field_0x0010[mSelectNum]; + field_0x00d4[i] = g_fsHIO.test_frame_counts[mSelectNum]; } } - field_0x00bc[i]->scaleAnimeStart(0); + mSelFilePanes[i]->scaleAnimeStart(0); } } @@ -3727,11 +5040,13 @@ bool dFile_select_c::fileRecScaleAnm2() { bool scaleRes[3]; for (int i = 0; i < 3; i++) { scaleRes[i] = - field_0x00bc[i]->scaleAnime(g_fsHIO.field_0x0005, field_0x00c8[i], field_0x00d4[i], 0); + mSelFilePanes[i]->scaleAnime(g_fsHIO.select_icon_appear_frames, field_0x00c8[i], field_0x00d4[i], 0); } + if (scaleRes[0] == true && scaleRes[1] == true && scaleRes[2] == true) { return true; } + return false; } @@ -3752,12 +5067,12 @@ bool dFile_select_c::fileInfoScaleAnm() { } field_0x009c->setFrame(field_0x0110); - mpPane->animationTransform(); + mBaseSubPane->animationTransform(); ret = false; } if (field_0x0110 == field_0x0114) { - mpPane->setAnimation((J2DAnmTransform*)0); + mBaseSubPane->setAnimation((J2DAnmTransform*)0); ret = true; } @@ -3771,14 +5086,15 @@ void dFile_select_c::nameMoveAnmInitSet(int param_1, int param_2) { if (param_1 == 3369) { mpName->hideIcon(); } - field_0x011c->setAnimation(field_0x0094); + mNameBasePane->setAnimation(field_0x0094); field_0x0120 = param_1; field_0x0124 = param_2; field_0x0094->setFrame(field_0x0120); - field_0x011c->animationTransform(); + mNameBasePane->animationTransform(); } bool dFile_select_c::nameMoveAnm() { + bool ret; if (field_0x0120 != field_0x0124) { if (field_0x0120 < field_0x0124) { field_0x0120 += 2; @@ -3794,39 +5110,62 @@ bool dFile_select_c::nameMoveAnm() { } } field_0x0094->setFrame(field_0x0120); - field_0x011c->animationTransform(); - return false; + mNameBasePane->animationTransform(); + ret = false; } else { - field_0x011c->setAnimation((J2DAnmTransform*)0); + mNameBasePane->setAnimation((J2DAnmTransform*)0); if (field_0x0124 == 0xd1f) { field_0x0128 = false; - mCpSel.field_0x08 = false; + mCpSel.isShow = false; } - return true; + ret = true; } + + return ret; } +#if PLATFORM_WII || PLATFORM_SHIELD +void dFile_select_c::saveDataClearInit() { + setInitSaveData(); + dataSave(); +} +#endif + void dFile_select_c::MemCardSaveDataClear() { + #if PLATFORM_GCN field_0x03b4 = mDoMemCd_SaveSync(); + #else + field_0x03b4 = mDoMemCd_SaveSyncNAND(); + #endif + if (field_0x03b4 != 0) { - field_0x0271 = 0; + #if PLATFORM_GCN + mCardCheckProc = MEMCARDCHECKPROC_STAT_CHECK; + #else + mDoMemCd_LoadNAND(); + mCardCheckProc = MEMCARDCHECKPROC_LOAD_WAIT; + #endif } } void dFile_select_c::setInitSaveData() { for (int i = 0; i < 3; i++) { - dComIfGs_setInitDataToCard((u8*)mSave, i); - mDoMemCdRWm_SetCheckSumGameData((u8*)mSave, i); + dComIfGs_setInitDataToCard((u8*)mSaveData, i); + mDoMemCdRWm_SetCheckSumGameData((u8*)mSaveData, i); } } void dFile_select_c::dataSave() { - mDoMemCd_save(mSave, sizeof(mSave), 0); + #if PLATFORM_GCN + mDoMemCd_save(mSaveData, sizeof(mSaveData), 0); + #else + mDoMemCd_saveNAND(mSaveData, sizeof(mSaveData), 0); + #endif } dFile_select3D_c::dFile_select3D_c() { - mpHeap = NULL; + mpSolidHeap = NULL; mpModel = NULL; field_0x03b8.y = 0.0f; field_0x03b8.x = 0.0f; @@ -3840,11 +5179,21 @@ dFile_select3D_c::~dFile_select3D_c() { void dFile_select3D_c::_create(u8 i_mirrorIdx, u8 i_maskIdx) { JKRHeap* ppHeap; - mpHeap = mDoExt_createSolidHeapFromGameToCurrent(&ppHeap,0x25800,32); + mpSolidHeap = mDoExt_createSolidHeapFromGameToCurrent(&ppHeap, 0x25800, 32); + JUT_ASSERT(8680, mpSolidHeap != NULL); + field_0x03c4 = 0.0f; field_0x03c8 = 0.0f; mMirrorIdx = i_mirrorIdx; mMaskIdx = i_maskIdx; + + #if DEBUG + if (g_fsHIO.mask_mirror_test_display) { + mMirrorIdx = g_fsHIO.test_mirror_display; + mMaskIdx = g_fsHIO.test_mask_display; + } + #endif + if (mMirrorIdx != 0) { createMirrorModel(); } @@ -3853,37 +5202,37 @@ void dFile_select3D_c::_create(u8 i_mirrorIdx, u8 i_maskIdx) { createMaskModel(); } - mpHeap->adjustSize(); + mpSolidHeap->adjustSize(); mDoExt_setCurrentHeap(ppHeap); if (mpModel) { - dKy_tevstr_init(&mTevstr,0xFF,0xFF); + dKy_tevstr_init(&mTevstr, 0xFF, 0xFF); set_mtx(); } } -void dFile_select3D_c::_delete() { - /* empty function */ -} +void dFile_select3D_c::_delete() {} void dFile_select3D_c::freeHeap() { - if (mpHeap) { - mDoExt_destroySolidHeap(mpHeap); - mpHeap = NULL; + if (mpSolidHeap) { + mDoExt_destroySolidHeap(mpSolidHeap); + mpSolidHeap = NULL; mpModel = NULL; } } void dFile_select3D_c::_move() { - if (mpModel) { - cXyz stack_20; - Vec stack_8 = mPaneMgr->getGlobalVtxCenter(false, 0); - toItem3Dpos(stack_8.x + field_0x03b8.x, stack_8.y + field_0x03b8.y, 720.0f, &stack_20); - field_0x03a4.set(stack_20); - field_0x03b0.set(0, 0, 0); - animePlay(); - set_mtx(); + if (!mpModel) { + return; } + + cXyz stack_20; + Vec stack_8 = mPaneMgr->getGlobalVtxCenter(false, 0); + toItem3Dpos(oREG_F(0) + (stack_8.x + field_0x03b8.x), oREG_F(1) + (stack_8.y + field_0x03b8.y), oREG_F(2) + 720.0f, &stack_20); + field_0x03a4.set(stack_20); + field_0x03b0.set(0, 0, 0); + animePlay(); + set_mtx(); } void dFile_select3D_c::draw() { @@ -3927,7 +5276,8 @@ void dFile_select3D_c::setJ3D(char const* param_0, char const* param_1, char con JUT_ASSERT(8846, anmBase != NULL); mBckAnm = new mDoExt_bckAnm(); - if (mBckAnm == NULL || !mBckAnm->init((J3DAnmTransform*)anmBase, 1, 2, 1.0f, 0, -1, false)) { + if (mBckAnm == NULL || !mBckAnm->init((J3DAnmTransform*)anmBase, 1, 2, 1.0f, 0, -1, false)) + { return; } } @@ -3939,7 +5289,9 @@ void dFile_select3D_c::setJ3D(char const* param_0, char const* param_1, char con ((J3DAnmTevRegKey*)anmBase)->searchUpdateMaterialID(modelData); mBrkAnm = new mDoExt_brkAnm(); - if (mBrkAnm == NULL || !mBrkAnm->init(modelData, (J3DAnmTevRegKey*)anmBase, -1, 2, 1.0f, 0, -1)) { + if (mBrkAnm == NULL || + !mBrkAnm->init(modelData, (J3DAnmTevRegKey*)anmBase, -1, 2, 1.0f, 0, -1)) + { return; } } @@ -3951,7 +5303,8 @@ void dFile_select3D_c::set_mtx() { if (tmp <= 0.1f) { tmp = 0.0f; } - stack_8.x = stack_8.y = stack_8.z = tmp * field_0x03b8.z; + + stack_8.x = stack_8.y = stack_8.z = tmp * (field_0x03b8.z + oREG_F(3)); mDoMtx_stack_c::transS(field_0x03a4.x, field_0x03a4.y, field_0x03a4.z); mDoMtx_stack_c::XYZrotM(field_0x03b0.x, field_0x03b0.y, field_0x03b0.z); mpModel->setBaseScale(stack_8); @@ -3960,7 +5313,7 @@ void dFile_select3D_c::set_mtx() { void dFile_select3D_c::animePlay() { if (mBrkAnm) { - field_0x03c4 += 1.0f; + field_0x03c4 += oREG_S(0) + 1; if (field_0x03c4 >= mBrkAnm->getEndFrame()) { field_0x03c4 -= mBrkAnm->getEndFrame(); } @@ -3968,7 +5321,7 @@ void dFile_select3D_c::animePlay() { mBrkAnm->play(); } if (mBckAnm) { - field_0x03c8 += 1.0f; + field_0x03c8 += oREG_S(1) + 1; if (field_0x03c8 >= mBckAnm->getEndFrame()) { field_0x03c8 -= mBckAnm->getEndFrame(); } @@ -4082,8 +5435,7 @@ void dFile_select3D_c::createMirrorModel() { void dFile_select3D_c::toItem3Dpos(f32 param_0, f32 param_1, f32 param_2, cXyz* param_3) { Mtx adStack_98; Mtx auStack_c8; - param_0 = - (2.0f * ((param_0 - mDoGph_gInf_c::getMinXF()) / mDoGph_gInf_c::getWidthF()) - 1.0f); + param_0 = (2.0f * ((param_0 - mDoGph_gInf_c::getMinXF()) / mDoGph_gInf_c::getWidthF()) - 1.0f); param_1 = (2.0f * ((param_1 - -100.0f) / 448.0f) - 1.0f); calcViewMtx(adStack_98); cMtx_inverse(adStack_98, auStack_c8); diff --git a/src/d/d_map.cpp b/src/d/d_map.cpp index 6551a0d9540..11c62f37c97 100644 --- a/src/d/d_map.cpp +++ b/src/d/d_map.cpp @@ -7,6 +7,7 @@ #include "d/d_map.h" #include "JSystem/JHostIO/JORFile.h" +#include "JSystem/JHostIO/JORServer.h" #include "JSystem/JUtility/JUTTexture.h" #include "SSystem/SComponent/c_counter.h" #include "SSystem/SComponent/c_math.h" diff --git a/src/d/d_menu_option.cpp b/src/d/d_menu_option.cpp index dbf6785c7a2..1e2226db891 100644 --- a/src/d/d_menu_option.cpp +++ b/src/d/d_menu_option.cpp @@ -1030,7 +1030,7 @@ void dMenu_Option_c::confirm_open_init() { } void dMenu_Option_c::confirm_open_move() { - bool status = mpWarning->getStatus(); + u32 status = mpWarning->getStatus(); bool yesNoMenuMove = yesnoMenuMoveAnm(); if (field_0x374 != 1.0f) { @@ -1113,7 +1113,7 @@ void dMenu_Option_c::confirm_close_init() { } void dMenu_Option_c::confirm_close_move() { - bool status = mpWarning->getStatus(); + u32 status = mpWarning->getStatus(); yesnoMenuMoveAnm(); if (field_0x374 != 0.0f) { cLib_addCalc2(&field_0x374, 0.0f, 0.4f, 0.5); diff --git a/src/d/d_menu_save.cpp b/src/d/d_menu_save.cpp index 5929fbfa709..0c2f0bc332b 100644 --- a/src/d/d_menu_save.cpp +++ b/src/d/d_menu_save.cpp @@ -1296,7 +1296,7 @@ void dMenu_save_c::memCardCommandEnd2() { bool headerTxtChanged = headerTxtChangeAnm(); bool ketteiDispAnm = ketteiTxtDispAnm(); bool modoruDispAnm = modoruTxtDispAnm(); - u32 check = mWarning->getStatus() != 0; + u32 check = mWarning->getStatus(); if (headerTxtChanged == true && ketteiDispAnm == true && modoruDispAnm == true && check == 1) { mpErrFunc = NULL; @@ -1388,7 +1388,7 @@ void dMenu_save_c::gameContinueDisp() { bool headerTxtChanged = headerTxtChangeAnm(); bool moveAnm = yesnoMenuMoveAnm(); bool ketteiDispAnm = ketteiTxtDispAnm(); - u32 check = mWarning->getStatus() != 0; + u32 check = mWarning->getStatus(); if (headerTxtChanged == true && moveAnm == true && ketteiDispAnm == true && check == 1) { yesnoCursorShow(); @@ -1466,7 +1466,7 @@ void dMenu_save_c::gameContinue3() { void dMenu_save_c::saveEnd() { bool headerTxtChanged = headerTxtChangeAnm(); bool ketteiDispAnm = ketteiTxtDispAnm(); - u32 check = mWarning->getStatus() != 0; + u32 check = mWarning->getStatus(); if (headerTxtChanged == true && ketteiDispAnm == true && check == 1) { if (mUseType == TYPE_BLACK_EVENT) { @@ -1938,7 +1938,7 @@ void dMenu_save_c::saveMoveDisp() { bool yesnoAnmComplete = yesnoMenuMoveAnm(); bool ketteiAnmComplete = ketteiTxtDispAnm(); bool modoruAnmComplete = modoruTxtDispAnm(); - u32 check = mWarning->getStatus() != 0; + u32 check = mWarning->getStatus(); if (headerTxtChanged == true && yesnoAnmComplete == true && ketteiAnmComplete == true && modoruAnmComplete == 1 && check == 1) { @@ -1956,7 +1956,7 @@ void dMenu_save_c::saveMoveDisp2() { bool wakuAnmComplete = selectWakuAlpahAnm(mSelectedFile); bool ketteiAnmComplete = ketteiTxtDispAnm(); bool modoruAnmComplete = modoruTxtDispAnm(); - u32 check = mWarning->getStatus() != 0; + u32 check = mWarning->getStatus(); if (headerTxtChanged == true && dataMoveAnm == true && wakuAnmComplete == true && ketteiAnmComplete == true && modoruAnmComplete == 1 && check == 1) { diff --git a/src/m_Do/m_Do_MemCard.cpp b/src/m_Do/m_Do_MemCard.cpp index 29248e5b694..47c29af4a18 100644 --- a/src/m_Do/m_Do_MemCard.cpp +++ b/src/m_Do/m_Do_MemCard.cpp @@ -10,6 +10,11 @@ #include "m_Do/m_Do_MemCardRWmng.h" #include "m_Do/m_Do_Reset.h" +#if PLATFORM_WII || PLATFORM_SHIELD +#include +#include +#endif + #define SLOT_A 0 #define CHECKSPACE_RESULT_READY 0 @@ -17,14 +22,60 @@ #define CHECKSPACE_RESULT_NOENT 2 #define CHECKSPACE_RESULT_ERROR 3 +#if PLATFORM_WII +s32 my_CARDOpen(s32 chan, const char* fileName, CARDFileInfo* fileInfo) { + CARDStat stat; + DVDDiskID* diskID = DVDGetCurrentDiskID(); + + for (int i = 0; i < CARD_MAX_FILE; i++) { + s32 ret = CARDGetStatus(chan, i, &stat); + if (ret == CARD_RESULT_READY) { + if (memcmp(stat.gameName, "GZ2E", 4) == 0 && + memcmp(stat.company, diskID->company, 2) == 0 && + strncmp(stat.fileName, fileName, 32) == 0) + { + return CARDFastOpen(chan, i, fileInfo); + } + } else if (ret != CARD_RESULT_NOFILE) { + return ret; + } + } + + return CARD_RESULT_NOFILE; +} +#endif + +#if PLATFORM_WII +#define CARD_OPEN my_CARDOpen +#else +#define CARD_OPEN CARDOpen +#endif + +#if PLATFORM_WII +#define NAND_OPEN NANDSafeOpen +#define NAND_CLOSE NANDSafeClose +#elif PLATFORM_SHIELD +#define NAND_OPEN NANDSimpleSafeOpen +#define NAND_CLOSE NANDSimpleSafeClose +#endif + mDoMemCd_Ctrl_c::mDoMemCd_Ctrl_c() {} -static u8 MemCardStack[0x1000]; +#if PLATFORM_GCN +#define STACK_SIZE 0x1000 +#else +#define STACK_SIZE 0x2000 +#endif + +static u8 MemCardStack[STACK_SIZE]; static OSThread MemCardThread; void mDoMemCd_Ctrl_c::ThdInit() { + #if !PLATFORM_SHIELD CARDInit(); + #endif + mCopyToPos = 0; mProbeStat = 2; mCardState = CARD_STATE_NO_CARD_e; @@ -33,10 +84,8 @@ void mDoMemCd_Ctrl_c::ThdInit() { OSInitMutex(&mMutex); OSInitCond(&mCond); - - int priority = OSGetThreadPriority(OSGetCurrentThread()); OSCreateThread(&MemCardThread, (void*(*)(void*))mDoMemCd_main, NULL, MemCardStack + sizeof(MemCardStack), - sizeof(MemCardStack), priority + 1, 1); + sizeof(MemCardStack), OSGetThreadPriority(OSGetCurrentThread()) + 1, 1); OSResumeThread(&MemCardThread); // "Memory Card Thread Init\n" @@ -52,6 +101,7 @@ void mDoMemCd_Ctrl_c::main() { OSUnlockMutex(&mMutex); switch (mCardCommand) { + #if PLATFORM_GCN || PLATFORM_WII case COMM_RESTORE_e: restore(); break; @@ -67,6 +117,26 @@ void mDoMemCd_Ctrl_c::main() { case COMM_DETACH_e: detach(); break; + #elif PLATFORM_SHIELD + case COMM_RESTORE_e: + case COMM_STORE_e: + case COMM_FORMAT_e: + case COMM_ATTACH_e: + case COMM_DETACH_e: + break; + #endif + + #if PLATFORM_WII || PLATFORM_SHIELD + case COMM_RESTORE_NAND_e: + restoreNAND(); + break; + case COMM_STORE_NAND_e: + storeNAND(); + break; + case COMM_STORE_SETUP_NAND_e: + storeSetUpNAND(); + break; + #endif } OSLockMutex(&mMutex); @@ -83,6 +153,7 @@ void mDoMemCd_Ctrl_c::update() { OSUnlockMutex(&mMutex); OSSignalCond(&mCond); } else if (getStatus(0) != 14) { + #if PLATFORM_GCN || PLATFORM_WII if (CARDProbe(SLOT_A) && getStatus(0) == 0) { OSLockMutex(&mMutex); mProbeStat = 0; @@ -98,6 +169,7 @@ void mDoMemCd_Ctrl_c::update() { OSUnlockMutex(&mMutex); OSSignalCond(&mCond); } + #endif } } @@ -110,11 +182,12 @@ void mDoMemCd_Ctrl_c::load() { } } +#if !PLATFORM_SHIELD void mDoMemCd_Ctrl_c::restore() { CARDFileInfo file; field_0x1fc8 = 0; - s32 ret = CARDOpen(mChannel, "gczelda2", &file); + s32 ret = CARD_OPEN(mChannel, "gczelda2", &file); OS_REPORT("\x1b[43;30mCret=%d\n\x1b[m", ret); if (ret == CARD_RESULT_READY) { s32 ret2 = mDoMemCdRWm_Restore(&file, this, sizeof(mData)); @@ -131,6 +204,7 @@ void mDoMemCd_Ctrl_c::restore() { field_0x1fc8 = 1; } +#endif s32 mDoMemCd_Ctrl_c::LoadSync(void* i_buffer, u32 i_size, u32 i_position) { int ret = 0; @@ -164,13 +238,18 @@ void mDoMemCd_Ctrl_c::save(void* i_buffer, u32 i_size, u32 i_position) { } } +#if !PLATFORM_SHIELD void mDoMemCd_Ctrl_c::store() { CARDFileInfo file; s32 ret; field_0x1fc8 = 0; if (mCardState == CARD_STATE_NO_FILE_e) { - ret = CARDCreate(mChannel, "gczelda2", SAVEDATA_FILE_SIZE, &file); + #if PLATFORM_GCN + ret = CARDCreate(mChannel, "gczelda2", CARD_FILE_SIZE, &file); + #else + ret = CARDCreate(mChannel, "zeldaTp.dat", CARD_FILE_SIZE, &file); + #endif if (ret == CARD_RESULT_READY || ret == CARD_RESULT_EXIST) { mCardState = CARD_STATE_READY_e; } else { @@ -179,7 +258,7 @@ void mDoMemCd_Ctrl_c::store() { } if (mCardState == CARD_STATE_READY_e) { - ret = CARDOpen(mChannel, "gczelda2", &file); + ret = CARD_OPEN(mChannel, "gczelda2", &file); if (ret == CARD_RESULT_READY) { ret = mDoMemCdRWm_Store(&file, this, sizeof(mData)); if (ret != CARD_RESULT_READY) { @@ -199,6 +278,7 @@ void mDoMemCd_Ctrl_c::store() { field_0x1fc8 = 1; } +#endif s32 mDoMemCd_Ctrl_c::SaveSync() { int ret = 0; @@ -217,7 +297,6 @@ s32 mDoMemCd_Ctrl_c::SaveSync() { ret = 2; } - OS_REPORT("CARD Save Sync ret:%d stat:%d\n", ret, mCardState); OSUnlockMutex(&mMutex); } @@ -287,6 +366,7 @@ void mDoMemCd_Ctrl_c::command_format() { } } +#if !PLATFORM_SHIELD void mDoMemCd_Ctrl_c::format() { field_0x1fc8 = 0; @@ -302,6 +382,7 @@ void mDoMemCd_Ctrl_c::format() { OSUnlockMutex(&mMutex); } } +#endif s32 mDoMemCd_Ctrl_c::FormatSync() { int ret = 0; @@ -325,6 +406,7 @@ s32 mDoMemCd_Ctrl_c::FormatSync() { return ret; } +#if !PLATFORM_SHIELD void mDoMemCd_Ctrl_c::attach() { s32 mem_size; s32 sector_size; @@ -418,7 +500,7 @@ s32 mDoMemCd_Ctrl_c::mount() { s32 mDoMemCd_Ctrl_c::loadfile() { CARDFileInfo file; - s32 ret = CARDOpen(mChannel, "gczelda2", &file); + s32 ret = CARD_OPEN(mChannel, "gczelda2", &file); if (ret == CARD_RESULT_READY) { CARDClose(&file); return TRUE; @@ -428,7 +510,6 @@ s32 mDoMemCd_Ctrl_c::loadfile() { } } -// s32 mDoMemCd_Ctrl_c::checkspace() { s32 bytesNotUsed, filesNotUsed; s32 result = CARDFreeBlocks(mChannel, &bytesNotUsed, &filesNotUsed); @@ -438,7 +519,7 @@ s32 mDoMemCd_Ctrl_c::checkspace() { return CHECKSPACE_RESULT_ERROR; } - if (bytesNotUsed < SAVEDATA_FILE_SIZE) { + if (bytesNotUsed < CARD_FILE_SIZE) { return CHECKSPACE_RESULT_INSSPACE; } @@ -472,13 +553,313 @@ void mDoMemCd_Ctrl_c::setCardState(s32 i_result) { break; } } +#endif + +#if PLATFORM_WII || PLATFORM_SHIELD +void mDoMemCd_Ctrl_c::loadNAND() { + if (OSTryLockMutex(&mMutex)) { + field_0x1fc8 = 0; + mCardCommand = COMM_RESTORE_NAND_e; + OSUnlockMutex(&mMutex); + OSSignalCond(&mCond); + } +} + +void mDoMemCd_Ctrl_c::restoreNAND() { + NANDFileInfo file; + s32 ret, ret2; + + field_0x1fc8 = 0; + + ret = NANDOpen("zeldaTp.dat", &file, NAND_ACCESS_RW); + OS_REPORT("\x1b[43;30mCret=%d\n\x1b[m", ret); + if (ret == NAND_RESULT_OK) { + ret2 = mDoMemCdRWm_RestoreNAND(&file, this, sizeof(mData)); + OS_REPORT("\x1b[43;30mret2=%d\n\x1b[m", ret2); + if (ret2 == NAND_RESULT_OK) { + mNandState = NAND_STATE_READ_e; + } else { + setNandState(ret); + } + NANDClose(&file); + } else { + setNandState(ret); + } + + field_0x1fc8 = 1; +} + +s32 mDoMemCd_Ctrl_c::LoadSyncNAND(void* i_buffer, u32 i_size, u32 i_position) { + int ret = 0; + + if (field_0x1fc8 == 0) { + return 0; + } + + if (OSTryLockMutex(&mMutex)) { + if (mNandState == NAND_STATE_READ_e) { + memcpy(i_buffer, &mData[i_position], i_size); + mNandState = NAND_STATE_READY_e; + ret = 1; + } else { + ret = 2; + } + OSUnlockMutex(&mMutex); + } + + return ret; +} + +void mDoMemCd_Ctrl_c::saveNAND(void* i_buffer, u32 i_size, u32 i_position) { + if (OSTryLockMutex(&mMutex)) { + memcpy(&mData[i_position], i_buffer, i_size); + field_0x1fc8 = 0; + mCardCommand = COMM_STORE_NAND_e; + OSUnlockMutex(&mMutex); + OSSignalCond(&mCond); + } +} + +static u8 l_safeCopyBuf[0x4000]; + +void mDoMemCd_Ctrl_c::storeNAND() { + NANDFileInfo file; + s32 ret; + field_0x1fc8 = 0; + + if (mNandState == NAND_STATE_NO_FILE_e) { + ret = NANDCreate("zeldaTp.dat", NAND_PERM_RUSR | NAND_PERM_WUSR | NAND_PERM_RGRP, 0); + if (ret == NAND_RESULT_OK) { + mNandState = NAND_STATE_READY_e; + } else { + setNandState(ret); + } + } + + if (mNandState == NAND_STATE_READY_e) { + u8 sp8 = 1; + ret = NANDCreate("banner.bin", NAND_PERM_RUSR | NAND_PERM_WUSR | NAND_PERM_RGRP, 0); + printf("NAND bannerFile Create ret:%d\n", ret); + if (ret == NAND_RESULT_OK || ret == NAND_RESULT_EXISTS) { + ret = NAND_OPEN("banner.bin", &file, NAND_ACCESS_RW, l_safeCopyBuf, sizeof(l_safeCopyBuf)); + if (ret == NAND_RESULT_OK) { + ret = mDoMemCdRWm_StoreBannerNAND(&file); + if (ret == NAND_RESULT_OK) { + printf("NAND bannerFile Write OK ret:%d\n", ret); + } else { + setNandState(ret); + printf("NAND bannerFile Write ERR ret:%d\n", ret); + } + NAND_CLOSE(&file); + } else { + setNandState(ret); + } + } else { + setNandState(ret); + } + + if (ret == NAND_RESULT_OK) { + ret = NAND_OPEN("zeldaTp.dat", &file, NAND_ACCESS_RW, l_safeCopyBuf, sizeof(l_safeCopyBuf)); + if (ret == NAND_RESULT_OK) { + ret = mDoMemCdRWm_StoreNAND(&file, this, sizeof(mData)); + if (ret == NAND_RESULT_OK) { + mNandState = NAND_STATE_WRITE_e; + printf("NAND Write OK ret:%d stat:%d\n", ret, mNandState); + } else { + setNandState(ret); + printf("NAND Write ERR ret:%d\n", ret); + } + NAND_CLOSE(&file); + } else { + setNandState(ret); + } + } + } else { + setNandState(ret); + } + + field_0x1fc8 = 1; +} + +s32 mDoMemCd_Ctrl_c::SaveSyncNAND() { + int ret = 0; + + if (field_0x1fc8 == 0) { + return 0; + } + + if (OSTryLockMutex(&mMutex)) { + if (mNandState == NAND_STATE_WRITE_e) { + mNandState = NAND_STATE_READY_e; + ret = 1; + } else { + ret = 2; + } + + printf("NAND Save Sync ret:%d stat:%d\n", ret, mNandState); + OSUnlockMutex(&mMutex); + } + + return ret; +} + +void mDoMemCd_Ctrl_c::storeSetUpNAND() { + field_0x1fc8 = 0; + + while ((int)SCCheckStatus() != 0) {} + + #if PLATFORM_WII + if (!SCFlush()) { + mNandState = NAND_STATE_WRITE_e; + printf("== 本体設定Write OK ==\n"); + } else { + mNandState = NAND_STATE_FATAL_ERROR_e; + printf("== 本体設定Write ERR ==\n"); + } + #else + mNandState = NAND_STATE_WRITE_e; + #endif + + field_0x1fc8 = 1; +} + +void m_Do_MemCard_cpp__dummyString() { + DEAD_STRING("本体設定 Save Sync ret:%d stat:%d\n"); +} + +void mDoMemCd_Ctrl_c::setNandState(s32 i_result) { + switch (i_result) { + case NAND_RESULT_CORRUPT: + mNandState = NAND_STATE_BROKEN_e; + break; + case NAND_RESULT_MAXBLOCKS: + mNandState = NAND_STATE_INSSPACE_e; + break; + case NAND_RESULT_MAXFILES: + case NAND_RESULT_MAXFD: + mNandState = NAND_STATE_NOENT_e; + break; + case NAND_RESULT_ECC_CRIT: + case NAND_RESULT_AUTHENTICATION: + mNandState = NAND_STATE_AUTHENTICATION_e; + break; + case NAND_RESULT_NOEXISTS: + mNandState = NAND_STATE_NO_FILE_e; + break; + case NAND_RESULT_UNKNOWN: + case NAND_RESULT_FATAL_ERROR: + mNandState = NAND_STATE_FATAL_ERROR_e; + break; + case -7: + case NAND_RESULT_BUSY: + case NAND_RESULT_ALLOC_FAILED: + case NAND_RESULT_ACCESS: + break; + } +} + +u32 mDoMemCd_Ctrl_c::getStatusNAND() { + u32 status; + if (OSTryLockMutex(&mMutex)) { + switch (mNandState) { + case NAND_STATE_READY_e: + status = 1; + break; + case NAND_STATE_NO_FILE_e: + status = 0; + break; + case NAND_STATE_READ_e: + status = 2; + break; + case NAND_STATE_WRITE_e: + status = 3; + break; + case NAND_STATE_FORMAT_e: + status = 6; + break; + case NAND_STATE_AUTHENTICATION_e: + status = 4; + break; + case NAND_STATE_BROKEN_e: + status = 5; + break; + case NAND_STATE_INSSPACE_e: + status = 7; + break; + case NAND_STATE_NOENT_e: + status = 8; + break; + case NAND_STATE_FATAL_ERROR_e: + status = 9; + break; + case NAND_STATE_10_e: + status = 10; + break; + } + + OSUnlockMutex(&mMutex); + return status; + } + + return 10; +} + +s32 mDoMemCd_Ctrl_c::chekNANDFile() { + NANDFileInfo file; + + s32 ret = NANDOpen("zeldaTp.dat", &file, NAND_ACCESS_RW); + if (ret == NAND_RESULT_OK) { + mNandState = NAND_STATE_READY_e; + NANDClose(&file); + return 1; + } + + switch (checkspaceNAND()) { + case CHECKSPACE_RESULT_READY: + mNandState = NAND_STATE_NO_FILE_e; + break; + case CHECKSPACE_RESULT_INSSPACE: + mNandState = NAND_STATE_INSSPACE_e; + break; + case CHECKSPACE_RESULT_NOENT: + mNandState = NAND_STATE_NOENT_e; + break; + case CHECKSPACE_RESULT_ERROR: + setNandState(ret); + break; + } + + return 0; +} + +s32 mDoMemCd_Ctrl_c::checkspaceNAND() { + u32 answer = -1; + s32 ret; + + s32 result = NANDCheck(3, 2, &answer); + if (result != NAND_RESULT_OK) { + setNandState(result); + return CHECKSPACE_RESULT_ERROR; + } + + if (answer == 0) { + ret = 0; + } else if (answer & 5) { + ret = 1; + } else if (answer & 10) { + ret = 2; + } + + return ret; +} +#endif mDoMemCd_Ctrl_c g_mDoMemCd_control; static int mDoMemCd_main(void*) { { JKRThread thread(OSGetCurrentThread(), 0); } - mDoExt_getAssertHeap()->becomeCurrentHeap(); + JKRSetCurrentHeap(mDoExt_getAssertHeap()); g_mDoMemCd_control.main(); return 0; diff --git a/src/m_Do/m_Do_MemCardRWmng.cpp b/src/m_Do/m_Do_MemCardRWmng.cpp index 5c2c33e6938..010b986c001 100644 --- a/src/m_Do/m_Do_MemCardRWmng.cpp +++ b/src/m_Do/m_Do_MemCardRWmng.cpp @@ -13,6 +13,9 @@ #if VERSION == VERSION_GCN_JPN #define HEADER_TITLE "ゼルダの伝説 トワイライトプリンセス" #define HEADER_COMMENT "%d月%d日のセーブデータです" +#elif PLATFORM_WII +#define HEADER_TITLE "The Legend of Zelda: TP" +#define HEADER_COMMENT "%d/%d Save Data" #else #define HEADER_TITLE "Zelda: Twilight Princess" #define HEADER_COMMENT "%d/%d Save Data" @@ -21,12 +24,13 @@ struct data_s { int unk_0x0; int data_version; - u8 data[(SAVEDATA_SIZE * 3) + 0x38]; // unsure what the extra 0x38 is + u8 data[(SAVEFILE_SIZE) + 0x38]; // unsure what the extra 0x38 is u32 checksum; }; static u8 sTmpBuf[SECTOR_SIZE * 2]; +#if !PLATFORM_SHIELD s32 mDoMemCdRWm_Store(CARDFileInfo* file, void* data, u32 length) { mDoMemCdRWm_BuildHeader((mDoMemCdRWm_HeaderData*)sTmpBuf); @@ -152,6 +156,160 @@ s32 mDoMemCdRWm_Restore(CARDFileInfo* file, void* data, u32 length) { return CARD_RESULT_READY; } +#endif + +#if PLATFORM_WII || PLATFORM_SHIELD +s32 mDoMemCdRWm_StoreNAND(NANDFileInfo* file, void* data, u32 length) { + s32 ret; + + memset(sTmpBuf, 0, sizeof(sTmpBuf)); + + data_s* tmp_data = (data_s*)sTmpBuf; + tmp_data->unk_0x0 = 0; + tmp_data->data_version = SAVEDATA_VERSION; + memcpy(tmp_data->data, data, length); + + u32 checksum = tmp_data->checksum = mDoMemCdRWm_CalcCheckSum(tmp_data, sizeof(data_s) - 4); + + ret = NANDWrite(file, sTmpBuf, 0x2000); + if (ret != 0x2000) { + return ret; + } + + NANDSeek(file, 0, 0); + + ret = NANDRead(file, sTmpBuf, 0x2000); + if (ret != 0x2000) { + return ret; + } + + if (checksum != mDoMemCdRWm_CalcCheckSum(sTmpBuf, sizeof(data_s) - 4)) { + return ret; + } + + NANDSeek(file, 0x2000, 0); + + ret = NANDWrite(file, sTmpBuf, 0x2000); + if (ret != 0x2000) { + return ret; + } + + NANDSeek(file, 0x2000, 0); + + ret = NANDRead(file, sTmpBuf, 0x2000); + if (ret != 0x2000) { + return ret; + } + + if (checksum != mDoMemCdRWm_CalcCheckSum(sTmpBuf, sizeof(data_s) - 4)) { + return ret; + } + + return NAND_RESULT_OK; +} + +s32 mDoMemCdRWm_RestoreNAND(NANDFileInfo* file, void* data, u32 length) { + BOOL rewrite = FALSE; + + data_s* saves = (data_s*)sTmpBuf; + data_s* backup_saves = (data_s*)(sTmpBuf + SECTOR_SIZE); + + NANDSeek(file, 0, 0); + s32 ret = NANDRead(file, saves, 0x2000); + if (ret != 0x2000) { + return ret; + } + + BOOL save1_valid = mDoMemCdRWm_TestCheckSumGameData(&saves->data[SAVEDATA_SIZE * 0]); + BOOL save2_valid = mDoMemCdRWm_TestCheckSumGameData(&saves->data[SAVEDATA_SIZE * 1]); + BOOL save3_valid = mDoMemCdRWm_TestCheckSumGameData(&saves->data[SAVEDATA_SIZE * 2]); + + NANDSeek(file, 0x2000, 0); + ret = NANDRead(file, backup_saves, 0x2000); + if (ret != 0x2000) { + return ret; + } + + BOOL backup1_valid = mDoMemCdRWm_TestCheckSumGameData(&backup_saves->data[SAVEDATA_SIZE * 0]); + BOOL backup2_valid = mDoMemCdRWm_TestCheckSumGameData(&backup_saves->data[SAVEDATA_SIZE * 1]); + BOOL backup3_valid = mDoMemCdRWm_TestCheckSumGameData(&backup_saves->data[SAVEDATA_SIZE * 2]); + + if (!save1_valid && backup1_valid) { + memcpy(&saves->data[SAVEDATA_SIZE * 0], &backup_saves->data[SAVEDATA_SIZE * 0], SAVEDATA_SIZE); + rewrite = TRUE; + } + + if (!save2_valid && backup2_valid) { + memcpy(&saves->data[SAVEDATA_SIZE * 1], &backup_saves->data[SAVEDATA_SIZE * 1], SAVEDATA_SIZE); + rewrite = TRUE; + } + + if (!save3_valid && backup3_valid) { + memcpy(&saves->data[SAVEDATA_SIZE * 2], &backup_saves->data[SAVEDATA_SIZE * 2], SAVEDATA_SIZE); + rewrite = TRUE; + } + + BOOL sp10 = FALSE; + if (!save1_valid && !backup1_valid && + !save2_valid && !backup2_valid && + !save3_valid && !backup3_valid) + { + sp10 = TRUE; + } + + if (rewrite) { + NANDSeek(file, 0, 0); + ret = NANDWrite(file, saves, 0x2000); + if (ret != 0x2000) { + return ret; + } + + NANDSeek(file, 0x2000, 0); + ret = NANDWrite(file, saves, 0x2000); + if (ret != 0x2000) { + return ret; + } + } + + memcpy(data, saves->data, length); + mDoMemCd_setDataVersion(saves->data_version); + + return NAND_RESULT_OK; +} +#endif + +#if PLATFORM_WII || PLATFORM_SHIELD +s32 mDoMemCdRWm_StoreBannerNAND(NANDFileInfo* file) { + static NANDBanner info; + static wchar_t titleTxt[] = L"The Legend of Zelda:"; + static wchar_t commentTxt[] = L"Twilight Princess"; + u32 size; + s32 ret; + + NANDInitBanner(&info, 0, (u16*)titleTxt, (u16*)commentTxt); + + ResTIMG* banner_data = (ResTIMG*)dComIfGp_getCardIconResArchive()->getResource("zelda2_wii_banner.bti"); + ResTIMG* icon_data = (ResTIMG*)dComIfGp_getCardIconResArchive()->getResource("zelda2_wii_icon.bti"); + + u8* banner_base_ptr = (u8*)banner_data; + u8* icon_base_ptr = (u8*)icon_data; + + memcpy(info.bannerTexture, banner_base_ptr + banner_data->imageOffset, sizeof(info.bannerTexture)); + memcpy(info.iconTexture, icon_base_ptr + icon_data->imageOffset, 0x1200); + dComIfGp_getCardIconResArchive()->removeResourceAll(); + + NANDSetIconSpeed(info, 0, NAND_STAT_SPEED_MIDDLE); + NANDSetIconSpeed(info, 1, NAND_STAT_SPEED_END); + + size = 0x72A0; + ret = NANDWrite(file, &info, size); + if (ret != size) { + return ret; + } + + return NAND_RESULT_OK; +} +#endif static void mDoMemCdRWm_BuildHeader(mDoMemCdRWm_HeaderData* header) { snprintf(header->mTitle, sizeof(header->mTitle), HEADER_TITLE);