summaryrefslogtreecommitdiff
path: root/src/d/d_menu_save.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2024-10-10 07:29:58 -0700
committerGitHub <noreply@github.com>2024-10-10 08:29:58 -0600
commit12eb254d769d84743b5cc6cd5424057c57eaf0ad (patch)
tree4509be332b2ccfc6fe939f47740d68f7746eca3e /src/d/d_menu_save.cpp
parent2fd702c0ac170a789af879b8b92a82d4dcc9080c (diff)
switch to dtk setup (#2203)
* switch to dtk setup * some cleanup / fixes * cleanup d_a_alink literals * Restore doxygen, update CI & README.md (#1) * Fix build image ref (#2) --------- Co-authored-by: Luke Street <luke@street.dev>
Diffstat (limited to 'src/d/d_menu_save.cpp')
-rw-r--r--src/d/d_menu_save.cpp3447
1 files changed, 3447 insertions, 0 deletions
diff --git a/src/d/d_menu_save.cpp b/src/d/d_menu_save.cpp
new file mode 100644
index 0000000000..48fa2b7de3
--- /dev/null
+++ b/src/d/d_menu_save.cpp
@@ -0,0 +1,3447 @@
+//
+// Generated By: dol2asm
+// Translation Unit: d/d_menu_save
+//
+
+#define NO_INLINE_DLSTBASE_DRAW
+
+#include "d/d_menu_save.h"
+#include "JSystem/JKernel/JKRExpHeap.h"
+#include "JSystem/JKernel/JKRMemArchive.h"
+#include "stdio.h"
+#include "d/d_com_inf_game.h"
+#include "d/d_lib.h"
+#include "d/d_select_cursor.h"
+#include "d/d_file_sel_info.h"
+#include "d/d_file_sel_warning.h"
+#include "d/d_meter2_info.h"
+#include "d/d_msg_string.h"
+#include "dol2asm.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"
+#include "d/d_msg_scrn_explain.h"
+#include "JSystem/J2DGraph/J2DAnmLoader.h"
+#include "f_op/f_op_msg_mng.h"
+
+//
+// Forward References:
+//
+
+extern "C" void __ct__9dMs_HIO_cFv();
+extern "C" void __ct__12dMenu_save_cFv();
+extern "C" void _create__12dMenu_save_cFv();
+extern "C" void screenSet__12dMenu_save_cFv();
+extern "C" void initialize__12dMenu_save_cFv();
+extern "C" void displayInit__12dMenu_save_cFv();
+extern "C" void _open__12dMenu_save_cFv();
+extern "C" void _close__12dMenu_save_cFv();
+extern "C" void _delete__12dMenu_save_cFv();
+extern "C" void _move__12dMenu_save_cFv();
+extern "C" void saveSelAnm__12dMenu_save_cFv();
+extern "C" void selFileWakuAnm__12dMenu_save_cFv();
+extern "C" void bookIconAnm__12dMenu_save_cFv();
+extern "C" void memCardWatch__12dMenu_save_cFv();
+extern "C" void saveQuestion__12dMenu_save_cFv();
+extern "C" void saveQuestion2__12dMenu_save_cFv();
+extern "C" void saveQuestion21__12dMenu_save_cFv();
+extern "C" void saveQuestion3__12dMenu_save_cFv();
+extern "C" void saveQuestion4__12dMenu_save_cFv();
+extern "C" void saveGuide__12dMenu_save_cFv();
+extern "C" void memCardCheck__12dMenu_save_cFv();
+extern "C" void memCardErrMsgWaitKey__12dMenu_save_cFv();
+extern "C" void backSaveQuestionInitSet__12dMenu_save_cFv();
+extern "C" void backSaveQuestion__12dMenu_save_cFv();
+extern "C" void backSaveQuestion2__12dMenu_save_cFv();
+extern "C" void closeSelect__12dMenu_save_cFv();
+extern "C" void closeSelect2__12dMenu_save_cFv();
+extern "C" void iplSelMsgInitSet__12dMenu_save_cFv();
+extern "C" void iplSelInitSet__12dMenu_save_cFv();
+extern "C" void IPLSelectDisp1__12dMenu_save_cFv();
+extern "C" void IPLSelectDisp2__12dMenu_save_cFv();
+extern "C" void memCardErrGoIPLSel__12dMenu_save_cFv();
+extern "C" void IPLSelect2Disp__12dMenu_save_cFv();
+extern "C" void memCardErrGoIPLSel2__12dMenu_save_cFv();
+extern "C" void memCardErrGotoIPL__12dMenu_save_cFv();
+extern "C" void memCardErrMsgWaitFormatSel__12dMenu_save_cFv();
+extern "C" void cardFormatYesSelDisp__12dMenu_save_cFv();
+extern "C" void cardFormatNoSelDisp__12dMenu_save_cFv();
+extern "C" void memCardErrMsgWaitFormatSel2__12dMenu_save_cFv();
+extern "C" void cardFormatYesSel2Disp__12dMenu_save_cFv();
+extern "C" void memCardFormat__12dMenu_save_cFv();
+extern "C" void memCardFormatWait__12dMenu_save_cFv();
+extern "C" void gameFileMakeSelInitSet__12dMenu_save_cFv();
+extern "C" void makeGameFileSelDisp__12dMenu_save_cFv();
+extern "C" void memCardMakeGameFileSel__12dMenu_save_cFv();
+extern "C" void makeGameFileDisp__12dMenu_save_cFv();
+extern "C" void memCardMakeGameFile__12dMenu_save_cFv();
+extern "C" void memCardMakeGameFileWait__12dMenu_save_cFv();
+extern "C" void memCardCommandEnd__12dMenu_save_cFv();
+extern "C" void memCardCommandEnd2__12dMenu_save_cFv();
+extern "C" void memCardDataLoadWait__12dMenu_save_cFv();
+extern "C" void dataWrite__12dMenu_save_cFv();
+extern "C" void memCardDataSaveWait__12dMenu_save_cFv();
+extern "C" void memCardDataSaveWait2__12dMenu_save_cFv();
+extern "C" void gameContinueDisp__12dMenu_save_cFv();
+extern "C" void gameContinue__12dMenu_save_cFv();
+extern "C" void gameContinue2__12dMenu_save_cFv();
+extern "C" void gameContinue3__12dMenu_save_cFv();
+extern "C" void saveEnd__12dMenu_save_cFv();
+extern "C" void endingNoSave__12dMenu_save_cFv();
+extern "C" void endingNoSave2__12dMenu_save_cFv();
+extern "C" void endingDataCheck__12dMenu_save_cFv();
+extern "C" void retryQuestion0__12dMenu_save_cFv();
+extern "C" void retryQuestion1__12dMenu_save_cFv();
+extern "C" void retryQuestion2__12dMenu_save_cFv();
+extern "C" void restartInit__12dMenu_save_cFv();
+extern "C" void saveWait__12dMenu_save_cFv();
+extern "C" void messageChange__12dMenu_save_cFv();
+extern "C" void YesNoSelect__12dMenu_save_cFv();
+extern "C" void msgTxtSet__12dMenu_save_cFUsb();
+extern "C" void openSaveSelect__12dMenu_save_cFv();
+extern "C" void openSaveSelect2__12dMenu_save_cFv();
+extern "C" void openSaveSelect3__12dMenu_save_cFv();
+extern "C" void saveSelect__12dMenu_save_cFv();
+extern "C" void saveSelectStart__12dMenu_save_cFv();
+extern "C" void selectDataOpenMove__12dMenu_save_cFv();
+extern "C" void dataSelectAnmSet__12dMenu_save_cFv();
+extern "C" void saveSelectMoveAnime__12dMenu_save_cFv();
+extern "C" void saveYesNoSelect__12dMenu_save_cFv();
+extern "C" void yesnoSelectStart__12dMenu_save_cFv();
+extern "C" void saveMoveDisp__12dMenu_save_cFv();
+extern "C" void saveMoveDisp2__12dMenu_save_cFv();
+extern "C" void yesnoSelectAnmSet__12dMenu_save_cFUc();
+extern "C" void yesNoCursorMoveAnm__12dMenu_save_cFv();
+extern "C" void yesnoCancelAnmSet__12dMenu_save_cFv();
+extern "C" void saveYesNoCancelMove__12dMenu_save_cFv();
+extern "C" void headerTxtSet__12dMenu_save_cFUs();
+extern "C" void headerTxtChangeAnm__12dMenu_save_cFv();
+extern "C" void errDispInitSet__12dMenu_save_cFi();
+extern "C" void msgWindowInitOpen__12dMenu_save_cFv();
+extern "C" void msgWindowOpen__12dMenu_save_cFv();
+extern "C" void msgWindowClose__12dMenu_save_cFv();
+extern "C" void errYesNoSelect__12dMenu_save_cFUcUc();
+extern "C" void errCurMove__12dMenu_save_cFUcUc();
+extern "C" void errYesNoCursorMoveAnm__12dMenu_save_cFv();
+extern "C" void errorTxtSet__12dMenu_save_cFUs();
+extern "C" void errorTxtChangeAnm__12dMenu_save_cFv();
+extern "C" void saveSelectOpenInit__12dMenu_save_cFv();
+extern "C" void selectDataBaseMoveAnmInitSet__12dMenu_save_cFii();
+extern "C" void selectDataBaseMoveAnm__12dMenu_save_cFv();
+extern "C" void saveSelectOpenAnmSet__12dMenu_save_cFv();
+extern "C" void selectDataMoveAnmInitSet__12dMenu_save_cFii();
+extern "C" void selectDataMoveAnm__12dMenu_save_cFv();
+extern "C" void yesnoMenuMoveAnmInitSet__12dMenu_save_cFiiUc();
+extern "C" void yesnoMenuMoveAnm__12dMenu_save_cFv();
+extern "C" void yesnoSelectMoveAnm__12dMenu_save_cFUc();
+extern "C" void yesnoCursorShow__12dMenu_save_cFv();
+extern "C" void errorMoveAnmInitSet__12dMenu_save_cFii();
+extern "C" void errorMoveAnm__12dMenu_save_cFv();
+extern "C" void modoruTxtDispAnmInit__12dMenu_save_cFUc();
+extern "C" void modoruTxtDispAnm__12dMenu_save_cFv();
+extern "C" void ketteiTxtDispAnmInit__12dMenu_save_cFUc();
+extern "C" void ketteiTxtDispAnm__12dMenu_save_cFv();
+extern "C" void selectWakuAlpahAnmInit__12dMenu_save_cFUcUcUcUc();
+extern "C" void selectWakuAlpahAnm__12dMenu_save_cFUc();
+extern "C" void selFileCursorShow__12dMenu_save_cFv();
+extern "C" void yesnoWakuAlpahAnmInit__12dMenu_save_cFUcUcUcUc();
+extern "C" void yesnoWakuAlpahAnm__12dMenu_save_cFUc();
+extern "C" void dataSave__12dMenu_save_cFv();
+extern "C" void setSaveData__12dMenu_save_cFv();
+extern "C" void setInitSaveData__12dMenu_save_cFv();
+extern "C" void _draw__12dMenu_save_cFv();
+extern "C" void _draw2__12dMenu_save_cFv();
+extern "C" void draw__23dDlst_MenuSaveExplain_cFv();
+extern "C" void draw__16dDlst_MenuSave_cFv();
+extern "C" void __dt__16dDlst_MenuSave_cFv();
+extern "C" void __dt__23dDlst_MenuSaveExplain_cFv();
+extern "C" void __dt__9dMs_HIO_cFv();
+extern "C" void __sinit_d_menu_save_cpp();
+extern "C" extern char const* const d_menu_d_menu_save__stringBase0;
+
+//
+// External References:
+//
+
+extern "C" void mDoExt_getJ2dHeap__Fv();
+extern "C" void mDoExt_getMesgFont__Fv();
+extern "C" void mDoExt_removeMesgFont__Fv();
+extern "C" void mDoExt_getSubFont__Fv();
+extern "C" void mDoExt_removeSubFont__Fv();
+extern "C" void create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap();
+extern "C" void load__15mDoMemCd_Ctrl_cFv();
+extern "C" void LoadSync__15mDoMemCd_Ctrl_cFPvUlUl();
+extern "C" void save__15mDoMemCd_Ctrl_cFPvUlUl();
+extern "C" void SaveSync__15mDoMemCd_Ctrl_cFv();
+extern "C" void getStatus__15mDoMemCd_Ctrl_cFUl();
+extern "C" void command_format__15mDoMemCd_Ctrl_cFv();
+extern "C" void FormatSync__15mDoMemCd_Ctrl_cFv();
+extern "C" void command_attach__15mDoMemCd_Ctrl_cFv();
+extern "C" void mDoMemCdRWm_TestCheckSumGameData__FPv();
+extern "C" void mDoMemCdRWm_SetCheckSumGameData__FPUcUc();
+extern "C" void fopMsgM_messageGet__FPcUl();
+extern "C" void __ct__9STControlFssssffss();
+extern "C" void checkTrigger__9STControlFv();
+extern "C" void checkLeftTrigger__9STControlFv();
+extern "C" void checkRightTrigger__9STControlFv();
+extern "C" void checkUpTrigger__9STControlFv();
+extern "C" void checkDownTrigger__9STControlFv();
+extern "C" void setItem__17dSv_player_item_cFiUc();
+extern "C" void getItem__17dSv_player_item_cCFib();
+extern "C" void isFirstBit__21dSv_player_get_item_cCFUc();
+extern "C" void offEventBit__11dSv_event_cFUs();
+extern "C" void isEventBit__11dSv_event_cCFUs();
+extern "C" void putSave__10dSv_info_cFi();
+extern "C" void memory_to_card__10dSv_info_cFPci();
+extern "C" void initdata_to_card__10dSv_info_cFPci();
+extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c();
+extern "C" void __ct__15dFile_warning_cFP10JKRArchiveUc();
+extern "C" void _move__15dFile_warning_cFv();
+extern "C" void openInit__15dFile_warning_cFv();
+extern "C" void closeInit__15dFile_warning_cFv();
+extern "C" void init__15dFile_warning_cFv();
+extern "C" void _draw__15dFile_warning_cFv();
+extern "C" void __ct__12dFile_info_cFP10JKRArchiveUc();
+extern "C" void setSaveData__12dFile_info_cFP10dSv_save_ciUc();
+extern "C" void _draw__12dFile_info_cFv();
+extern "C" void __ct__16dSelect_cursor_cFUcfP10JKRArchive();
+extern "C" void setPos__16dSelect_cursor_cFffP7J2DPaneb();
+extern "C" void setParam__16dSelect_cursor_cFfffff();
+extern "C" void setAlphaRate__16dSelect_cursor_cFf();
+extern "C" void setMiniGameItem__13dMeter2Info_cFUc();
+extern "C" void resetMiniGameItem__13dMeter2Info_cFb();
+extern "C" void __ct__17dMsgScrnExplain_cFP9STControlUcbUc();
+extern "C" void move__17dMsgScrnExplain_cFv();
+extern "C" void draw__17dMsgScrnExplain_cFP13J2DOrthoGraph();
+extern "C" void openExplain__17dMsgScrnExplain_cFUlUcUcUcb();
+extern "C" void __ct__12dMsgString_cFv();
+extern "C" void __dt__12dMsgString_cFv();
+extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap();
+extern "C" void
+colorAnime__8CPaneMgrFsQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorUc();
+extern "C" void getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs();
+extern "C" void dPaneClass_showNullPane__FP9J2DScreen();
+extern "C" void __ct__13CPaneMgrAlphaFP9J2DScreenUxUcP10JKRExpHeap();
+extern "C" void show__13CPaneMgrAlphaFv();
+extern "C" void alphaAnime__13CPaneMgrAlphaFsUcUcUc();
+extern "C" void cAPICPad_ANY_BUTTON__FUl();
+extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
+extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
+extern "C" void checkBgmIDPlaying__8Z2SeqMgrFUl();
+extern "C" void* __nw__FUl();
+extern "C" void __dl__FPv();
+extern "C" void getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader();
+extern "C" void animationTransform__7J2DPaneFv();
+extern "C" void __ct__9J2DScreenFv();
+extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive();
+extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
+extern "C" void animation__9J2DScreenFv();
+extern "C" void getStringPtr__10J2DTextBoxCFv();
+extern "C" void setString__10J2DTextBoxFPCce();
+extern "C" void setString__10J2DTextBoxFsPCce();
+extern "C" void load__20J2DAnmLoaderDataBaseFPCv();
+extern "C" void __register_global_object();
+extern "C" void __ptmf_test();
+extern "C" void __ptmf_scall();
+extern "C" void _savegpr_23();
+extern "C" void _savegpr_25();
+extern "C" void _savegpr_26();
+extern "C" void _savegpr_27();
+extern "C" void _savegpr_28();
+extern "C" void _savegpr_29();
+extern "C" void _restgpr_23();
+extern "C" void _restgpr_25();
+extern "C" void _restgpr_26();
+extern "C" void _restgpr_27();
+extern "C" void _restgpr_28();
+extern "C" void _restgpr_29();
+extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */];
+extern "C" extern void* __vt__12dDlst_base_c[3];
+extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
+extern "C" extern void* __vt__12dMenu_save_c[3 + 3 /* padding */];
+extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
+extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
+extern "C" u8 sManager__10JFWDisplay[4];
+extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
+
+/* ############################################################################################## */
+/* 803BDF78-803BDF84 01B098 000C+00 2/2 0/0 0/0 .data cNullVec__6Z2Calc */
+SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+/* 803BDF84-803BDF90 01B0A4 000C+00 3/3 0/0 0/0 .data SelStartFrameTbl */
+SECTION_DATA static int SelStartFrameTbl[3] = {
+ 59,
+ 99,
+ 139,
+};
+
+/* 803BDF90-803BDF9C 01B0B0 000C+00 3/3 0/0 0/0 .data SelEndFrameTbl */
+SECTION_DATA static int SelEndFrameTbl[3] = {
+ 69,
+ 109,
+ 149,
+};
+
+/* 803BDF9C-803BDFA8 01B0BC 000C+00 2/2 0/0 0/0 .data SelOpenStartFrameTbl */
+SECTION_DATA static int SelOpenStartFrameTbl[3] = {
+ 249,
+ 448,
+ 648,
+};
+
+/* 803BDFA8-803BDFB4 01B0C8 000C+00 2/2 0/0 0/0 .data SelOpenEndFrameTbl */
+SECTION_DATA static int SelOpenEndFrameTbl[3] = {
+ 259,
+ 460,
+ 659,
+};
+
+/* 803BDFB4-803BDFC4 01B0D4 0010+00 2/2 0/0 0/0 .data YnSelStartFrameTbl */
+SECTION_DATA static int YnSelStartFrameTbl[2][2] = {
+ {2150, 3181},
+ {2139, 3171},
+};
+
+/* 803BDFC4-803BDFD8 01B0E4 0010+04 2/2 0/0 0/0 .data YnSelEndFrameTbl */
+SECTION_DATA static int YnSelEndFrameTbl[2][2] = {{2138, 3171}, {2150, 3181}};
+
+/* 803BDFD8-803BDFF0 01B0F8 0018+00 0/1 0/0 0/0 .data l_tagName0$3857 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName0[3] = {'w_sel_00', 'w_sel_01', 'w_sel_02'};
+#pragma pop
+
+/* 803BDFF0-803BE000 01B110 0010+00 0/1 0/0 0/0 .data l_tagName000$3866 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName000[2] = {'w_no_t', 'w_yes_t'};
+#pragma pop
+
+/* 803BE000-803BE010 01B120 0010+00 0/1 0/0 0/0 .data l_tagName000U$3867 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName000U[2] = {'f_no_t', 'f_yes_t'};
+#pragma pop
+
+/* 803BE010-803BE020 01B130 0010+00 0/1 0/0 0/0 .data l_tagName00$3879 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName00[2] = {'w_modo', 'w_kete'};
+#pragma pop
+
+/* 803BE020-803BE030 01B140 0010+00 0/1 0/0 0/0 .data l_tagName00U$3880 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName00U[2] = {'f_modo', 'f_kete'};
+#pragma pop
+
+/* 803BE030-803BE048 01B150 0018+00 0/1 0/0 0/0 .data l_tagName3$3887 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName3[3] = {'w_moyo00', 'w_moyo01', 'w_moyo02'};
+#pragma pop
+
+/* 803BE048-803BE060 01B168 0018+00 0/1 0/0 0/0 .data l_tagName4$3888 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName4[3] = {'w_gold00', 'w_gold01', 'w_gold02'};
+#pragma pop
+
+/* 803BE060-803BE078 01B180 0018+00 0/1 0/0 0/0 .data l_tagName5$3889 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName5[3] = {'w_go2_00', 'w_go2_01', 'w_go2_02'};
+#pragma pop
+
+/* 803BE078-803BE088 01B198 0010+00 0/1 0/0 0/0 .data l_tagName9$3898 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName9[2] = {'w_no_m', 'w_yes_m'};
+#pragma pop
+
+/* 803BE088-803BE098 01B1A8 0010+00 0/1 0/0 0/0 .data l_tagName10$3899 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName10[2] = {'w_no_g', 'w_yes_g'};
+#pragma pop
+
+/* 803BE098-803BE0A8 01B1B8 0010+00 0/1 0/0 0/0 .data l_tagName11$3900 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName11[2] = {'w_no_gr', 'w_yes_gr'};
+#pragma pop
+
+/* 803BE0A8-803BE0C0 01B1C8 0018+00 0/1 0/0 0/0 .data l_tagName12$3909 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName12[3] = {'w_bk_l00', 'w_bk_l01', 'w_bk_l02'};
+#pragma pop
+
+/* 803BE0C0-803BE0D0 01B1E0 0010+00 0/1 0/0 0/0 .data l_tagName21$3916 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName21[2] = {'t_for', 't_for1'};
+#pragma pop
+
+/* 803BE0D0-803BE120 01B1F0 0050+00 0/1 0/0 0/0 .data l_tagName211$3917 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName211[10] = {'tmoyou00', 'tmoyou01', 'tmoyou02', 'tmoyou03',
+ 'tmoyou04', 'tmoyou05', 'tmoyou06', 'tmoyou07',
+ 'tmoyou08', 'tmoyou09'};
+#pragma pop
+
+/* 803BE120-803BE130 01B240 0010+00 0/1 0/0 0/0 .data l_tagName20$3929 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName20[2] = {'er_for0', 'er_for1'};
+#pragma pop
+
+/* 803BE130-803BE148 01B250 0018+00 0/1 0/0 0/0 .data l_tagName13$3937 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u64 l_tagName13[3] = {'w_dat_i0', 'w_dat_i1', 'w_dat_i2'};
+#pragma pop
+
+/* 8042E84C-8042E860 05B56C 0010+04 21/21 0/0 0/0 .bss g_msHIO */
+static dMs_HIO_c g_msHIO;
+
+/* 803BE424-803BE70C 01B544 02E8+00 1/2 0/0 0/0 .data MenuSaveProc */
+typedef void (dMenu_save_c::*menuProcFunc)();
+SECTION_DATA menuProcFunc MenuSaveProc[62] = {
+ &dMenu_save_c::saveQuestion,
+ &dMenu_save_c::saveQuestion2,
+ &dMenu_save_c::saveQuestion21,
+ &dMenu_save_c::saveQuestion3,
+ &dMenu_save_c::saveQuestion4,
+ &dMenu_save_c::saveGuide,
+ &dMenu_save_c::memCardCheck,
+ &dMenu_save_c::backSaveQuestion,
+ &dMenu_save_c::backSaveQuestion2,
+ &dMenu_save_c::memCardErrMsgWaitKey,
+ &dMenu_save_c::IPLSelectDisp1,
+ &dMenu_save_c::IPLSelectDisp2,
+ &dMenu_save_c::memCardErrGoIPLSel,
+ &dMenu_save_c::IPLSelect2Disp,
+ &dMenu_save_c::memCardErrGoIPLSel2,
+ &dMenu_save_c::memCardErrGotoIPL,
+ &dMenu_save_c::memCardErrMsgWaitFormatSel,
+ &dMenu_save_c::cardFormatYesSelDisp,
+ &dMenu_save_c::cardFormatNoSelDisp,
+ &dMenu_save_c::memCardErrMsgWaitFormatSel2,
+ &dMenu_save_c::cardFormatYesSel2Disp,
+ &dMenu_save_c::memCardFormat,
+ &dMenu_save_c::memCardFormatWait,
+ &dMenu_save_c::makeGameFileSelDisp,
+ &dMenu_save_c::memCardMakeGameFileSel,
+ &dMenu_save_c::makeGameFileDisp,
+ &dMenu_save_c::memCardMakeGameFile,
+ &dMenu_save_c::memCardMakeGameFileWait,
+ &dMenu_save_c::memCardCommandEnd,
+ &dMenu_save_c::memCardCommandEnd2,
+ &dMenu_save_c::memCardDataLoadWait,
+ &dMenu_save_c::memCardDataSaveWait,
+ &dMenu_save_c::memCardDataSaveWait2,
+ &dMenu_save_c::gameContinueDisp,
+ &dMenu_save_c::gameContinue,
+ &dMenu_save_c::gameContinue2,
+ &dMenu_save_c::gameContinue3,
+ &dMenu_save_c::saveEnd,
+ &dMenu_save_c::endingNoSave,
+ &dMenu_save_c::endingNoSave2,
+ &dMenu_save_c::endingDataCheck,
+ &dMenu_save_c::saveWait,
+ &dMenu_save_c::messageChange,
+ &dMenu_save_c::retryQuestion0,
+ &dMenu_save_c::retryQuestion1,
+ &dMenu_save_c::retryQuestion2,
+ &dMenu_save_c::openSaveSelect,
+ &dMenu_save_c::openSaveSelect2,
+ &dMenu_save_c::openSaveSelect3,
+ &dMenu_save_c::saveSelect,
+ &dMenu_save_c::saveSelectMoveAnime,
+ &dMenu_save_c::selectDataOpenMove,
+ &dMenu_save_c::saveYesNoSelect,
+ &dMenu_save_c::yesNoCursorMoveAnm,
+ &dMenu_save_c::saveYesNoCancelMove,
+ &dMenu_save_c::saveMoveDisp,
+ &dMenu_save_c::saveMoveDisp2,
+ &dMenu_save_c::msgWindowInitOpen,
+ &dMenu_save_c::msgWindowOpen,
+ &dMenu_save_c::msgWindowClose,
+ &dMenu_save_c::errYesNoCursorMoveAnm,
+};
+
+/* 803BE70C-803BE718 -00001 000C+00 1/1 0/0 0/0 .data @4794 */
+SECTION_DATA static void* lit_4794[3] = {
+ (void*)NULL,
+ (void*)0xFFFFFFFF,
+ (void*)iplSelMsgInitSet__12dMenu_save_cFv,
+};
+
+/* 803BE718-803BE724 -00001 000C+00 1/1 0/0 0/0 .data @4797 */
+SECTION_DATA static void* lit_4797[3] = {
+ (void*)NULL,
+ (void*)0xFFFFFFFF,
+ (void*)gameFileMakeSelInitSet__12dMenu_save_cFv,
+};
+
+/* 803BE724-803BE758 -00001 0034+00 1/1 0/0 0/0 .data @4802 */
+SECTION_DATA static void* lit_4802[13] = {
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x4C),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x19C),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x184),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x1E8),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x1E8),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x1E8),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x10C),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x10C),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x7C),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0xAC),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0xDC),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x134),
+ (void*)(((char*)memCardCheck__12dMenu_save_cFv) + 0x134),
+};
+
+/* 803BE758-803BE764 -00001 000C+00 1/1 0/0 0/0 .data @4901 */
+SECTION_DATA static void* lit_4901[3] = {
+ (void*)NULL,
+ (void*)0xFFFFFFFF,
+ (void*)iplSelInitSet__12dMenu_save_cFv,
+};
+
+/* 803BE764-803BE774 01B884 0010+00 2/2 1/1 0/0 .data __vt__16dDlst_MenuSave_c */
+SECTION_DATA extern void* __vt__16dDlst_MenuSave_c[4] = {
+ (void*)NULL /* RTTI */,
+ (void*)NULL,
+ (void*)draw__16dDlst_MenuSave_cFv,
+ (void*)__dt__16dDlst_MenuSave_cFv,
+};
+
+/* 803BE774-803BE7CC 01B894 0010+48 2/2 1/1 0/0 .data __vt__23dDlst_MenuSaveExplain_c */
+SECTION_DATA extern void* __vt__23dDlst_MenuSaveExplain_c[4 + 18 /* padding */] = {
+ (void*)NULL /* RTTI */,
+ (void*)NULL,
+ (void*)draw__23dDlst_MenuSaveExplain_cFv,
+ (void*)__dt__23dDlst_MenuSaveExplain_cFv,
+ /* padding */
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+};
+
+/* 801EF654-801EF6A0 1E9F94 004C+00 1/1 0/0 0/0 .text __ct__9dMs_HIO_cFv */
+dMs_HIO_c::dMs_HIO_c() {
+ mDisplayWaitFrames = 15;
+ mCardWaitFrames = 90;
+ mEffectDispFrames = 5;
+ mCharSwitchFrames = 5;
+ mSelectIcon = 5;
+ mSelectFrames = 5;
+ mFadeOutTimer = 15;
+ mTitleMsgCheck = false;
+ field_0xd = 0;
+ mErrorMsgCheck = false;
+ field_0xf = 0;
+}
+
+/* 801EF6A0-801EF7AC 1E9FE0 010C+00 0/0 3/3 0/0 .text __ct__12dMenu_save_cFv */
+dMenu_save_c::dMenu_save_c() {
+ mpScrnExplain = NULL;
+ mWarning = NULL;
+ mSelIcon = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ mpSelWakuMoyo[i] = NULL;
+ mpSelWakuGold[i] = NULL;
+ mpSelWakuGold2[i] = NULL;
+ mpBookWaku[i] = NULL;
+ mpSelData[i] = NULL;
+ mFileInfo[i] = NULL;
+ }
+ mpSelectMoveBase = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ mpNoYes[i] = NULL;
+ mNoYesBase[i] = NULL;
+ mNoYesGold[i] = NULL;
+ mNoYesGold2[i] = NULL;
+ mpHeaderTxtPane[i] = NULL;
+ mpErrTxtPane[i] = NULL;
+ mpNoYesTxt[i] = NULL;
+ }
+
+ field_0x40 = NULL;
+ field_0x44 = NULL;
+ field_0x48 = NULL;
+ mpFileWakuAnm = NULL;
+ mpFileWakuRotAnm = NULL;
+ field_0x150 = NULL;
+ field_0x158 = NULL;
+ field_0x160 = NULL;
+ field_0x4c = NULL;
+ mpBBtnIcon = NULL;
+ mpABtnIcon = NULL;
+ mpBackTxt = NULL;
+ mpConfirmTxt = NULL;
+ mpArchive = NULL;
+
+ mDisplayMenu = false;
+ mpMount = NULL;
+ field_0x21a2 = 0;
+ field_0x21a1 = 0;
+}
+
+/* 80454438-8045443C 002A38 0004+00 1/1 0/0 0/0 .sdata2 @3849 */
+SECTION_SDATA2 static f32 lit_3849 = 9.0f / 10.0f;
+
+/* 8045443C-80454440 002A3C 0004+00 2/2 0/0 0/0 .sdata2 @3850 */
+SECTION_SDATA2 static f32 lit_3850 = 0.5f;
+
+/* 801EF7AC-801EF904 1EA0EC 0158+00 0/0 3/3 0/0 .text _create__12dMenu_save_cFv */
+void dMenu_save_c::_create() {
+ stick = new STControl(2, 2, 1, 1, lit_3849, lit_3850, 0, 0x2000);
+
+ if (mUseType == TYPE_DEFAULT || mUseType == TYPE_WHITE_EVENT || mUseType == TYPE_BLACK_EVENT) {
+ mpMount =
+ mDoDvdThd_mountArchive_c::create("/res/Layout/saveres.arc", 0, mDoExt_getJ2dHeap());
+ }
+
+ if (mUseType == 2 || mUseType == TYPE_WHITE_EVENT || mUseType == TYPE_BLACK_EVENT) {
+ u8 var_r31;
+ switch (mUseType) {
+ case 2:
+ var_r31 = 2;
+ break;
+ case TYPE_BLACK_EVENT:
+ var_r31 = 3;
+ break;
+ default:
+ case TYPE_WHITE_EVENT:
+ var_r31 = 1;
+ break;
+ }
+
+ mpScrnExplain = new dMsgScrnExplain_c(stick, var_r31, false, 0);
+ field_0x219d = 0;
+ field_0x2190 = 0;
+ field_0x2192 = 0;
+ field_0x2194 = 0;
+ mMenuSaveExplain.setScrnExplain(mpScrnExplain);
+ }
+
+ displayInit();
+ g_msHIO.field_0x4 = -1;
+}
+
+/* ############################################################################################## */
+/* 80397960-80397960 023FC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+#pragma push
+#pragma force_active on
+SECTION_DEAD static char const* const stringBase_80397978 = "zelda_file_select2.blo";
+SECTION_DEAD static char const* const stringBase_8039798F = "zelda_file_select2.bck";
+SECTION_DEAD static char const* const stringBase_803979A6 = "zelda_file_select2.bpk";
+SECTION_DEAD static char const* const stringBase_803979BD = "zelda_file_select2_02.btk";
+SECTION_DEAD static char const* const stringBase_803979D7 = "zelda_file_select2.btk";
+SECTION_DEAD static char const* const stringBase_803979EE = "zelda_file_select2.brk";
+SECTION_DEAD static char const* const stringBase_80397A05 = "";
+#pragma pop
+
+/* 80450740-80450744 0001C0 0002+02 1/1 0/0 0/0 .sdata l_msgNum0$3868 */
+SECTION_SDATA static u8 l_msgNum0[2] = {
+ 0x08,
+ 0x07,
+};
+
+/* 80450744-80450748 0001C4 0002+02 1/1 0/0 0/0 .sdata l_msgNum$3881 */
+SECTION_SDATA static u8 l_msgNum[2] = {
+ 0x54,
+ 0x55,
+};
+
+/* 80454440-80454444 002A40 0004+00 1/1 0/0 0/0 .sdata2 @4173 */
+SECTION_SDATA2 static f32 lit_4173 = 19.0f;
+
+/* 80454444-80454448 002A44 0004+00 1/1 0/0 0/0 .sdata2 @4174 */
+SECTION_SDATA2 static f32 lit_4174 = 20.0f;
+
+/* 80454448-8045444C 002A48 0004+00 13/13 0/0 0/0 .sdata2 @4175 */
+SECTION_SDATA2 static u8 lit_4175[4] = {
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+};
+
+/* 8045444C-80454450 002A4C 0004+00 1/1 0/0 0/0 .sdata2 @4176 */
+SECTION_SDATA2 static f32 lit_4176 = 440.0f;
+
+/* 80454450-80454454 002A50 0004+00 1/1 0/0 0/0 .sdata2 @4177 */
+SECTION_SDATA2 static f32 lit_4177 = 198.0f;
+
+/* 80454454-80454458 002A54 0004+00 1/1 0/0 0/0 .sdata2 @4178 */
+SECTION_SDATA2 static f32 lit_4178 = 21.0f;
+
+/* 80454458-8045445C 002A58 0004+00 20/20 0/0 0/0 .sdata2 @4179 */
+SECTION_SDATA2 static f32 lit_4179 = 1.0f;
+
+/* 8045445C-80454460 002A5C 0004+00 3/3 0/0 0/0 .sdata2 @4180 */
+SECTION_SDATA2 static f32 lit_4180 = 24.0f / 25.0f;
+
+/* 80454460-80454464 002A60 0004+00 2/2 0/0 0/0 .sdata2 @4181 */
+SECTION_SDATA2 static f32 lit_4181 = 47.0f / 50.0f;
+
+/* 80454464-80454468 002A64 0004+00 2/2 0/0 0/0 .sdata2 @4182 */
+SECTION_SDATA2 static f32 lit_4182 = 3.0f / 100.0f;
+
+/* 80454468-80454470 002A68 0004+04 2/2 0/0 0/0 .sdata2 @4183 */
+SECTION_SDATA2 static f32 lit_4183[1 + 1 /* padding */] = {
+ 7.0f / 10.0f,
+ /* padding */
+ 0.0f,
+};
+
+/* 80454470-80454478 002A70 0008+00 17/17 0/0 0/0 .sdata2 @4185 */
+SECTION_SDATA2 static f64 lit_4185 = 4503601774854144.0 /* cast s32 to float */;
+
+/* 801EF904-801F0938 1EA244 1034+00 1/1 0/0 0/0 .text screenSet__12dMenu_save_cFv */
+void dMenu_save_c::screenSet() {
+ mSaveSel.Scr = new J2DScreen();
+ mSaveSel.Scr->setPriority("zelda_file_select2.blo", 0x1100000, mpArchive);
+ dPaneClass_showNullPane(mSaveSel.Scr);
+
+ mSaveSel.font[0] = mDoExt_getMesgFont();
+ mSaveSel.font[1] = mDoExt_getSubFont();
+ mSaveSel.mMsgString = new dMsgString_c();
+
+ void* bck = JKRGetNameResource("zelda_file_select2.bck", mpArchive);
+ field_0x40 = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(bck);
+ field_0x44 = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(bck);
+ field_0x48 = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(bck);
+ field_0x4c = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(bck);
+ field_0x40->searchUpdateMaterialID(mSaveSel.Scr);
+ field_0x44->searchUpdateMaterialID(mSaveSel.Scr);
+ field_0x48->searchUpdateMaterialID(mSaveSel.Scr);
+ field_0x4c->searchUpdateMaterialID(mSaveSel.Scr);
+
+ mpSelectMoveBase = new CPaneMgr(mSaveSel.Scr, 'w_move_n', 0, NULL);
+ field_0xa0 = mSaveSel.Scr->search('wmenu_n');
+
+ for (int i = 0; i < 3; i++) {
+ mpSelData[i] = new CPaneMgr(mSaveSel.Scr, l_tagName0[i], 0, NULL);
+ }
+
+ mpNoYes[0] = new CPaneMgr(mSaveSel.Scr, 'w_no_n', 0, NULL);
+ mpNoYes[1] = new CPaneMgr(mSaveSel.Scr, 'w_yes_n', 0, NULL);
+
+ for (int i = 0; i < 2; i++) {
+ mpNoYesTxt[i] = new CPaneMgr(mSaveSel.Scr, l_tagName000U[i], 0, NULL);
+ mSaveSel.Scr->search(l_tagName000[i])->hide();
+ ((J2DTextBox*)mpNoYesTxt[i]->getPanePtr())->setFont(mSaveSel.font[0]);
+
+ char message[32];
+ fopMsgM_messageGet(message, l_msgNum0[i]);
+ ((J2DTextBox*)mpNoYesTxt[i]->getPanePtr())->setString(message);
+ }
+
+ mSaveSel.Scr->search('Wi_btn_n')->hide();
+ mSaveSel.Scr->search('GC_btn_n')->show();
+
+ mpBBtnIcon = new CPaneMgrAlpha(mSaveSel.Scr, 'w_nbbtn', 2, NULL);
+ mpABtnIcon = new CPaneMgrAlpha(mSaveSel.Scr, 'w_nabtn', 2, NULL);
+ mpBackTxt = new CPaneMgrAlpha(mSaveSel.Scr, 'f_modo', 2, NULL);
+ mpConfirmTxt = new CPaneMgrAlpha(mSaveSel.Scr, 'f_kete', 2, NULL);
+
+ mpBackTxt->setAlpha(0);
+ mpConfirmTxt->setAlpha(0);
+ mpBBtnIcon->setAlpha(128);
+ mpABtnIcon->setAlpha(128);
+
+ for (int i = 0; i < 2; i++) {
+ J2DTextBox* tbox[2];
+ tbox[i] = (J2DTextBox*)mSaveSel.Scr->search(l_tagName00U[i]);
+ mSaveSel.Scr->search(l_tagName00[i])->hide();
+ tbox[i]->setFont(mSaveSel.font[0]);
+
+ char message[32];
+ fopMsgM_messageGet(message, l_msgNum[i]);
+ tbox[i]->setString(message);
+ }
+
+ const void* bpk = JKRFileLoader::getGlbResource("zelda_file_select2.bpk", mpArchive);
+ mpFileWakuAnm = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(bpk);
+ mpFileWakuAnm->searchUpdateMaterialID(mSaveSel.Scr);
+ mFileWakuAnmFrame = 0;
+
+ const void* btk = JKRFileLoader::getGlbResource("zelda_file_select2_02.btk", mpArchive);
+ mpFileWakuRotAnm = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk);
+ mpFileWakuRotAnm->searchUpdateMaterialID(mSaveSel.Scr);
+ mFileWakuRotAnmFrame = 0;
+
+ for (int i = 0; i < 3; i++) {
+ mpSelWakuMoyo[i] = new CPaneMgr(mSaveSel.Scr, l_tagName3[i], 0, NULL);
+ mpSelWakuGold[i] = new CPaneMgr(mSaveSel.Scr, l_tagName4[i], 0, NULL);
+ mpSelWakuGold2[i] = new CPaneMgr(mSaveSel.Scr, l_tagName5[i], 0, NULL);
+
+ mpSelWakuMoyo[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mpSelWakuGold[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mpSelWakuGold2[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mpSelWakuGold[i]->getPanePtr()->setAnimation(mpFileWakuRotAnm);
+ mpSelWakuGold2[i]->getPanePtr()->setAnimation(mpFileWakuRotAnm);
+ }
+
+ for (int i = 0; i < 2; i++) {
+ mNoYesBase[i] = new CPaneMgr(mSaveSel.Scr, l_tagName9[i], 0, NULL);
+ mNoYesGold[i] = new CPaneMgr(mSaveSel.Scr, l_tagName10[i], 0, NULL);
+ mNoYesGold2[i] = new CPaneMgr(mSaveSel.Scr, l_tagName11[i], 0, NULL);
+
+ mNoYesBase[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mNoYesGold[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mNoYesGold2[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mNoYesGold[i]->getPanePtr()->setAnimation(mpFileWakuRotAnm);
+ mNoYesGold2[i]->getPanePtr()->setAnimation(mpFileWakuRotAnm);
+ mNoYesBase[i]->setAlpha(0);
+ mNoYesGold[i]->setAlpha(0);
+ mNoYesGold2[i]->setAlpha(0);
+ }
+
+ field_0x150 = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(bpk);
+ field_0x150->searchUpdateMaterialID(mSaveSel.Scr);
+
+ const void* btk2 = JKRFileLoader::getGlbResource("zelda_file_select2.btk", mpArchive);
+ field_0x158 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk2);
+ field_0x158->searchUpdateMaterialID(mSaveSel.Scr);
+
+ const void* brk = JKRFileLoader::getGlbResource("zelda_file_select2.brk", mpArchive);
+ field_0x160 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(brk);
+ field_0x160->searchUpdateMaterialID(mSaveSel.Scr);
+
+ field_0x154 = 0;
+ field_0x15c = 0;
+ field_0x164 = 0;
+
+ for (int i = 0; i < 3; i++) {
+ mpBookWaku[i] = new CPaneMgr(mSaveSel.Scr, l_tagName12[i], 0, NULL);
+
+ mpBookWaku[i]->getPanePtr()->setAnimation(field_0x150);
+ mpBookWaku[i]->getPanePtr()->setAnimation(field_0x158);
+ mpBookWaku[i]->getPanePtr()->setAnimation(field_0x160);
+ mpBookWaku[i]->setAlpha(0);
+ }
+
+ mSaveSel.Scr->search('w_tabi_s')->hide();
+ mSaveSel.Scr->search('w_tabi_x')->hide();
+
+ for (int i = 0; i < 10; i++) {
+ mSaveSel.Scr->search(l_tagName211[i])->hide();
+ }
+
+ for (int i = 0; i < 2; i++) {
+ mpHeaderTxtPane[i] = new CPaneMgrAlpha(mSaveSel.Scr, l_tagName21[i], 0, NULL);
+
+ ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->setFont(mSaveSel.font[0]);
+ ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->setString(0x100, "");
+ ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->setFontSize(19.0f, 19.0f);
+ ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->setLineSpace(20.0f);
+ ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->setCharSpace(0.0f);
+ mpHeaderTxt[i] = ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->getStringPtr();
+ }
+
+ mpHeaderTxtPane[0]->setAlpha(255);
+ mpHeaderTxtPane[1]->setAlpha(0);
+ mHeaderTxtType = 0;
+
+ field_0xb4 = mSaveSel.Scr->search('w_er_n');
+ mSaveSel.Scr->search('w_er_msg')->hide();
+ mSaveSel.Scr->search('w_er_msR')->hide();
+
+ for (int i = 0; i < 2; i++) {
+ mpErrTxtPane[i] = new CPaneMgrAlpha(mSaveSel.Scr, l_tagName20[i], 0, NULL);
+
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->setFont(mSaveSel.font[0]);
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->setString(0x200, "");
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->resize(440.0f, 198.0f);
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->setFontSize(21.0f, 21.0f);
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->setLineSpace(21.0f);
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->setCharSpace(1.0f);
+ mpErrTxt[i] = ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->getStringPtr();
+ mpErrTxtPane[i]->show();
+ }
+
+ mErrTxtType = 0;
+ mpErrTxtPane[mErrTxtType]->setAlpha(255);
+ mpErrTxtPane[mErrTxtType ^ 1]->setAlpha(0);
+
+ mSelectedFile = dComIfGs_getDataNum();
+ mSelIcon = new dSelect_cursor_c(0, 1.0f, NULL);
+ mSelIcon->setParam(0.96f, 0.94f, 0.03f, 0.7f, 0.7f);
+
+ Vec* pos = &mpSelData[mSelectedFile]->getGlobalVtxCenter(false, 0);
+ mSelIcon->setPos(pos->x, pos->y, mpSelData[mSelectedFile]->getPanePtr(), true);
+ mSelIcon->setAlphaRate(0.0f);
+
+ J2DPane* pane = mSaveSel.Scr->search('Nm_02');
+ pane->setAnimation(field_0x40);
+ field_0x64 = 0;
+ field_0x50 = 1;
+ field_0x40->setFrame(field_0x50);
+ pane->animationTransform();
+ pane->setAnimation((J2DAnmTransformKey*)NULL);
+
+ mpHeaderTxtPane[0]->getPanePtr()->scale(1.0f, 1.0f);
+ mpHeaderTxtPane[1]->getPanePtr()->scale(1.0f, 1.0f);
+
+ for (int i = 0; i < 3; i++) {
+ mFileInfo[i] = new dFile_info_c(mpArchive, 1);
+ mFileInfo[i]->setBasePane(mSaveSel.Scr->search(l_tagName13[i]));
+ mpDataBase[i] = mFileInfo[i]->getDatBase();
+ mpNoDataBase[i] = mFileInfo[i]->getNoDatBase();
+ }
+
+ mWarning = new dFile_warning_c(mpArchive, 0);
+}
+
+
+/* 801F0938-801F0958 1EB278 0020+00 0/0 2/2 0/0 .text initialize__12dMenu_save_cFv */
+void dMenu_save_c::initialize() {
+ displayInit();
+}
+
+/* 801F0958-801F09AC 1EB298 0054+00 2/2 0/0 0/0 .text displayInit__12dMenu_save_cFv */
+void dMenu_save_c::displayInit() {
+ field_0x1bf = 1;
+ field_0x1c0 = 0;
+ field_0x64 = 0;
+ field_0xd2 = 0;
+ field_0x9c = 0;
+ field_0x17a = 0;
+ field_0x65 = 0;
+ field_0x9d = 0;
+ field_0xd3 = 0;
+ field_0x19c = 0;
+ field_0x19d = 0;
+ field_0x1a8 = 0;
+ field_0x1a9 = 0;
+ mMenuProc = PROC_SAVE_WAIT;
+ mSaveStatus = 1;
+ mEndStatus = 2;
+}
+
+/* 801F09AC-801F0B10 1EB2EC 0164+00 0/0 3/3 0/0 .text _open__12dMenu_save_cFv */
+bool dMenu_save_c::_open() {
+ field_0x1bf = 1;
+
+ if (mUseType == TYPE_DEFAULT || mUseType == TYPE_WHITE_EVENT || mUseType == TYPE_BLACK_EVENT) {
+ if (!mpMount->sync()) {
+ return false;
+ }
+
+ if (mpArchive == NULL) {
+ mpArchive = mpMount->getArchive();
+ screenSet();
+
+ if (mUseType == TYPE_DEFAULT) {
+ mDisplayMenu = true;
+ field_0x1bf = 0;
+ }
+
+ g_mDoMemCd_control.command_attach();
+ mpMount->destroy();
+ mpMount = NULL;
+ }
+ }
+
+ mYesNoCursor = CURSOR_NO;
+ field_0x2190 = 1;
+
+ switch (mUseType) {
+ case TYPE_DEFAULT:
+ mMenuProc = PROC_MEMCARD_CHECK;
+ break;
+ case TYPE_WHITE_EVENT:
+ case TYPE_BLACK_EVENT:
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x3CE, true); // "Do you want to save?"
+ mMenuProc = PROC_SAVE_QUESTION;
+ break;
+ case 2:
+ mMenuProc = PROC_RETRY_QUESTION0;
+ break;
+ }
+
+ mSaveStatus = 2;
+
+ if (dMeter2Info_getMiniGameItemSetFlag() != 0) {
+ dMeter2Info_resetMiniGameItem(true);
+ }
+
+ return true;
+}
+
+/* 801F0B10-801F0B28 1EB450 0018+00 0/0 1/1 0/0 .text _close__12dMenu_save_cFv */
+int dMenu_save_c::_close() {
+ mMenuProc = PROC_SAVE_WAIT;
+ mSaveStatus = 0;
+ return 1;
+}
+
+/* 801F0B28-801F1048 1EB468 0520+00 0/0 4/4 0/0 .text _delete__12dMenu_save_cFv */
+// creates extra data
+#ifdef NONMATCHING
+void dMenu_save_c::_delete() {
+ delete stick;
+
+ if (mpScrnExplain != NULL) {
+ delete mpScrnExplain;
+ mpScrnExplain = NULL;
+ }
+
+ if (mSaveSel.mMsgString != NULL) {
+ delete mSaveSel.mMsgString;
+ }
+
+ if (mSaveSel.Scr != NULL) {
+ delete mSaveSel.Scr;
+ }
+
+ for (int i = 0; i < 3; i++) {
+ if (mpSelWakuMoyo[i] != NULL) {
+ delete mpSelWakuMoyo[i];
+ }
+
+ if (mpSelWakuGold[i] != NULL) {
+ delete mpSelWakuGold[i];
+ }
+
+ if (mpSelWakuGold2[i] != NULL) {
+ delete mpSelWakuGold2[i];
+ }
+
+ if (mpBookWaku[i] != NULL) {
+ delete mpBookWaku[i];
+ }
+
+ if (mpSelData[i] != NULL) {
+ delete mpSelData[i];
+ }
+
+ if (mFileInfo[i] != NULL) {
+ delete mFileInfo[i];
+ }
+ }
+
+ if (mpSelectMoveBase != NULL) {
+ delete mpSelectMoveBase;
+ }
+
+ for (int i = 0; i < 2; i++) {
+ if (mpNoYes[i] != NULL) {
+ delete mpNoYes[i];
+ }
+
+ if (mNoYesBase[i] != NULL) {
+ delete mNoYesBase[i];
+ }
+
+ if (mNoYesGold[i] != NULL) {
+ delete mNoYesGold[i];
+ }
+
+ if (mNoYesGold2[i] != NULL) {
+ delete mNoYesGold2[i];
+ }
+
+ if (mpHeaderTxtPane[i] != NULL) {
+ delete mpHeaderTxtPane[i];
+ }
+
+ if (mpErrTxtPane[i] != NULL) {
+ delete mpErrTxtPane[i];
+ }
+
+ if (mpNoYesTxt[i] != NULL) {
+ delete mpNoYesTxt[i];
+ }
+ }
+
+ if (field_0x40 != NULL) {
+ delete field_0x40;
+ }
+
+ if (field_0x44 != NULL) {
+ delete field_0x44;
+ }
+
+ if (field_0x48 != NULL) {
+ delete field_0x48;
+ }
+
+ if (mpFileWakuAnm != NULL) {
+ delete mpFileWakuAnm;
+ }
+
+ if (mpFileWakuRotAnm != NULL) {
+ delete mpFileWakuRotAnm;
+ }
+
+ if (field_0x150 != NULL) {
+ delete field_0x150;
+ }
+
+ if (field_0x158 != NULL) {
+ delete field_0x158;
+ }
+
+ if (field_0x160 != NULL) {
+ delete field_0x160;
+ }
+
+ if (field_0x4c != NULL) {
+ delete field_0x4c;
+ }
+
+ if (mpBBtnIcon != NULL) {
+ delete mpBBtnIcon;
+ }
+
+ if (mpABtnIcon != NULL) {
+ delete mpABtnIcon;
+ }
+
+ if (mpBackTxt != NULL) {
+ delete mpBackTxt;
+ }
+
+ if (mpConfirmTxt != NULL) {
+ delete mpConfirmTxt;
+ }
+
+ if (mSelIcon != NULL) {
+ delete mSelIcon;
+ }
+
+ if (mWarning != NULL) {
+ delete mWarning;
+ }
+
+ mDoExt_removeMesgFont();
+ mDoExt_removeSubFont();
+
+ if (mpArchive != NULL) {
+ mpArchive->removeResourceAll();
+ mpArchive->unmount();
+ }
+}
+#else
+void dMenu_save_c::_delete() {
+ // NONMATCHING
+}
+#endif
+
+/* 801F1048-801F1100 1EB988 00B8+00 0/0 4/4 0/0 .text _move__12dMenu_save_cFv */
+void dMenu_save_c::_move() {
+ if (!mDoRst::isReset() || field_0x21a0 != 0) {
+ memCardWatch();
+ if (mMenuProc != PROC_MESSAGE_CHANGE && mpScrnExplain != NULL) {
+ field_0x219d = mpScrnExplain->getStatus();
+ if (mpScrnExplain->getStatus() != 0) {
+ mpScrnExplain->move();
+ }
+ }
+
+ (this->*MenuSaveProc[mMenuProc])();
+ saveSelAnm();
+
+ if (mWarning != NULL) {
+ mWarning->_move();
+ }
+ }
+}
+
+/* 801F1100-801F1148 1EBA40 0048+00 1/1 0/0 0/0 .text saveSelAnm__12dMenu_save_cFv */
+void dMenu_save_c::saveSelAnm() {
+ if (mDisplayMenu) {
+ selFileWakuAnm();
+ bookIconAnm();
+ mSaveSel.Scr->animation();
+ }
+}
+
+/* 801F1148-801F11F4 1EBA88 00AC+00 1/1 0/0 0/0 .text selFileWakuAnm__12dMenu_save_cFv */
+void dMenu_save_c::selFileWakuAnm() {
+ mFileWakuAnmFrame += 2;
+ if (mFileWakuAnmFrame >= mpFileWakuAnm->getFrameMax()) {
+ mFileWakuAnmFrame -= mpFileWakuAnm->getFrameMax();
+ }
+ mpFileWakuAnm->setFrame(mFileWakuAnmFrame);
+
+ mFileWakuRotAnmFrame += 2;
+ if (mFileWakuRotAnmFrame >= mpFileWakuRotAnm->getFrameMax()) {
+ mFileWakuRotAnmFrame -= mpFileWakuRotAnm->getFrameMax();
+ }
+ mpFileWakuRotAnm->setFrame(mFileWakuRotAnmFrame);
+}
+
+
+/* 801F11F4-801F12F0 1EBB34 00FC+00 1/1 0/0 0/0 .text bookIconAnm__12dMenu_save_cFv */
+void dMenu_save_c::bookIconAnm() {
+ field_0x154 += 2;
+ if (field_0x154 >= field_0x150->getFrameMax()) {
+ field_0x154 -= field_0x150->getFrameMax();
+ }
+ field_0x150->setFrame(field_0x154);
+
+ field_0x15c += 2;
+ if (field_0x15c >= field_0x158->getFrameMax()) {
+ field_0x15c -= field_0x158->getFrameMax();
+ }
+ field_0x158->setFrame(field_0x15c);
+
+ field_0x164 += 2;
+ if (field_0x164 >= field_0x160->getFrameMax()) {
+ field_0x164 -= field_0x160->getFrameMax();
+ }
+ field_0x160->setFrame(field_0x164);
+}
+
+
+/* 801F12F0-801F1378 1EBC30 0088+00 1/1 0/0 0/0 .text memCardWatch__12dMenu_save_cFv */
+void dMenu_save_c::memCardWatch() {
+ if (mUseType == 2) {
+ return;
+ }
+
+ if (g_mDoMemCd_control.mProbeStat != 0 && g_mDoMemCd_control.mProbeStat != 1) {
+ return;
+ }
+
+ if (mDoRst::isReset()) {
+ return;
+ }
+
+ if (field_0x1bf == 0) {
+ if (mpScrnExplain != NULL) {
+ u8 status = mpScrnExplain->getStatus();
+ if (status != 0 && (status == 3 || status == 4)) {
+ mpScrnExplain->onForceSelect();
+ }
+ }
+ mMenuProc = PROC_MEMCARD_CHECK;
+ }
+
+ g_mDoMemCd_control.mProbeStat = 2;
+}
+
+/* 801F1378-801F1558 1EBCB8 01E0+00 1/0 0/0 0/0 .text saveQuestion__12dMenu_save_cFv */
+void dMenu_save_c::saveQuestion() {
+ if (YesNoSelect()) {
+ if (mYesNoCursor == CURSOR_YES) {
+ field_0x1c0 = 1;
+
+ J2DPane* pane = mSaveSel.Scr->search('Nm_02');
+ pane->setAnimation(field_0x40);
+
+ field_0xd2 = 0;
+ field_0x9c = 0;
+ field_0x17a = 0;
+
+ strcpy(mpHeaderTxt[mHeaderTxtType], "");
+ strcpy(mpHeaderTxt[mHeaderTxtType ^ 1], "");
+ field_0x64 = 0;
+ field_0x50 = 1;
+ field_0x40->setFrame(field_0x50);
+ pane->animationTransform();
+ pane->setAnimation((J2DAnmTransformKey*)NULL);
+ mpHeaderTxtPane[0]->getPanePtr()->scale(1.0f, 1.0f);
+ mpHeaderTxtPane[1]->getPanePtr()->scale(1.0f, 1.0f);
+ mMenuProc = PROC_SAVE_QUESTION2;
+ } else {
+ switch (mUseType) {
+ case TYPE_WHITE_EVENT:
+ mEndStatus = 1;
+ mSaveStatus = 3;
+ mMenuProc = PROC_SAVE_WAIT;
+ break;
+ case TYPE_BLACK_EVENT:
+ field_0x2190 = 0;
+ msgTxtSet(0x4E4, true); // To save your progress, press START then choose Save
+ mMenuProc = PROC_SAVE_GUIDE;
+ break;
+ }
+ }
+ }
+}
+
+
+/* 801F1558-801F1620 1EBE98 00C8+00 1/0 0/0 0/0 .text saveQuestion2__12dMenu_save_cFv */
+void dMenu_save_c::saveQuestion2() {
+ if (mpScrnExplain != NULL && mpScrnExplain->getStatus() == 0) {
+ if (mUseType == TYPE_BLACK_EVENT) {
+ mWaitTimer = g_msHIO.mFadeOutTimer;
+ mDoGph_gInf_c::startFadeOut(mWaitTimer);
+ field_0x21a0 = 1;
+ mMenuProc = PROC_SAVE_QUESTION21;
+ } else {
+ mDoGph_gInf_c::startFadeOut(1);
+ field_0x21a0 = 1;
+ mMenuProc = PROC_SAVE_QUESTION3;
+ }
+ }
+}
+
+/* 801F1620-801F1644 1EBF60 0024+00 1/0 0/0 0/0 .text saveQuestion21__12dMenu_save_cFv */
+void dMenu_save_c::saveQuestion21() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ mMenuProc = PROC_SAVE_QUESTION3;
+}
+
+/* 801F1644-801F16B8 1EBF84 0074+00 1/0 0/0 0/0 .text saveQuestion3__12dMenu_save_cFv */
+void dMenu_save_c::saveQuestion3() {
+ mDisplayMenu = true;
+ mWaitTimer = g_msHIO.mFadeOutTimer;
+ mDoGph_gInf_c::startFadeIn(mWaitTimer);
+ field_0x21a0 = 0;
+ mMenuProc = PROC_SAVE_QUESTION4;
+}
+
+/* 801F16B8-801F16F4 1EBFF8 003C+00 1/0 0/0 0/0 .text saveQuestion4__12dMenu_save_cFv */
+void dMenu_save_c::saveQuestion4() {
+ if (mDoRst::isReset()) {
+ return;
+ }
+
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ field_0x1bf = 0;
+ mMenuProc = PROC_MEMCARD_CHECK;
+}
+
+/* 801F16F4-801F1720 1EC034 002C+00 1/0 0/0 0/0 .text saveGuide__12dMenu_save_cFv */
+void dMenu_save_c::saveGuide() {
+ if (mpScrnExplain->getStatus() == 0) {
+ mEndStatus = 1;
+ mSaveStatus = 3;
+ mMenuProc = PROC_SAVE_WAIT;
+ }
+}
+
+/* 801F1720-801F191C 1EC060 01FC+00 2/0 0/0 0/0 .text memCardCheck__12dMenu_save_cFv */
+void dMenu_save_c::memCardCheck() {
+ u32 cardStatus = g_mDoMemCd_control.getStatus(0);
+
+ if (cardStatus != 14) {
+ switch (cardStatus) {
+ case 0:
+ field_0x1c0 = 0;
+ errDispInitSet(0x3AB); // There is no Memory Card in Slot A.
+ field_0x9e = 0;
+ field_0x1b4 = 9;
+ mErrProc = 0x3D;
+ break;
+ case 8:
+ field_0x1c0 = 0;
+ errDispInitSet(0x3AC); // The Memory Card in Slot A is damaged
+ field_0x9e = 0;
+ field_0x1b4 = 9;
+ mErrProc = 0x3D;
+ break;
+ case 9:
+ field_0x1c0 = 0;
+ errDispInitSet(0x3AD); // Wrong Device in Slot A.
+ field_0x9e = 0;
+ field_0x1b4 = 9;
+ mErrProc = 0x3D;
+ break;
+ case 10:
+ field_0x1c0 = 0;
+ errDispInitSet(0x3AE); // The Memory Card in Slot A is not compatible.
+ field_0x9e = 0;
+ field_0x1b4 = 9;
+ mErrProc = 0x3D;
+ break;
+ case 6:
+ case 7:
+ field_0x1c0 = 0;
+ errDispInitSet(0x3B0); // The Memory Card in Slot A is corrupted
+ field_0x9e = 1;
+ field_0x1b4 = 0x10;
+ break;
+ case 11:
+ case 12:
+ field_0x1c0 = 0;
+ errDispInitSet(0x3B4); // There is Insufficient space on the Memory Card in Slot A.
+ field_0x9e = 0;
+ mpErrFunc = &iplSelMsgInitSet;
+ mErrProc = PROC_IPL_SELECT_DISP1;
+ field_0x1b4 = 9;
+ break;
+ case 2:
+ g_mDoMemCd_control.load();
+ mMenuProc = PROC_MEMCARD_DATA_LOAD_WAIT;
+ break;
+ case 1:
+ field_0x1c0 = 0;
+ errDispInitSet(0x3C4); // There is no save for this game on the Memory Card in Slot A.
+ field_0x9e = 0;
+ mpErrFunc = &gameFileMakeSelInitSet;
+ mErrProc = PROC_MAKE_GAME_FILE_SEL_DISP;
+ field_0x1b4 = 9;
+ break;
+ case 3:
+ case 4:
+ case 5:
+ break;
+ }
+ }
+}
+
+
+/* 801F191C-801F19A8 1EC25C 008C+00 1/0 0/0 0/0 .text memCardErrMsgWaitKey__12dMenu_save_cFv */
+void dMenu_save_c::memCardErrMsgWaitKey() {
+ if (cAPICPad_ANY_BUTTON(PAD_1) && dMeter2Info_getMsgKeyWaitTimer() == 0) {
+ if (mErrProc == 0x3D) {
+ closeSelect();
+ } else {
+ if (mpErrFunc != NULL) {
+ (this->*mpErrFunc)();
+ }
+ mMenuProc = mErrProc;
+ }
+ }
+}
+
+/* 801F19A8-801F19DC 1EC2E8 0034+00 1/1 0/0 0/0 .text backSaveQuestionInitSet__12dMenu_save_cFv */
+void dMenu_save_c::backSaveQuestionInitSet() {
+ field_0x2190 = 1;
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x3CE, true); // Do you want to save?
+}
+
+/* 801F19DC-801F1A48 1EC31C 006C+00 1/0 0/0 0/0 .text backSaveQuestion__12dMenu_save_cFv
+ */
+void dMenu_save_c::backSaveQuestion() {
+ mWaitTimer = g_msHIO.mFadeOutTimer;
+ mDoGph_gInf_c::startFadeOut(mWaitTimer);
+ field_0x21a0 = 1;
+ mMenuProc = PROC_BACK_SAVE_QUESTION2;
+}
+
+/* 801F1A48-801F1B38 1EC388 00F0+00 1/0 0/0 0/0 .text backSaveQuestion2__12dMenu_save_cFv
+ */
+void dMenu_save_c::backSaveQuestion2() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ if (mUseType == TYPE_BLACK_EVENT) {
+ if (field_0x21a2 == 1) {
+ field_0x2190 = 0;
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x4E4, true); // To save your progress, press START then choose Save
+ } else {
+ backSaveQuestionInitSet();
+ }
+ } else {
+ backSaveQuestionInitSet();
+ }
+
+ mDoGph_gInf_c::startFadeIn(1);
+ field_0x21a0 = 0;
+ field_0x1c0 = 0;
+ field_0x1bf = 1;
+ mDisplayMenu = false;
+
+ if (mUseType == TYPE_BLACK_EVENT) {
+ if (field_0x21a2 == 1) {
+ mMenuProc = PROC_SAVE_GUIDE;
+ } else {
+ mMenuProc = PROC_SAVE_QUESTION;
+ }
+ } else {
+ mMenuProc = PROC_SAVE_QUESTION;
+ }
+}
+
+/* ############################################################################################## */
+/* 80454478-8045447C 002A78 0004+00 16/16 0/0 0/0 .sdata2 @4879 */
+SECTION_SDATA2 static f32 lit_4879 = -1.0f;
+
+/* 801F1B38-801F1BF8 1EC478 00C0+00 5/5 0/0 0/0 .text closeSelect__12dMenu_save_cFv */
+void dMenu_save_c::closeSelect() {
+ mDoAud_seStart(Z2SE_SY_MENU_BACK, NULL, 0, 0);
+ mSelIcon->setAlphaRate(0.0f);
+
+ if (mUseType != TYPE_WHITE_EVENT && mUseType != TYPE_BLACK_EVENT) {
+ mSaveStatus = 3;
+ if (dMeter2Info_getMiniGameItemSetFlag() != 0) {
+ dMeter2Info_setMiniGameItem(dMeter2Info_getMiniGameItemSetFlag());
+ }
+ mMenuProc = PROC_SAVE_WAIT;
+ } else {
+ field_0x1bf = 1;
+ field_0x21a2 = 0;
+ mMenuProc = PROC_BACK_SAVE_QUESTION;
+ }
+}
+
+
+/* 801F1BF8-801F1C70 1EC538 0078+00 2/2 0/0 0/0 .text closeSelect2__12dMenu_save_cFv */
+void dMenu_save_c::closeSelect2() {
+ mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ mSelIcon->setAlphaRate(0.0f);
+ field_0x21a2 = 1;
+ mMenuProc = PROC_BACK_SAVE_QUESTION;
+}
+
+
+/* 801F1C70-801F1C94 1EC5B0 0024+00 1/0 0/0 0/0 .text iplSelMsgInitSet__12dMenu_save_cFv
+ */
+void dMenu_save_c::iplSelMsgInitSet() {
+ errorTxtSet(0x3B5); // Either insert a MemCard with free space or manage card contents
+}
+
+/* 801F1C94-801F1CEC 1EC5D4 0058+00 1/0 0/0 0/0 .text iplSelInitSet__12dMenu_save_cFv */
+void dMenu_save_c::iplSelInitSet() {
+ errorTxtSet(0x3C0); // Would you like to manage the contents of your Memory Card?
+ mYesNoCursor = CURSOR_NO;
+ ketteiTxtDispAnmInit(1);
+ yesnoMenuMoveAnmInitSet(2999, 3009, 0);
+}
+
+/* 801F1CEC-801F1D54 1EC62C 0068+00 1/0 0/0 0/0 .text IPLSelectDisp1__12dMenu_save_cFv */
+void dMenu_save_c::IPLSelectDisp1() {
+ if (errorTxtChangeAnm() == true) {
+ mpErrFunc = &iplSelInitSet;
+ mErrProc = PROC_IPL_SELECT_DISP2;
+ mMenuProc = PROC_MEMCARD_ERRMSG_WAIT_KEY;
+ }
+}
+
+
+/* 801F1D54-801F1DD4 1EC694 0080+00 1/0 0/0 0/0 .text IPLSelectDisp2__12dMenu_save_cFv */
+void dMenu_save_c::IPLSelectDisp2() {
+ bool txtAnmComplete = errorTxtChangeAnm();
+ bool moveAnmComplete = yesnoMenuMoveAnm();
+ bool ketteiAnmComplete = ketteiTxtDispAnm();
+
+ if (txtAnmComplete == true && moveAnmComplete == true && ketteiAnmComplete == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_MEMCARD_ERR_GO_IPL_SEL;
+ }
+}
+
+/* 801F1DD4-801F1E58 1EC714 0084+00 1/0 0/0 0/0 .text memCardErrGoIPLSel__12dMenu_save_cFv */
+void dMenu_save_c::memCardErrGoIPLSel() {
+ if (errYesNoSelect(1, 0)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ errorTxtSet(0x3BD); // The current game data will not be saved
+ mYesNoPrevCursor = mYesNoCursor;
+ mYesNoCursor = CURSOR_NO;
+ yesnoSelectAnmSet(1);
+ mMenuProc = PROC_IPL_SELECT2_DISP;
+ } else {
+ closeSelect();
+ }
+ }
+}
+
+/* 801F1E58-801F1EE0 1EC798 0088+00 1/0 0/0 0/0 .text IPLSelect2Disp__12dMenu_save_cFv */
+void dMenu_save_c::IPLSelect2Disp() {
+ bool txtAnmComplete = errorTxtChangeAnm();
+ bool moveAnmComplete = yesnoSelectMoveAnm(1);
+ bool wakuAnmComplete = yesnoWakuAlpahAnm(mYesNoPrevCursor);
+
+ if (txtAnmComplete == true && moveAnmComplete == true && wakuAnmComplete == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_MEMCARD_ERR_GO_IPL_SEL2;
+ }
+}
+
+/* 801F1EE0-801F1F80 1EC820 00A0+00 1/0 0/0 0/0 .text memCardErrGoIPLSel2__12dMenu_save_cFv */
+void dMenu_save_c::memCardErrGoIPLSel2() {
+ if (errYesNoSelect(1, 0)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ field_0x1bf = 1;
+ mWaitTimer = g_msHIO.mFadeOutTimer;
+ mDoGph_gInf_c::startFadeOut(mWaitTimer);
+ field_0x21a0 = 1;
+ mMenuProc = PROC_MEMCARD_ERR_GOTO_IPL;
+ } else {
+ closeSelect();
+ }
+ }
+}
+
+/* 801F1F80-801F2000 1EC8C0 0080+00 1/0 0/0 0/0 .text memCardErrGotoIPL__12dMenu_save_cFv
+ */
+void dMenu_save_c::memCardErrGotoIPL() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ field_0x21a1 = 1;
+ mDoGph_gInf_c::startFadeIn(0);
+ field_0x21a0 = 0;
+ mDoRst::onShutdown();
+}
+
+/* 801F2000-801F20AC 1EC940 00AC+00 1/0 0/0 0/0 .text memCardErrMsgWaitFormatSel__12dMenu_save_cFv
+ */
+void dMenu_save_c::memCardErrMsgWaitFormatSel() {
+ if (errYesNoSelect(1, 0)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ errorTxtSet(0x3B9); // Formatting the Card in Slot A will erase all save data
+ mYesNoPrevCursor = mYesNoCursor;
+ mYesNoCursor = CURSOR_NO;
+ yesnoSelectAnmSet(1);
+ mMenuProc = PROC_CARD_FORMAT_YES_SEL_DISP;
+ } else {
+ errorTxtSet(0x3BC); // Unable to save. The Card in Slot A cannot be used
+ field_0x9e = 0;
+ yesnoMenuMoveAnmInitSet(3009, 2999, 0);
+ mMenuProc = PROC_CARD_FORMAT_NO_SEL_DISP;
+ }
+ }
+}
+
+/* 801F20AC-801F2134 1EC9EC 0088+00 1/0 0/0 0/0 .text cardFormatYesSelDisp__12dMenu_save_cFv */
+void dMenu_save_c::cardFormatYesSelDisp() {
+ bool txtChangeAnm = errorTxtChangeAnm();
+ bool moveAnm = yesnoSelectMoveAnm(1);
+ bool wakuAlphaAnm = yesnoWakuAlpahAnm(mYesNoPrevCursor);
+
+ if (txtChangeAnm == true && moveAnm == true && wakuAlphaAnm == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_MEMCARD_ERRMSG_WAIT_FORMAT_SEL2;
+ }
+}
+
+/* 801F2134-801F219C 1ECA74 0068+00 1/0 0/0 0/0 .text cardFormatNoSelDisp__12dMenu_save_cFv */
+void dMenu_save_c::cardFormatNoSelDisp() {
+ bool txtChangeAnm = errorTxtChangeAnm();
+ bool moveAnm = yesnoMenuMoveAnm();
+
+ if (txtChangeAnm == true && moveAnm == true) {
+ mMenuProc = PROC_MEMCARD_ERRMSG_WAIT_KEY;
+ mErrProc = 0x3D;
+ }
+}
+
+/* 801F219C-801F2250 1ECADC 00B4+00 1/0 0/0 0/0 .text
+ * memCardErrMsgWaitFormatSel2__12dMenu_save_cFv */
+void dMenu_save_c::memCardErrMsgWaitFormatSel2() {
+ if (errYesNoSelect(1, 0)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ field_0x1bf = 1;
+ errorTxtSet(0x3B8); // Formatting...
+ field_0x9e = 0;
+ yesnoMenuMoveAnmInitSet(3009, 2999, 0);
+ mMenuProc = PROC_CARD_FORMAT_YES_SEL2_DISP;
+ } else {
+ errorTxtSet(0x3BC); // Unable to save. The Card in Slot A cannot be used
+ field_0x9e = 0;
+ yesnoMenuMoveAnmInitSet(3009, 2999, 0);
+ mMenuProc = PROC_CARD_FORMAT_NO_SEL_DISP;
+ }
+ }
+}
+
+/* 801F2250-801F22CC 1ECB90 007C+00 1/0 0/0 0/0 .text cardFormatYesSel2Disp__12dMenu_save_cFv */
+void dMenu_save_c::cardFormatYesSel2Disp() {
+ bool txtChangeAnm = errorTxtChangeAnm();
+ bool moveAnm = yesnoMenuMoveAnm();
+
+ if (txtChangeAnm == true && moveAnm == true) {
+ mWaitTimer = g_msHIO.mCardWaitFrames;
+ g_mDoMemCd_control.command_format();
+ mMenuProc = PROC_MEMCARD_FORMAT;
+ }
+}
+
+/* 801F22CC-801F232C 1ECC0C 0060+00 1/0 0/0 0/0 .text memCardFormat__12dMenu_save_cFv */
+void dMenu_save_c::memCardFormat() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ }
+
+ mCmdState = g_mDoMemCd_control.FormatSync();
+
+ if (mCmdState != 0) {
+ mMenuProc = PROC_MEMCARD_FORMAT_WAIT;
+ }
+}
+
+/* 801F232C-801F23A4 1ECC6C 0078+00 1/0 0/0 0/0 .text memCardFormatWait__12dMenu_save_cFv
+ */
+void dMenu_save_c::memCardFormatWait() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ if (mCmdState == 2) {
+ errorTxtSet(0x399); // An error might have occurred in formatting.
+ mMenuProc = PROC_MEMCARD_COMMAND_END;
+ } else if (mCmdState == 1) {
+ errorTxtSet(0x39A); // Formatted.
+ mMenuProc = PROC_MEMCARD_COMMAND_END;
+ }
+}
+
+/* 801F23A4-801F23FC 1ECCE4 0058+00 1/0 0/0 0/0 .text gameFileMakeSelInitSet__12dMenu_save_cFv */
+void dMenu_save_c::gameFileMakeSelInitSet() {
+ errorTxtSet(0x3C1); // Create a save file on the Memory Card in Slot A?
+ ketteiTxtDispAnmInit(1);
+ mYesNoCursor = CURSOR_NO;
+ yesnoMenuMoveAnmInitSet(2999, 3009, 0);
+}
+
+/* 801F23FC-801F247C 1ECD3C 0080+00 1/0 0/0 0/0 .text makeGameFileSelDisp__12dMenu_save_cFv */
+void dMenu_save_c::makeGameFileSelDisp() {
+ bool txtChangeAnm = errorTxtChangeAnm();
+ bool moveAnm = yesnoMenuMoveAnm();
+ bool ketteiDispAnm = ketteiTxtDispAnm();
+
+ if (txtChangeAnm == true && moveAnm == true && ketteiDispAnm == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_MEMCARD_MAKE_GAME_FILE_SEL;
+ }
+}
+
+/* 801F247C-801F2514 1ECDBC 0098+00 1/0 0/0 0/0 .text memCardMakeGameFileSel__12dMenu_save_cFv */
+void dMenu_save_c::memCardMakeGameFileSel() {
+ if (errYesNoSelect(1, 0)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ field_0x1bf = 1;
+ errorTxtSet(0x3C5); // Creating a file...
+ ketteiTxtDispAnmInit(0);
+ field_0x9e = 0;
+ yesnoMenuMoveAnmInitSet(3009, 2999, 0);
+ mMenuProc = PROC_MAKE_GAME_FILE_DISP;
+ } else {
+ closeSelect();
+ }
+ }
+}
+
+/* 801F2514-801F25AC 1ECE54 0098+00 1/0 0/0 0/0 .text makeGameFileDisp__12dMenu_save_cFv
+ */
+void dMenu_save_c::makeGameFileDisp() {
+ bool txtChangeAnm = errorTxtChangeAnm();
+ bool moveAnm = yesnoMenuMoveAnm();
+ bool ketteiDispAnm = ketteiTxtDispAnm();
+
+ if (txtChangeAnm == true && moveAnm == true && ketteiDispAnm == true) {
+ mWaitTimer = g_msHIO.mCardWaitFrames;
+ setInitSaveData();
+ dataSave();
+ mMenuProc = PROC_MEMCARD_MAKE_GAME_FILE;
+ }
+}
+
+/* 801F25AC-801F260C 1ECEEC 0060+00 1/0 0/0 0/0 .text memCardMakeGameFile__12dMenu_save_cFv */
+void dMenu_save_c::memCardMakeGameFile() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ }
+
+ mCmdState = g_mDoMemCd_control.SaveSync();
+
+ if (mCmdState != 0) {
+ mMenuProc = PROC_MEMCARD_MAKE_GAME_FILE_WAIT;
+ }
+}
+
+/* 801F260C-801F2698 1ECF4C 008C+00 1/0 0/0 0/0 .text memCardMakeGameFileWait__12dMenu_save_cFv */
+void dMenu_save_c::memCardMakeGameFileWait() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ if (mCmdState == 2) {
+ errorTxtSet(0x3C6); // An error might have occurred when creating a save file.
+ mMenuProc = PROC_MEMCARD_COMMAND_END;
+ } else if (mCmdState == 1) {
+ dComIfGs_setNewFile(dComIfGs_getNewFile() | 1);
+ errorTxtSet(0x3C7); // A save file has been created.
+ mMenuProc = PROC_MEMCARD_COMMAND_END;
+ }
+}
+
+/* 801F2698-801F2708 1ECFD8 0070+00 1/0 0/0 0/0 .text memCardCommandEnd__12dMenu_save_cFv
+ */
+void dMenu_save_c::memCardCommandEnd() {
+ if (errorTxtChangeAnm() == true) {
+ mpErrFunc = NULL;
+ mErrProc = PROC_MEMCARD_CHECK;
+ mMenuProc = PROC_MEMCARD_ERRMSG_WAIT_KEY;
+ field_0x1bf = 0;
+ }
+}
+
+/* 801F2708-801F27CC 1ED048 00C4+00 1/0 0/0 0/0 .text memCardCommandEnd2__12dMenu_save_cFv */
+void dMenu_save_c::memCardCommandEnd2() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool ketteiDispAnm = ketteiTxtDispAnm();
+ bool modoruDispAnm = modoruTxtDispAnm();
+ u32 check = mWarning->getStatus() != 0;
+
+ if (headerTxtChanged == true && ketteiDispAnm == true && modoruDispAnm == true && check == 1) {
+ mpErrFunc = NULL;
+ mErrProc = PROC_MEMCARD_CHECK;
+ mMenuProc = PROC_MEMCARD_ERRMSG_WAIT_KEY;
+ field_0x1bf = 0;
+ }
+}
+
+/* 801F27CC-801F2840 1ED10C 0074+00 1/0 0/0 0/0 .text memCardDataLoadWait__12dMenu_save_cFv */
+void dMenu_save_c::memCardDataLoadWait() {
+ int cardState = g_mDoMemCd_control.LoadSync(mSaveBuffer, sizeof(mSaveBuffer), 0);
+ if (cardState != 0) {
+ if (cardState == 2) {
+ field_0x1c0 = 0;
+ mMenuProc = PROC_MEMCARD_CHECK;
+ } else if (cardState == 1) {
+ saveSelectOpenInit();
+ }
+ }
+}
+
+/* 801F2840-801F28E4 1ED180 00A4+00 2/2 0/0 0/0 .text dataWrite__12dMenu_save_cFv */
+void dMenu_save_c::dataWrite() {
+ int stageNo = i_dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo());
+
+ dComIfGs_putSave(stageNo);
+ dComIfGs_setMemoryToCard(mSaveBuffer, mSelectedFile);
+ mDoMemCdRWm_SetCheckSumGameData(mSaveBuffer, mSelectedFile);
+
+ u8* save = mSaveBuffer;
+ for (int i = 0; i < 3; i++) {
+ mDoMemCdRWm_TestCheckSumGameData(save);
+ save += QUEST_LOG_SIZE;
+ }
+
+ dataSave();
+}
+
+/* ############################################################################################## */
+/* 80397960-80397960 023FC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+#pragma push
+#pragma force_active on
+SECTION_DEAD static char const* const stringBase_80397A06 = "save cmdState %d\n";
+#pragma pop
+
+/* 801F28E4-801F298C 1ED224 00A8+00 1/0 0/0 0/0 .text memCardDataSaveWait__12dMenu_save_cFv */
+void dMenu_save_c::memCardDataSaveWait() {
+ mDoAud_seStartLevel(Z2SE_SY_FILE_SAVE_LEVEL, NULL, 0, 0);
+
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ }
+
+ mCmdState = g_mDoMemCd_control.SaveSync();
+ if (mCmdState != 0) {
+ printf("save cmdState %d\n", mCmdState);
+ mMenuProc = PROC_MEMCARD_DATA_SAVE_WAIT2;
+ }
+}
+
+
+/* 801F298C-801F2B5C 1ED2CC 01D0+00 1/0 0/0 0/0 .text memCardDataSaveWait2__12dMenu_save_cFv */
+void dMenu_save_c::memCardDataSaveWait2() {
+ if (mWaitTimer != 0) {
+ mDoAud_seStartLevel(Z2SE_SY_FILE_SAVE_LEVEL, NULL, 0, 0);
+ mWaitTimer--;
+ return;
+ }
+
+ if (mCmdState == 1) {
+ mDoAud_seStart(Z2SE_SY_FILE_SAVE_OK, NULL, 0, 0);
+ dComIfGs_setDataNum(mSelectedFile);
+ dComIfGs_setNoFile(0);
+
+ if (mUseType == TYPE_WHITE_EVENT || mUseType == TYPE_BLACK_EVENT) {
+ headerTxtSet(0x530); // Saved.
+ mWarning->closeInit();
+ ketteiTxtDispAnmInit(1);
+ mMenuProc = PROC_SAVE_END;
+ } else {
+ headerTxtSet(0x3CA); // Saved. Continue Playing?
+ mWarning->closeInit();
+ mYesNoCursor = CURSOR_YES;
+ yesnoMenuMoveAnmInitSet(2259, 2249, 1);
+ ketteiTxtDispAnmInit(1);
+ mMenuProc = PROC_GAME_CONTINUE_DISP;
+ }
+ setSaveData();
+ } else if (mCmdState == 2) {
+ mDoAud_seStart(Z2SE_SY_FILE_ERROR, NULL, 0, 0);
+ headerTxtSet(0x3CD); // An error might have occurred when saving.
+ mWarning->closeInit();
+ ketteiTxtDispAnmInit(1);
+ modoruTxtDispAnmInit(1);
+ mMenuProc = PROC_MEMCARD_COMMAND_END2;
+ }
+}
+
+
+/* 801F2B5C-801F2BF8 1ED49C 009C+00 1/0 0/0 0/0 .text gameContinueDisp__12dMenu_save_cFv
+ */
+void dMenu_save_c::gameContinueDisp() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool moveAnm = yesnoMenuMoveAnm();
+ bool ketteiDispAnm = ketteiTxtDispAnm();
+ u32 check = mWarning->getStatus() != 0;
+
+ if (headerTxtChanged == true && moveAnm == true && ketteiDispAnm == true && check == 1) {
+ yesnoCursorShow();
+ mMenuProc = PROC_GAME_CONTINUE;
+ }
+}
+
+/* 801F2BF8-801F2D78 1ED538 0180+00 1/0 0/0 0/0 .text gameContinue__12dMenu_save_cFv */
+void dMenu_save_c::gameContinue() {
+ if (errYesNoSelect(0, 1)) {
+ if (mYesNoCursor == CURSOR_YES) {
+ mDoAud_seStart(Z2SE_SY_CONTINUE_OK, NULL, 0, 0);
+
+ switch (mUseType) {
+ case TYPE_WHITE_EVENT:
+ break;
+ case TYPE_DEFAULT:
+ case 2:
+ case TYPE_BLACK_EVENT:
+ mEndStatus = 1;
+ if (dMeter2Info_getMiniGameItemSetFlag()) {
+ dMeter2Info_setMiniGameItem(dMeter2Info_getMiniGameItemSetFlag());
+ }
+ break;
+ }
+ mSelIcon->setAlphaRate(0.0f);
+ mSaveStatus = 4;
+
+ if (mUseType == TYPE_BLACK_EVENT) {
+ closeSelect2();
+ } else {
+ mMenuProc = PROC_SAVE_WAIT;
+ }
+ return;
+ }
+
+ mDoAud_seStart(Z2SE_QUIT_GAME, NULL, 0, 0);
+
+ if (mUseType == 2 || mUseType == TYPE_WHITE_EVENT) {
+ mWaitTimer = 15;
+ mMenuProc = PROC_GAME_CONTINUE3;
+ return;
+ }
+
+ if (mUseType == TYPE_BLACK_EVENT) {
+ mSaveStatus = 4;
+ closeSelect2();
+ return;
+ }
+
+ mWaitTimer = 30;
+ mMenuProc = PROC_GAME_CONTINUE2;
+ }
+}
+
+
+/* 801F2D78-801F2DA0 1ED6B8 0028+00 1/0 0/0 0/0 .text gameContinue2__12dMenu_save_cFv */
+void dMenu_save_c::gameContinue2() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ mDoRst::onReset();
+}
+
+/* 801F2DA0-801F2DD4 1ED6E0 0034+00 1/0 0/0 0/0 .text gameContinue3__12dMenu_save_cFv */
+void dMenu_save_c::gameContinue3() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ mMenuProc = PROC_SAVE_WAIT;
+ mSaveStatus = 3;
+ mEndStatus = 0;
+}
+
+/* 801F2DD4-801F2E88 1ED714 00B4+00 1/0 0/0 0/0 .text saveEnd__12dMenu_save_cFv */
+void dMenu_save_c::saveEnd() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool ketteiDispAnm = ketteiTxtDispAnm();
+ u32 check = mWarning->getStatus() != 0;
+
+ if (headerTxtChanged == true && ketteiDispAnm == true && check == 1) {
+ if (mUseType == TYPE_BLACK_EVENT) {
+ mSaveStatus = 4;
+ closeSelect2();
+ } else {
+ mEndStatus = 1;
+ restartInit();
+ mSaveStatus = 3;
+ mMenuProc = PROC_SAVE_WAIT;
+ }
+ }
+}
+
+/* 801F2E88-801F2F08 1ED7C8 0080+00 1/0 0/0 0/0 .text endingNoSave__12dMenu_save_cFv */
+void dMenu_save_c::endingNoSave() {
+ if (YesNoSelect()) {
+ if (mYesNoCursor != CURSOR_NO) {
+ mEndStatus = 0;
+ mMenuProc = PROC_SAVE_WAIT;
+ mSaveStatus = 3;
+ } else {
+ field_0x2190 = 1;
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x3CF, false); // Do you want to continue playing?
+ mMenuProc = PROC_ENDING_NO_SAVE2;
+ }
+ }
+}
+
+/* 801F2F08-801F2F38 1ED848 0030+00 1/0 0/0 0/0 .text endingNoSave2__12dMenu_save_cFv */
+void dMenu_save_c::endingNoSave2() {
+ if (mpScrnExplain != NULL && mpScrnExplain->getStatus() == 0) {
+ field_0x2190 = 0;
+ }
+
+ mYesNoCursor = CURSOR_NO;
+ mMenuProc = PROC_SAVE_QUESTION;
+}
+
+/* 801F2F38-801F2F4C 1ED878 0014+00 1/0 0/0 0/0 .text endingDataCheck__12dMenu_save_cFv
+ */
+void dMenu_save_c::endingDataCheck() {
+ mMenuProc = PROC_SAVE_WAIT;
+ mSaveStatus = 3;
+}
+
+/* 801F2F4C-801F2FB4 1ED88C 0068+00 1/0 0/0 0/0 .text retryQuestion0__12dMenu_save_cFv */
+void dMenu_save_c::retryQuestion0() {
+ if (Z2GetAudioMgr()->checkBgmIDPlaying(Z2BGM_GAME_OVER) != true) {
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x4BC, false); // Retry?
+ mMenuProc = PROC_RETRY_QUESTION1;
+ }
+}
+
+/* 801F2FB4-801F3040 1ED8F4 008C+00 1/0 0/0 0/0 .text retryQuestion1__12dMenu_save_cFv */
+void dMenu_save_c::retryQuestion1() {
+ if (YesNoSelect()) {
+ if (mYesNoCursor == CURSOR_YES) {
+ mEndStatus = 1;
+ restartInit();
+ mSaveStatus = 3;
+ mMenuProc = PROC_SAVE_WAIT;
+ } else {
+ field_0x2190 = 1;
+ mYesNoCursor = CURSOR_NO;
+ msgTxtSet(0x4BF, false); // Return to the title screen?
+ mMenuProc = PROC_RETRY_QUESTION2;
+ }
+ }
+}
+
+/* 801F3040-801F30B8 1ED980 0078+00 1/0 0/0 0/0 .text retryQuestion2__12dMenu_save_cFv */
+void dMenu_save_c::retryQuestion2() {
+ if (YesNoSelect()) {
+ if (mYesNoCursor == CURSOR_YES) {
+ mWaitTimer = 15;
+ mMenuProc = PROC_GAME_CONTINUE3;
+ } else {
+ field_0x2190 = 1;
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x4BC, false); // Retry?
+ mMenuProc = PROC_RETRY_QUESTION1;
+ }
+ }
+}
+
+/* 801F30B8-801F31B0 1ED9F8 00F8+00 2/2 0/0 0/0 .text restartInit__12dMenu_save_cFv */
+void dMenu_save_c::restartInit() {
+ // if monkey lantern sequence not completed
+ if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[226])) {
+ dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[224]); // Lantern stolen
+ dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[225]); // Monkey dropped lantern
+ }
+
+ if (dComIfGs_isItemFirstBit(KANTERA) && dComIfGs_getItem(SLOT_1, true) == NO_ITEM) {
+ dComIfGs_setItem(SLOT_1, KANTERA);
+ dComIfGs_setOil(dMeter2Info_getOilGaugeBackUp());
+ }
+
+ if (dMeter2Info_getMiniGameItemSetFlag()) {
+ dMeter2Info_setMiniGameItem(dMeter2Info_getMiniGameItemSetFlag());
+ }
+}
+
+/* 801F31B0-801F31B4 1EDAF0 0004+00 1/0 0/0 0/0 .text saveWait__12dMenu_save_cFv */
+void dMenu_save_c::saveWait() {
+ /* empty function */
+}
+
+/* 801F31B4-801F328C 1EDAF4 00D8+00 1/0 0/0 0/0 .text messageChange__12dMenu_save_cFv */
+void dMenu_save_c::messageChange() {
+ if (mpScrnExplain != NULL) {
+ field_0x219d = mpScrnExplain->getStatus();
+
+ u8 explainStatus = mpScrnExplain->getStatus();
+ if (explainStatus != 0) {
+ if (explainStatus == 3 || explainStatus == 4) {
+ mpScrnExplain->onForceSelect();
+ }
+ mpScrnExplain->move();
+ return;
+ }
+
+ bool var_r3;
+ if (field_0x2190 == 1) {
+ var_r3 = mpScrnExplain->openExplain(field_0x2192, 1, mYesNoCursor == CURSOR_NO, -1,
+ field_0x219c);
+ mpScrnExplain->setKeyWaitTimer(30);
+ } else {
+ var_r3 = mpScrnExplain->openExplain(field_0x2192, 0, 0, -1, true);
+ }
+
+ if (var_r3 == true) {
+ mMenuProc = field_0x2194;
+ }
+ }
+}
+
+/* 801F328C-801F34BC 1EDBCC 0230+00 4/4 0/0 0/0 .text YesNoSelect__12dMenu_save_cFv */
+int dMenu_save_c::YesNoSelect() {
+ int ret = 0;
+
+ if (mDoRst::isReset()) {
+ return 0;
+ }
+
+ if (mpScrnExplain == NULL) {
+ return 0;
+ }
+
+ if (field_0x219d != 5 && mpScrnExplain->getStatus() == 5) {
+ switch (mpScrnExplain->getSelectCursor()) {
+ case 0:
+ if (mMenuProc == PROC_RETRY_QUESTION2) {
+ mDoAud_seStart(Z2SE_QUIT_GAME, NULL, 0, 0);
+ } else if (mMenuProc == PROC_RETRY_QUESTION1) {
+ mDoAud_seStart(Z2SE_SY_CONTINUE_OK, NULL, 0, 0);
+ } else {
+ mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ }
+ break;
+ case 1:
+ Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
+ -1.0f, 0);
+ break;
+ case 255:
+ Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
+ -1.0f, 0);
+ break;
+ }
+ }
+
+ if (mpScrnExplain->getStatus() == 0) {
+ field_0x2190 = 0;
+ switch (mpScrnExplain->getSelectCursor()) {
+ case 0:
+ mYesNoCursor = CURSOR_YES;
+ break;
+ case 1:
+ mYesNoCursor = CURSOR_NO;
+ break;
+ case 255:
+ mYesNoCursor = 2;
+ break;
+ }
+ ret = 1;
+ }
+
+ return ret;
+}
+
+
+/* 801F34BC-801F3588 1EDDFC 00CC+00 8/8 0/0 0/0 .text msgTxtSet__12dMenu_save_cFUsb */
+void dMenu_save_c::msgTxtSet(u16 msgID, bool param_1) {
+ if (msgID != 0xFFFF) {
+ bool check;
+
+ if (mpScrnExplain == NULL) {
+ check = false;
+ } else if (field_0x2190 == 1) {
+ check = mpScrnExplain->openExplain(msgID, 1, mYesNoCursor == CURSOR_NO, 0xFF, param_1);
+ mpScrnExplain->setKeyWaitTimer(30);
+ } else {
+ check = mpScrnExplain->openExplain(msgID, 0, 0, 0xFF, true);
+ }
+
+ if (!check) {
+ field_0x219c = param_1;
+ field_0x2192 = msgID;
+ field_0x2194 = mMenuProc;
+ mMenuProc = PROC_MESSAGE_CHANGE;
+ }
+ }
+
+ field_0x1b9 = 0;
+}
+
+/* 801F3588-801F36B4 1EDEC8 012C+00 1/0 0/0 0/0 .text openSaveSelect__12dMenu_save_cFv */
+void dMenu_save_c::openSaveSelect() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+
+ bool dataMoveAnmComplete = true;
+ if (field_0x64 != 0 || field_0x65 != 0) {
+ dataMoveAnmComplete = selectDataBaseMoveAnm();
+ }
+
+ bool errMoveAnmComplete = true;
+ if (field_0xd2 != 0 || field_0xd3 != 0) {
+ errMoveAnmComplete = errorMoveAnm();
+ }
+
+ bool yesnoMoveAnmComplete = true;
+ if (field_0x9c != 0 || field_0x9d != 0) {
+ yesnoMoveAnmComplete = yesnoMenuMoveAnm();
+ }
+
+ if (headerTxtChanged == true && dataMoveAnmComplete == true && errMoveAnmComplete == true &&
+ yesnoMoveAnmComplete == true) {
+ headerTxtSet(0x4CA); // Save to which log?
+ saveSelectOpenAnmSet();
+ mDoAud_seStart(Z2SE_SY_FILE_MENU_SLIDE_IN, NULL, 0, 0);
+ mMenuProc = PROC_OPEN_SAVE_SELECT2;
+ }
+}
+
+
+/* 801F36B4-801F37A0 1EDFF4 00EC+00 1/0 0/0 0/0 .text openSaveSelect2__12dMenu_save_cFv
+ */
+void dMenu_save_c::openSaveSelect2() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool dataMoveAnm = selectDataBaseMoveAnm();
+
+ if (headerTxtChanged == true && dataMoveAnm == true) {
+ modoruTxtDispAnmInit(1);
+ mSelectedFile = dComIfGs_getDataNum();
+ mLastSelFile = mSelectedFile;
+ mpBookWaku[mSelectedFile]->alphaAnimeStart(0);
+ mpSelData[mSelectedFile]->getPanePtr()->setAnimation(field_0x40);
+ field_0x74[mSelectedFile] = SelStartFrameTbl[mSelectedFile];
+ ketteiTxtDispAnmInit(1);
+ mMenuProc = PROC_OPEN_SAVE_SELECT3;
+ }
+}
+
+/* 801F37A0-801F3934 1EE0E0 0194+00 1/0 0/0 0/0 .text openSaveSelect3__12dMenu_save_cFv
+ */
+void dMenu_save_c::openSaveSelect3() {
+ bool modoruTxtDisp = modoruTxtDispAnm();
+ bool var_r30 = true;
+ bool var_r29 = true;
+ bool var_r28 = true;
+
+ if (mSelectedFile != 0xFF) {
+ var_r30 = mpBookWaku[mSelectedFile]->alphaAnime(g_msHIO.mEffectDispFrames, 0, 0xFF, 1);
+ var_r29 = ketteiTxtDispAnm();
+
+ if (field_0x74[mSelectedFile] != SelEndFrameTbl[mSelectedFile]) {
+ field_0x74[mSelectedFile] += 2;
+
+ if (field_0x74[mSelectedFile] > SelEndFrameTbl[mSelectedFile]) {
+ field_0x74[mSelectedFile] = SelEndFrameTbl[mSelectedFile];
+ }
+
+ field_0x40->setFrame(field_0x74[mSelectedFile]);
+ mpSelData[mSelectedFile]->getPanePtr()->animationTransform();
+ var_r28 = false;
+ }
+ }
+
+ if (modoruTxtDisp == true && var_r30 == true && var_r29 == true && var_r28 == true) {
+ if (mSelectedFile != 0xFF) {
+ mpSelData[mSelectedFile]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ selFileCursorShow();
+ }
+ mMenuProc = PROC_SAVE_SELECT;
+ }
+}
+
+
+/* 801F3934-801F3A94 1EE274 0160+00 1/0 0/0 0/0 .text saveSelect__12dMenu_save_cFv */
+void dMenu_save_c::saveSelect() {
+ if (!mDoRst::isReset()) {
+ stick->checkTrigger();
+
+ if (mDoCPd_c::getTrigA(PAD_1)) {
+ saveSelectStart();
+ } else if (mDoCPd_c::getTrigB(PAD_1)) {
+ closeSelect();
+ } else if (stick->checkUpTrigger()) {
+ if (mSelectedFile != 0) {
+ mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR, NULL, 0, 0);
+ mLastSelFile = mSelectedFile;
+ mSelectedFile--;
+ dataSelectAnmSet();
+ mMenuProc = PROC_SAVE_SELECT_MOVE_ANM;
+ }
+ } else if (stick->checkDownTrigger()) {
+ if (mSelectedFile != 2) {
+ mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR, NULL, 0, 0);
+ mLastSelFile = mSelectedFile;
+ mSelectedFile++;
+ dataSelectAnmSet();
+ mMenuProc = PROC_SAVE_SELECT_MOVE_ANM;
+ }
+ }
+ }
+}
+
+
+/* 801F3A94-801F3BE0 1EE3D4 014C+00 1/1 0/0 0/0 .text saveSelectStart__12dMenu_save_cFv
+ */
+void dMenu_save_c::saveSelectStart() {
+ mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ selectDataMoveAnmInitSet(SelOpenStartFrameTbl[mSelectedFile],
+ SelOpenEndFrameTbl[mSelectedFile]);
+ mSelIcon->setAlphaRate(0.0f);
+ selectWakuAlpahAnmInit(mSelectedFile, 255, 0, g_msHIO.mSelectFrames);
+
+ if (field_0x1aa[mSelectedFile] != 0) {
+ u8* saveData = mSaveBuffer;
+ for (int i = 0; i < 3; i++) {
+ mDoMemCdRWm_TestCheckSumGameData(saveData);
+ saveData += QUEST_LOG_SIZE;
+ }
+ headerTxtSet(0x3A); // Saving...
+ mWarning->openInit();
+ ketteiTxtDispAnmInit(0);
+ modoruTxtDispAnmInit(0);
+ mMenuProc = PROC_SAVE_MOVE_DISP2;
+ } else {
+ yesnoMenuMoveAnmInitSet(2089, 2099, 0);
+ headerTxtSet(0x4CB); // Overwrite this log?
+ mMenuProc = PROC_SELECT_DATA_OPEN_MOVE;
+ }
+}
+
+
+/* 801F3BE0-801F3C7C 1EE520 009C+00 1/0 0/0 0/0 .text selectDataOpenMove__12dMenu_save_cFv */
+void dMenu_save_c::selectDataOpenMove() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool selDataAnmComplete = selectDataMoveAnm();
+ bool yesnoAnmComplete = yesnoMenuMoveAnm();
+ bool wakuAnmComplete = selectWakuAlpahAnm(mSelectedFile);
+
+ if (headerTxtChanged == true && selDataAnmComplete == true && yesnoAnmComplete == true &&
+ wakuAnmComplete == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_SAVE_YES_NO_SELECT;
+ }
+}
+
+/* 801F3C7C-801F3E30 1EE5BC 01B4+00 1/1 0/0 0/0 .text dataSelectAnmSet__12dMenu_save_cFv
+ */
+void dMenu_save_c::dataSelectAnmSet() {
+ if (mSelectedFile != 0xFF) {
+ mpSelData[mSelectedFile]->getPanePtr()->setAnimation(field_0x40);
+ field_0x74[mSelectedFile] = SelStartFrameTbl[mSelectedFile];
+ field_0x40->setFrame(field_0x74[mSelectedFile]);
+ mpSelData[mSelectedFile]->getPanePtr()->animationTransform();
+ mpBookWaku[mSelectedFile]->alphaAnimeStart(0);
+ }
+
+ if (mLastSelFile != 0xFF) {
+ selectWakuAlpahAnmInit(mLastSelFile, 255, 0, g_msHIO.mSelectFrames);
+ mpSelData[mLastSelFile]->getPanePtr()->setAnimation(field_0x44);
+ field_0x74[mLastSelFile] = SelEndFrameTbl[mLastSelFile];
+ field_0x44->setFrame(field_0x74[mLastSelFile]);
+ mpSelData[mLastSelFile]->getPanePtr()->animationTransform();
+ mpBookWaku[mLastSelFile]->alphaAnimeStart(0);
+ mSelIcon->setAlphaRate(0.0f);
+ }
+}
+
+
+/* 801F3E30-801F40D8 1EE770 02A8+00 1/0 0/0 0/0 .text saveSelectMoveAnime__12dMenu_save_cFv */
+void dMenu_save_c::saveSelectMoveAnime() {
+ bool bookWakuAnmComplete = true;
+ bool selWakuAnmComplete = true;
+ bool var_r29 = true;
+
+ if (mLastSelFile != 0xFF) {
+ bookWakuAnmComplete = mpBookWaku[mLastSelFile]->alphaAnime(g_msHIO.mEffectDispFrames, 255, 0, 1);
+ selWakuAnmComplete = selectWakuAlpahAnm(mLastSelFile);
+
+ if (field_0x74[mLastSelFile] != SelStartFrameTbl[mLastSelFile]) {
+ field_0x74[mLastSelFile] -= 2;
+
+ if (field_0x74[mLastSelFile] < SelStartFrameTbl[mLastSelFile]) {
+ field_0x74[mLastSelFile] = SelStartFrameTbl[mLastSelFile];
+ }
+
+ field_0x44->setFrame(field_0x74[mLastSelFile]);
+ mpSelData[mLastSelFile]->getPanePtr()->animationTransform();
+ var_r29 = false;
+ }
+ }
+
+ bool var_r28 = true;
+ bool var_r27 = true;
+ if (mSelectedFile != 0xFF) {
+ var_r28 = mpBookWaku[mSelectedFile]->alphaAnime(g_msHIO.mEffectDispFrames, 0, 0xFF, 1);
+
+ if (field_0x74[mSelectedFile] != SelEndFrameTbl[mSelectedFile]) {
+ field_0x74[mSelectedFile] += 2;
+
+ if (field_0x74[mSelectedFile] > SelEndFrameTbl[mSelectedFile]) {
+ field_0x74[mSelectedFile] = SelEndFrameTbl[mSelectedFile];
+ }
+
+ field_0x40->setFrame(field_0x74[mSelectedFile]);
+ mpSelData[mSelectedFile]->getPanePtr()->animationTransform();
+ var_r27 = false;
+ }
+ }
+
+ if (bookWakuAnmComplete == true && selWakuAnmComplete == true && var_r29 == true && var_r28 == true &&
+ var_r27 == true) {
+ if (mSelectedFile != 0xFF) {
+ mpSelData[mSelectedFile]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ selFileCursorShow();
+ }
+
+ if (mLastSelFile != 0xFF) {
+ mpSelData[mLastSelFile]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ }
+ mMenuProc = PROC_SAVE_SELECT;
+ }
+}
+
+
+/* 801F40D8-801F4238 1EEA18 0160+00 1/0 0/0 0/0 .text saveYesNoSelect__12dMenu_save_cFv
+ */
+void dMenu_save_c::saveYesNoSelect() {
+ if (!mDoRst::isReset()) {
+ stick->checkTrigger();
+
+ if (mDoCPd_c::getTrigA(PAD_1)) {
+ yesnoSelectStart();
+ } else if (mDoCPd_c::getTrigB(PAD_1)) {
+ yesnoCancelAnmSet();
+ } else if (stick->checkRightTrigger()) {
+ if (mYesNoCursor != CURSOR_NO) {
+ mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0);
+ mYesNoPrevCursor = mYesNoCursor;
+ mYesNoCursor = CURSOR_NO;
+ yesnoSelectAnmSet(0);
+ mMenuProc = PROC_YES_NO_CURSOR_MOVE_ANM;
+ }
+ } else if (stick->checkLeftTrigger()) {
+ if (mYesNoCursor != CURSOR_YES) {
+ mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0);
+ mYesNoPrevCursor = mYesNoCursor;
+ mYesNoCursor = CURSOR_YES;
+ yesnoSelectAnmSet(0);
+ mMenuProc = PROC_YES_NO_CURSOR_MOVE_ANM;
+ }
+ }
+ }
+}
+
+
+/* 801F4238-801F42FC 1EEB78 00C4+00 1/1 0/0 0/0 .text yesnoSelectStart__12dMenu_save_cFv
+ */
+void dMenu_save_c::yesnoSelectStart() {
+ if (mYesNoCursor != CURSOR_NO) {
+ mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ mSelIcon->setAlphaRate(0.0f);
+ yesnoMenuMoveAnmInitSet(2099, 2089, 0);
+ headerTxtSet(0x3A); // Saving...
+ mWarning->openInit();
+ ketteiTxtDispAnmInit(0);
+ modoruTxtDispAnmInit(0);
+ mMenuProc = PROC_SAVE_MOVE_DISP;
+ } else {
+ yesnoCancelAnmSet();
+ }
+}
+
+
+/* 801F42FC-801F43F8 1EEC3C 00FC+00 1/0 0/0 0/0 .text saveMoveDisp__12dMenu_save_cFv */
+void dMenu_save_c::saveMoveDisp() {
+ mDoAud_seStartLevel(Z2SE_SY_FILE_SAVE_LEVEL, NULL, 0, 0);
+
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool yesnoAnmComplete = yesnoMenuMoveAnm();
+ bool ketteiAnmComplete = ketteiTxtDispAnm();
+ bool modoruAnmComplete = modoruTxtDispAnm();
+ u32 check = mWarning->getStatus() != 0;
+
+ if (headerTxtChanged == true && yesnoAnmComplete == true && ketteiAnmComplete == true &&
+ modoruAnmComplete == 1 && check == 1) {
+ mWaitTimer = g_msHIO.mCardWaitFrames;
+ dataWrite();
+ mMenuProc = PROC_MEMCARD_DATA_SAVE_WAIT;
+ }
+}
+
+
+/* 801F43F8-801F4510 1EED38 0118+00 1/0 0/0 0/0 .text saveMoveDisp2__12dMenu_save_cFv */
+void dMenu_save_c::saveMoveDisp2() {
+ mDoAud_seStartLevel(Z2SE_SY_FILE_SAVE_LEVEL, NULL, 0, 0);
+
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool dataMoveAnm = selectDataMoveAnm();
+ bool wakuAnmComplete = selectWakuAlpahAnm(mSelectedFile);
+ bool ketteiAnmComplete = ketteiTxtDispAnm();
+ bool modoruAnmComplete = modoruTxtDispAnm();
+ u32 check = mWarning->getStatus() != 0;
+
+ if (headerTxtChanged == true && dataMoveAnm == true && wakuAnmComplete == true &&
+ ketteiAnmComplete == true && modoruAnmComplete == 1 && check == 1) {
+ mWaitTimer = g_msHIO.mCardWaitFrames;
+ dataWrite();
+ mMenuProc = PROC_MEMCARD_DATA_SAVE_WAIT;
+ }
+}
+
+
+/* 801F4510-801F46B4 1EEE50 01A4+00 4/4 0/0 0/0 .text yesnoSelectAnmSet__12dMenu_save_cFUc */
+void dMenu_save_c::yesnoSelectAnmSet(u8 param_0) {
+ if (mYesNoPrevCursor != 0xFF) {
+ yesnoWakuAlpahAnmInit(mYesNoPrevCursor, 255, 0, g_msHIO.mSelectFrames);
+ mpNoYes[mYesNoPrevCursor]->getPanePtr()->setAnimation(field_0x40);
+ field_0x8c[mYesNoPrevCursor] = YnSelEndFrameTbl[mYesNoPrevCursor][param_0];
+ field_0x40->setFrame(field_0x8c[mYesNoPrevCursor]);
+ mpNoYes[mYesNoPrevCursor]->getPanePtr()->animationTransform();
+ mSelIcon->setAlphaRate(0.0f);
+ }
+
+ if (mYesNoCursor != 0xFF) {
+ mpNoYes[mYesNoCursor]->getPanePtr()->setAnimation(field_0x44);
+ field_0x8c[mYesNoCursor] = YnSelStartFrameTbl[mYesNoCursor][param_0];
+ field_0x44->setFrame(field_0x8c[mYesNoCursor]);
+ mpNoYes[mYesNoCursor]->getPanePtr()->animationTransform();
+ }
+}
+
+
+/* 801F46B4-801F4724 1EEFF4 0070+00 1/0 0/0 0/0 .text yesNoCursorMoveAnm__12dMenu_save_cFv */
+void dMenu_save_c::yesNoCursorMoveAnm() {
+ bool selAnmComplete = yesnoSelectMoveAnm(0);
+ bool wakuAnmComplete = yesnoWakuAlpahAnm(mYesNoPrevCursor);
+
+ if (selAnmComplete == true && wakuAnmComplete == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_SAVE_YES_NO_SELECT;
+ }
+}
+
+/* 801F4724-801F47DC 1EF064 00B8+00 2/2 0/0 0/0 .text yesnoCancelAnmSet__12dMenu_save_cFv
+ */
+void dMenu_save_c::yesnoCancelAnmSet() {
+ mDoAud_seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0);
+ mSelIcon->setAlphaRate(0.0f);
+ headerTxtSet(0x4CA);
+ selectDataMoveAnmInitSet(SelOpenEndFrameTbl[mSelectedFile],
+ SelOpenStartFrameTbl[mSelectedFile]);
+ yesnoMenuMoveAnmInitSet(2099, 2089, 0);
+ mMenuProc = PROC_SAVE_YES_NO_CANCEL_MOVE;
+}
+
+
+/* 801F47DC-801F485C 1EF11C 0080+00 1/0 0/0 0/0 .text saveYesNoCancelMove__12dMenu_save_cFv */
+void dMenu_save_c::saveYesNoCancelMove() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool yesnoAnmComplete = yesnoMenuMoveAnm();
+ bool dataAnmComplete = selectDataMoveAnm();
+
+ if (headerTxtChanged == true && yesnoAnmComplete == true && dataAnmComplete == true) {
+ selFileCursorShow();
+ mMenuProc = PROC_SAVE_SELECT;
+ }
+}
+
+/* 801F485C-801F4928 1EF19C 00CC+00 7/7 0/0 0/0 .text headerTxtSet__12dMenu_save_cFUs */
+void dMenu_save_c::headerTxtSet(u16 msgID) {
+ if (msgID == 0xFFFF) {
+ strcpy(mpHeaderTxt[mHeaderTxtType ^ 1], "");
+ } else {
+ mSaveSel.mMsgString->getString(
+ msgID, (J2DTextBox*)mpHeaderTxtPane[mHeaderTxtType ^ 1]->getPanePtr(), NULL,
+ mSaveSel.font[0], NULL, 0);
+ }
+
+ mpHeaderTxtPane[mHeaderTxtType]->alphaAnimeStart(0);
+ mpHeaderTxtPane[mHeaderTxtType ^ 1]->alphaAnimeStart(0);
+ mHeaderAnmComplete = false;
+}
+
+/* 801F4928-801F4A10 1EF268 00E8+00 10/10 0/0 0/0 .text headerTxtChangeAnm__12dMenu_save_cFv */
+bool dMenu_save_c::headerTxtChangeAnm() {
+ if (mHeaderAnmComplete) {
+ return true;
+ }
+
+ bool changed = false;
+ bool curHeaderAnmComplete =
+ mpHeaderTxtPane[mHeaderTxtType]->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 0, 0);
+ bool newHeaderAnmComplete =
+ mpHeaderTxtPane[mHeaderTxtType ^ 1]->alphaAnime(g_msHIO.mCharSwitchFrames, 0, 255, 0);
+ int msgWaitTimer = dMeter2Info_getMsgKeyWaitTimer();
+
+ if (curHeaderAnmComplete == true && newHeaderAnmComplete == true && msgWaitTimer == 0) {
+ mHeaderTxtType ^= 1;
+ mHeaderAnmComplete = true;
+ changed = true;
+ }
+
+ return changed;
+}
+
+/* 801F4A10-801F4B84 1EF350 0174+00 1/1 0/0 0/0 .text errDispInitSet__12dMenu_save_cFi */
+void dMenu_save_c::errDispInitSet(int param_0) {
+ headerTxtSet(1);
+ mpErrTxtPane[mErrTxtType]->setAlpha(255);
+ mpErrTxtPane[mErrTxtType ^ 1]->setAlpha(0);
+
+ mSaveSel.mMsgString->getString(param_0, (J2DTextBox*)mpErrTxtPane[mErrTxtType]->getPanePtr(),
+ NULL, mSaveSel.font[0], NULL, 0);
+
+ if (field_0xd2 != 0 || field_0xd3 != 0) {
+ errorMoveAnmInitSet(2859, 2849);
+ }
+
+ if (field_0x64 != 0 || field_0x65 != 0) {
+ selectDataBaseMoveAnmInitSet(33, 1);
+ }
+
+ if (field_0x9c != 0 || field_0x9d != 0) {
+ yesnoMenuMoveAnmInitSet(2099, 2089, 0);
+ }
+
+ modoruTxtDispAnmInit(0);
+ ketteiTxtDispAnmInit(0);
+ mWarning->init();
+ mSelIcon->setAlphaRate(0.0f);
+ mMenuProc = PROC_MSG_WINDOW_INIT_OPEN;
+}
+
+
+/* 801F4B84-801F4D10 1EF4C4 018C+00 1/0 0/0 0/0 .text msgWindowInitOpen__12dMenu_save_cFv
+ */
+void dMenu_save_c::msgWindowInitOpen() {
+ bool headerTxtChanged = true;
+
+ if (field_0x17a == 0) {
+ headerTxtChanged = headerTxtChangeAnm();
+ }
+
+ bool dataAnmComplete = true;
+ bool yesnoAnmComplete = true;
+ bool errorAnmComplete = true;
+
+ if (field_0x64 != 0 || field_0x65 != 0) {
+ dataAnmComplete = selectDataBaseMoveAnm();
+ }
+
+ if (field_0x9c != 0 || field_0x9d != 0) {
+ yesnoAnmComplete = yesnoMenuMoveAnm();
+ }
+
+ if (field_0xd2 != 0 || field_0xd3 != 0) {
+ errorAnmComplete = errorMoveAnm();
+ }
+
+ bool modoruAnmComplete = modoruTxtDispAnm();
+ bool ketteiAnmComplete = ketteiTxtDispAnm();
+
+ if (headerTxtChanged == true && dataAnmComplete == true && yesnoAnmComplete == true && errorAnmComplete == true &&
+ modoruAnmComplete == true && ketteiAnmComplete == true) {
+ mSaveSel.Scr->clearAnmTransform();
+ errorMoveAnmInitSet(2849, 2859);
+
+ if (field_0x9e != 0) {
+ yesnoMenuMoveAnmInitSet(2999, 3009, 0);
+ ketteiTxtDispAnmInit(1);
+ } else {
+ ketteiTxtDispAnmInit(0);
+ }
+
+ field_0x17a = 1;
+ mMenuProc = PROC_MSG_WINDOW_OPEN;
+ }
+}
+
+/* 801F4D10-801F4DAC 1EF650 009C+00 1/0 0/0 0/0 .text msgWindowOpen__12dMenu_save_cFv */
+void dMenu_save_c::msgWindowOpen() {
+ bool errorAnmComplete = errorMoveAnm();
+ bool yesnoAnmComplete = true;
+
+ if (field_0x9e != 0) {
+ yesnoAnmComplete = yesnoMenuMoveAnm();
+ }
+
+ bool ketteiAnmComplete = ketteiTxtDispAnm();
+
+ if (errorAnmComplete == true && yesnoAnmComplete == true && ketteiAnmComplete == true) {
+ if (field_0x9e != 0) {
+ yesnoCursorShow();
+ }
+
+ mMenuProc = field_0x1b4;
+ }
+}
+
+/* 801F4DAC-801F4E48 1EF6EC 009C+00 1/0 0/0 0/0 .text msgWindowClose__12dMenu_save_cFv */
+void dMenu_save_c::msgWindowClose() {
+ bool errorAnmComplete = errorMoveAnm();
+ bool yenoAnmComplete = true;
+
+ if (field_0x9c != 0) {
+ yenoAnmComplete = yesnoMenuMoveAnm();
+ }
+
+ if (errorAnmComplete == true && yenoAnmComplete == true) {
+ field_0x9e = 0;
+
+ if (mpErrFunc != NULL) {
+ (this->*mpErrFunc)();
+ } else {
+ mMenuProc = field_0x1b4;
+ }
+ }
+}
+
+/* 801F4E48-801F4FB4 1EF788 016C+00 6/6 0/0 0/0 .text errYesNoSelect__12dMenu_save_cFUcUc
+ */
+bool dMenu_save_c::errYesNoSelect(u8 param_0, u8 param_1) {
+ bool yesnoSelected = false;
+
+ if (mDoRst::isReset()) {
+ return false;
+ }
+
+ stick->checkTrigger();
+
+ if (mDoCPd_c::getTrigA(PAD_1)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ if (param_1 == 0) {
+ mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ }
+ } else if (param_1 == 0) {
+ mDoAud_seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0);
+ }
+
+ mSelIcon->setAlphaRate(0.0f);
+ yesnoSelected = true;
+ } else if (stick->checkRightTrigger()) {
+ if (mYesNoCursor != CURSOR_NO) {
+ errCurMove(param_0, 0);
+ }
+ } else if (stick->checkLeftTrigger()) {
+ if (mYesNoCursor != CURSOR_YES) {
+ errCurMove(param_0, 0);
+ }
+ }
+
+ return yesnoSelected;
+}
+
+
+/* 801F4FB4-801F5054 1EF8F4 00A0+00 1/1 0/0 0/0 .text errCurMove__12dMenu_save_cFUcUc */
+void dMenu_save_c::errCurMove(u8 param_0, u8 param_1) {
+ mYesNoPrevCursor = mYesNoCursor;
+ mYesNoCursor ^= 1;
+ field_0x2195 = param_0;
+
+ mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, param_1, 0);
+ yesnoSelectAnmSet(param_0);
+ field_0x1b3 = mMenuProc;
+ mMenuProc = PROC_ERR_YES_NO_CURSOR_MOVE_ANM;
+}
+
+
+/* 801F5054-801F50C4 1EF994 0070+00 1/0 0/0 0/0 .text errYesNoCursorMoveAnm__12dMenu_save_cFv */
+void dMenu_save_c::errYesNoCursorMoveAnm() {
+ bool moveAnmComplete = yesnoSelectMoveAnm(field_0x2195);
+ bool wakuAnmComplete = yesnoWakuAlpahAnm(mYesNoPrevCursor);
+
+ if (moveAnmComplete == true && wakuAnmComplete == true) {
+ yesnoCursorShow();
+ mMenuProc = field_0x1b3;
+ }
+}
+
+/* 801F50C4-801F5190 1EFA04 00CC+00 9/9 0/0 0/0 .text errorTxtSet__12dMenu_save_cFUs */
+void dMenu_save_c::errorTxtSet(u16 msgID) {
+ if (msgID == 0xFFFF) {
+ strcpy(mpErrTxt[mErrTxtType ^ 1], "");
+ } else {
+ J2DTextBox* tbox = (J2DTextBox*)mpErrTxtPane[mErrTxtType ^ 1]->getPanePtr();
+ mSaveSel.mMsgString->getString(msgID, tbox, NULL, mSaveSel.font[0], NULL, 0);
+ }
+
+ mpErrTxtPane[mErrTxtType]->alphaAnimeStart(0);
+ mpErrTxtPane[mErrTxtType ^ 1]->alphaAnimeStart(0);
+ mErrTxtAnmComplete = false;
+}
+
+/* 801F5190-801F5278 1EFAD0 00E8+00 9/9 0/0 0/0 .text errorTxtChangeAnm__12dMenu_save_cFv
+ */
+bool dMenu_save_c::errorTxtChangeAnm() {
+ if (mErrTxtAnmComplete) {
+ return true;
+ }
+
+ bool anmComplete = false;
+ bool errTxtAnm1Complete =
+ mpErrTxtPane[mErrTxtType]->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 0, 0);
+ bool errTxtAnm2Complete =
+ mpErrTxtPane[mErrTxtType ^ 1]->alphaAnime(g_msHIO.mCharSwitchFrames, 0, 255, 0);
+ int msgWaitTimer = dMeter2Info_getMsgKeyWaitTimer();
+
+ if (errTxtAnm1Complete == true && errTxtAnm2Complete == true && msgWaitTimer == 0) {
+ mErrTxtType ^= 1;
+ mErrTxtAnmComplete = true;
+ anmComplete = true;
+ }
+
+ return anmComplete;
+}
+
+/* 801F5278-801F533C 1EFBB8 00C4+00 1/1 0/0 0/0 .text saveSelectOpenInit__12dMenu_save_cFv */
+void dMenu_save_c::saveSelectOpenInit() {
+ if (field_0x64 != 0 || field_0x65 != 0) {
+ selectDataBaseMoveAnmInitSet(0x21, 1);
+ }
+
+ if (field_0xd2 != 0 || field_0xd3 != 0) {
+ errorMoveAnmInitSet(0xB2B, 0xB21);
+ }
+
+ if (field_0x9c != 0 || field_0x9c != 0) {
+ yesnoMenuMoveAnmInitSet(2099, 2089, 0);
+ }
+
+ mWarning->init();
+ headerTxtSet(0xFFFF);
+ field_0x17a = 0;
+ mMenuProc = PROC_OPEN_SAVE_SELECT;
+}
+
+/* 801F533C-801F53D4 1EFC7C 0098+00 3/3 0/0 0/0 .text
+ * selectDataBaseMoveAnmInitSet__12dMenu_save_cFii */
+void dMenu_save_c::selectDataBaseMoveAnmInitSet(int param_0, int param_1) {
+ mpSelectMoveBase->getPanePtr()->setAnimation(field_0x40);
+ mDataBaseMoveAnmFrame = param_0;
+ mDataBaseMoveFrameMax = param_1;
+
+ field_0x40->setFrame(mDataBaseMoveAnmFrame);
+ mpSelectMoveBase->getPanePtr()->animationTransform();
+ field_0x65 = 1;
+}
+
+
+/* 801F53D4-801F54C0 1EFD14 00EC+00 3/3 0/0 0/0 .text selectDataBaseMoveAnm__12dMenu_save_cFv */
+bool dMenu_save_c::selectDataBaseMoveAnm() {
+ if (mDataBaseMoveAnmFrame != mDataBaseMoveFrameMax) {
+ if (mDataBaseMoveAnmFrame < mDataBaseMoveFrameMax) {
+ mDataBaseMoveAnmFrame += 2;
+
+ if (mDataBaseMoveAnmFrame > mDataBaseMoveFrameMax) {
+ mDataBaseMoveAnmFrame = mDataBaseMoveFrameMax;
+ }
+ } else {
+ mDataBaseMoveAnmFrame -= 2;
+
+ if (mDataBaseMoveAnmFrame < mDataBaseMoveFrameMax) {
+ mDataBaseMoveAnmFrame = mDataBaseMoveFrameMax;
+ }
+ }
+
+ field_0x40->setFrame(mDataBaseMoveAnmFrame);
+ mpSelectMoveBase->getPanePtr()->animationTransform();
+ return false;
+ } else {
+ if (mDataBaseMoveAnmFrame == 33) {
+ field_0x64 = 1;
+ field_0x65 = 0;
+ } else {
+ field_0x64 = 0;
+ }
+
+ mpSelectMoveBase->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ return true;
+ }
+}
+
+
+/* 801F54C0-801F5508 1EFE00 0048+00 1/1 0/0 0/0 .text saveSelectOpenAnmSet__12dMenu_save_cFv */
+void dMenu_save_c::saveSelectOpenAnmSet() {
+ setSaveData();
+
+ if (field_0x64 == 0) {
+ selectDataBaseMoveAnmInitSet(1, 0x21);
+ }
+}
+
+/* 801F5508-801F5600 1EFE48 00F8+00 2/2 0/0 0/0 .text selectDataMoveAnmInitSet__12dMenu_save_cFii
+ */
+void dMenu_save_c::selectDataMoveAnmInitSet(int param_0, int param_1) {
+ mpSelData[0]->getPanePtr()->setAnimation(field_0x40);
+ mpSelData[1]->getPanePtr()->setAnimation(field_0x40);
+ mpSelData[2]->getPanePtr()->setAnimation(field_0x40);
+
+ field_0x74[mSelectedFile] = param_0;
+ field_0x80 = param_1;
+ field_0x40->setFrame(field_0x74[mSelectedFile]);
+
+ mpSelData[0]->getPanePtr()->animationTransform();
+ mpSelData[1]->getPanePtr()->animationTransform();
+ mpSelData[2]->getPanePtr()->animationTransform();
+}
+
+
+/* 801F5600-801F5744 1EFF40 0144+00 3/3 0/0 0/0 .text selectDataMoveAnm__12dMenu_save_cFv
+ */
+bool dMenu_save_c::selectDataMoveAnm() {
+ if (field_0x74[mSelectedFile] != field_0x80) {
+ if (field_0x74[mSelectedFile] < field_0x80) {
+ field_0x74[mSelectedFile] += 2;
+
+ if (field_0x74[mSelectedFile] > field_0x80) {
+ field_0x74[mSelectedFile] = field_0x80;
+ }
+ } else {
+ field_0x74[mSelectedFile] -= 2;
+
+ if (field_0x74[mSelectedFile] < field_0x80) {
+ field_0x74[mSelectedFile] = field_0x80;
+ }
+ }
+
+ field_0x40->setFrame(field_0x74[mSelectedFile]);
+ for (int i = 0; i < 3; i++) {
+ mpSelData[i]->getPanePtr()->animationTransform();
+ }
+
+ return false;
+ } else {
+ for (int i = 0; i < 3; i++) {
+ mpSelData[i]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ }
+ return true;
+ }
+}
+
+
+/* 801F5744-801F58C8 1F0084 0184+00 12/12 0/0 0/0 .text
+ * yesnoMenuMoveAnmInitSet__12dMenu_save_cFiiUc */
+void dMenu_save_c::yesnoMenuMoveAnmInitSet(int anmFrame, int frameMax, u8 param_2) {
+ if (param_2 == 0 && field_0x9c == 0) {
+ mYesNoCursor = CURSOR_NO;
+ mYesNoPrevCursor = 1;
+ }
+
+ if (anmFrame == 2089) {
+ ((J2DTextBox*)mpNoYesTxt[mYesNoCursor]->getPanePtr())
+ ->setWhite(JUtility::TColor(255, 255, 255, 255));
+ ((J2DTextBox*)mpNoYesTxt[mYesNoPrevCursor]->getPanePtr())
+ ->setWhite(JUtility::TColor(150, 150, 150, 255));
+ }
+
+ mSelIcon->setAlphaRate(0.0f);
+ mpNoYes[0]->getPanePtr()->setAnimation(field_0x48);
+ mpNoYes[1]->getPanePtr()->setAnimation(field_0x48);
+ mYesNoMoveAnmFrame = anmFrame;
+ mYesNoMoveAnmMax = frameMax;
+
+ field_0x48->setFrame(mYesNoMoveAnmFrame);
+ mpNoYes[0]->getPanePtr()->animationTransform();
+ mpNoYes[1]->getPanePtr()->animationTransform();
+ field_0x9d = 1;
+}
+
+
+/* 801F58C8-801F5AE4 1F0208 021C+00 13/13 0/0 0/0 .text yesnoMenuMoveAnm__12dMenu_save_cFv */
+bool dMenu_save_c::yesnoMenuMoveAnm() {
+ if (mYesNoMoveAnmFrame != mYesNoMoveAnmMax) {
+ if (mYesNoMoveAnmFrame < mYesNoMoveAnmMax) {
+ mYesNoMoveAnmFrame += 2;
+
+ if (mYesNoMoveAnmFrame > mYesNoMoveAnmMax) {
+ mYesNoMoveAnmFrame = mYesNoMoveAnmMax;
+ }
+ } else {
+ mYesNoMoveAnmFrame -= 2;
+
+ if (mYesNoMoveAnmFrame < mYesNoMoveAnmMax) {
+ mYesNoMoveAnmFrame = mYesNoMoveAnmMax;
+ }
+ }
+
+ field_0x48->setFrame(mYesNoMoveAnmFrame);
+ mpNoYes[0]->getPanePtr()->animationTransform();
+ mpNoYes[1]->getPanePtr()->animationTransform();
+ return false;
+ } else {
+ mpNoYes[0]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ mpNoYes[1]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+
+ if (mYesNoMoveAnmFrame == 0x833 || mYesNoMoveAnmFrame == 0x8C9 ||
+ mYesNoMoveAnmFrame == 0xBC1) {
+ field_0x9c = 1;
+
+ if (mYesNoCursor != 0xFF) {
+ mNoYesBase[mYesNoCursor]->setAlpha(255);
+ mNoYesGold[mYesNoCursor]->setAlpha(255);
+ mNoYesGold2[mYesNoCursor]->setAlpha(255);
+ }
+ } else {
+ field_0x9c = 0;
+
+ if (mYesNoCursor != 0xFF) {
+ mNoYesBase[mYesNoCursor]->setAlpha(0);
+ mNoYesGold[mYesNoCursor]->setAlpha(0);
+ mNoYesGold2[mYesNoCursor]->setAlpha(0);
+ }
+ }
+ field_0x9d = 0;
+
+ return true;
+ }
+}
+
+
+/* 801F5AE4-801F5D84 1F0424 02A0+00 4/4 0/0 0/0 .text yesnoSelectMoveAnm__12dMenu_save_cFUc */
+bool dMenu_save_c::yesnoSelectMoveAnm(u8 param_0) {
+ bool ret = false;
+ bool var_r30 = true;
+ if (mYesNoPrevCursor != 0xFF) {
+ if (field_0x8c[mYesNoPrevCursor] != YnSelStartFrameTbl[mYesNoPrevCursor][param_0]) {
+ if (field_0x8c[mYesNoPrevCursor] < YnSelStartFrameTbl[mYesNoPrevCursor][param_0]) {
+ field_0x8c[mYesNoPrevCursor] += 2;
+
+ if (field_0x8c[mYesNoPrevCursor] > YnSelStartFrameTbl[mYesNoPrevCursor][param_0]) {
+ field_0x8c[mYesNoPrevCursor] = YnSelStartFrameTbl[mYesNoPrevCursor][param_0];
+ }
+ } else {
+ field_0x8c[mYesNoPrevCursor] -= 2;
+
+ if (field_0x8c[mYesNoPrevCursor] < YnSelStartFrameTbl[mYesNoPrevCursor][param_0]) {
+ field_0x8c[mYesNoPrevCursor] = YnSelStartFrameTbl[mYesNoPrevCursor][param_0];
+ }
+ }
+
+ field_0x40->setFrame(field_0x8c[mYesNoPrevCursor]);
+ mpNoYes[mYesNoPrevCursor]->getPanePtr()->animationTransform();
+ var_r30 = false;
+ }
+ }
+
+ bool var_r7 = true;
+ if (mYesNoCursor != 0xFF) {
+ if (field_0x8c[mYesNoCursor] != YnSelEndFrameTbl[mYesNoCursor][param_0]) {
+ if (field_0x8c[mYesNoCursor] < YnSelEndFrameTbl[mYesNoCursor][param_0]) {
+ field_0x8c[mYesNoCursor] += 2;
+
+ if (field_0x8c[mYesNoCursor] > YnSelEndFrameTbl[mYesNoCursor][param_0]) {
+ field_0x8c[mYesNoCursor] = YnSelEndFrameTbl[mYesNoCursor][param_0];
+ }
+ } else {
+ field_0x8c[mYesNoCursor] -= 2;
+
+ if (field_0x8c[mYesNoCursor] < YnSelEndFrameTbl[mYesNoCursor][param_0]) {
+ field_0x8c[mYesNoCursor] = YnSelEndFrameTbl[mYesNoCursor][param_0];
+ }
+ }
+
+ field_0x44->setFrame(field_0x8c[mYesNoCursor]);
+ mpNoYes[mYesNoCursor]->getPanePtr()->animationTransform();
+ var_r7 = false;
+ }
+ }
+
+ if (var_r30 == true && var_r7 == true) {
+ if (mYesNoPrevCursor != 0xFF) {
+ mpNoYes[mYesNoPrevCursor]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ }
+
+ if (mYesNoCursor != 0xFF) {
+ mpNoYes[mYesNoCursor]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ }
+ ret = true;
+ }
+
+ return ret;
+}
+
+
+/* ############################################################################################## */
+/* 8045447C-80454480 002A7C 0004+00 1/1 0/0 0/0 .sdata2 @6327 */
+SECTION_SDATA2 static f32 lit_6327 = 21.0f / 25.0f;
+
+/* 80454480-80454488 002A80 0004+04 1/1 0/0 0/0 .sdata2 @6328 */
+SECTION_SDATA2 static f32 lit_6328[1 + 1 /* padding */] = {
+ 3.0f / 50.0f,
+ /* padding */
+ 0.0f,
+};
+
+/* 801F5D84-801F5EF4 1F06C4 0170+00 9/9 0/0 0/0 .text yesnoCursorShow__12dMenu_save_cFv
+ */
+void dMenu_save_c::yesnoCursorShow() {
+ if (mYesNoCursor != 0xFF) {
+ ((J2DTextBox*)mpNoYesTxt[mYesNoCursor]->getPanePtr())
+ ->setWhite(JUtility::TColor(255, 255, 255, 255));
+
+ mNoYesBase[mYesNoCursor]->setAlpha(255);
+ mNoYesGold[mYesNoCursor]->setAlpha(255);
+ mNoYesGold2[mYesNoCursor]->setAlpha(255);
+
+ Vec pos = mpNoYes[mYesNoCursor]->getGlobalVtxCenter(false, 0);
+ mSelIcon->setPos(pos.x, pos.y, mpNoYes[mYesNoCursor]->getPanePtr(), true);
+ mSelIcon->setAlphaRate(1.0f);
+ mSelIcon->setParam(0.96f, 0.84f, 0.06f, 0.5f, 0.5f);
+ }
+}
+
+
+/* 801F5EF4-801F5F84 1F0834 0090+00 3/3 0/0 0/0 .text errorMoveAnmInitSet__12dMenu_save_cFii */
+void dMenu_save_c::errorMoveAnmInitSet(int param_0, int param_1) {
+ field_0xb4->setAnimation(field_0x4c);
+ field_0xb8 = param_0;
+ field_0xbc = param_1;
+ field_0x4c->setFrame(field_0xb8);
+ field_0xb4->animationTransform();
+ field_0xd3 = 1;
+}
+
+
+/* 801F5F84-801F60A4 1F08C4 0120+00 4/4 0/0 0/0 .text errorMoveAnm__12dMenu_save_cFv */
+bool dMenu_save_c::errorMoveAnm() {
+ if (field_0xb8 != field_0xbc) {
+ if (field_0xb8 < field_0xbc) {
+ field_0xb8 += 2;
+
+ if (field_0xb8 > field_0xbc) {
+ field_0xb8 = field_0xbc;
+ }
+ } else {
+ field_0xb8 -= 2;
+
+ if (field_0xb8 < field_0xbc) {
+ field_0xb8 = field_0xbc;
+ }
+ }
+
+ field_0x4c->setFrame(field_0xb8);
+ field_0xb4->animationTransform();
+ return 0;
+ } else {
+ field_0x4c->setFrame(field_0xbc);
+ field_0xb4->animationTransform();
+ field_0xb4->setAnimation((J2DAnmTransformKey*)NULL);
+
+ if (field_0xbc == 2859) {
+ field_0xd2 = 1;
+ } else {
+ field_0xd2 = 0;
+ }
+ field_0xd3 = 0;
+ return 1;
+ }
+}
+
+
+/* 801F60A4-801F6120 1F09E4 007C+00 5/5 0/0 0/0 .text modoruTxtDispAnmInit__12dMenu_save_cFUc */
+void dMenu_save_c::modoruTxtDispAnmInit(u8 param_0) {
+ field_0x1a8 = param_0;
+ if ((param_0 != 0 || mpBackTxt->getAlpha() != 0) &&
+ (param_0 != 1 || mpBackTxt->getAlpha() != 255)) {
+ mpBackTxt->alphaAnimeStart(0);
+ mpBBtnIcon->alphaAnimeStart(0);
+ return;
+ }
+
+ mpBackTxt->alphaAnimeStart(g_msHIO.mCharSwitchFrames);
+ mpBBtnIcon->alphaAnimeStart(g_msHIO.mCharSwitchFrames);
+}
+
+/* 801F6120-801F61FC 1F0A60 00DC+00 5/5 0/0 0/0 .text modoruTxtDispAnm__12dMenu_save_cFv
+ */
+bool dMenu_save_c::modoruTxtDispAnm() {
+ bool txtAnmComplete;
+ bool btnAnmComplete;
+
+ if (field_0x1a8 != 0) {
+ txtAnmComplete = mpBackTxt->alphaAnime(g_msHIO.mCharSwitchFrames, 0, 255, 0);
+ btnAnmComplete = mpBBtnIcon->alphaAnime(g_msHIO.mCharSwitchFrames, 128, 255, 0);
+ } else {
+ txtAnmComplete = mpBackTxt->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 0, 0);
+ btnAnmComplete = mpBBtnIcon->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 128, 0);
+ }
+
+ if (txtAnmComplete == true && btnAnmComplete == true) {
+ return true;
+ }
+
+ return false;
+}
+
+/* 801F61FC-801F6278 1F0B3C 007C+00 9/9 0/0 0/0 .text ketteiTxtDispAnmInit__12dMenu_save_cFUc */
+void dMenu_save_c::ketteiTxtDispAnmInit(u8 param_0) {
+ field_0x1a9 = param_0;
+ if ((param_0 != 0 || mpConfirmTxt->getAlpha() != 0) &&
+ (param_0 != 1 || mpConfirmTxt->getAlpha() != 255)) {
+ mpConfirmTxt->alphaAnimeStart(0);
+ mpABtnIcon->alphaAnimeStart(0);
+ return;
+ }
+
+ mpConfirmTxt->alphaAnimeStart(g_msHIO.mCharSwitchFrames);
+ mpABtnIcon->alphaAnimeStart(g_msHIO.mCharSwitchFrames);
+}
+
+/* 801F6278-801F6354 1F0BB8 00DC+00 11/11 0/0 0/0 .text ketteiTxtDispAnm__12dMenu_save_cFv */
+bool dMenu_save_c::ketteiTxtDispAnm() {
+ bool txtAnmComplete;
+ bool btnAnmComplete;
+
+ if (field_0x1a9 != 0) {
+ txtAnmComplete = mpConfirmTxt->alphaAnime(g_msHIO.mCharSwitchFrames, 0, 255, 0);
+ btnAnmComplete = mpABtnIcon->alphaAnime(g_msHIO.mCharSwitchFrames, 128, 255, 0);
+ } else {
+ txtAnmComplete = mpConfirmTxt->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 0, 0);
+ btnAnmComplete = mpABtnIcon->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 128, 0);
+ }
+
+ if (txtAnmComplete == true && btnAnmComplete == true) {
+ return true;
+ }
+
+ return false;
+}
+
+/* 801F6354-801F6390 1F0C94 003C+00 2/2 0/0 0/0 .text
+ * selectWakuAlpahAnmInit__12dMenu_save_cFUcUcUcUc */
+void dMenu_save_c::selectWakuAlpahAnmInit(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
+ mpSelWakuMoyo[param_0]->alphaAnimeStart(0);
+ mpSelWakuGold[param_0]->alphaAnimeStart(0);
+ mpSelWakuGold2[param_0]->alphaAnimeStart(0);
+ field_0x104[param_0] = param_1;
+ field_0x107[param_0] = param_2;
+ field_0x10a[param_0] = param_3;
+}
+
+/* 801F6390-801F6458 1F0CD0 00C8+00 3/3 0/0 0/0 .text selectWakuAlpahAnm__12dMenu_save_cFUc */
+bool dMenu_save_c::selectWakuAlpahAnm(u8 param_0) {
+ bool anmComplete = false;
+ bool moyoAnmComplete = mpSelWakuMoyo[param_0]->alphaAnime(
+ field_0x10a[param_0], field_0x104[param_0], field_0x107[param_0], 0);
+ bool goldAnmComplete = mpSelWakuGold[param_0]->alphaAnime(
+ field_0x10a[param_0], field_0x104[param_0], field_0x107[param_0], 0);
+ bool gold2AnmComplete = mpSelWakuGold2[param_0]->alphaAnime(
+ field_0x10a[param_0], field_0x104[param_0], field_0x107[param_0], 0);
+
+ if (moyoAnmComplete == true && goldAnmComplete == true && gold2AnmComplete == true) {
+ anmComplete = true;
+ }
+
+ return anmComplete;
+}
+
+/* 801F6458-801F6608 1F0D98 01B0+00 3/3 0/0 0/0 .text selFileCursorShow__12dMenu_save_cFv
+ */
+void dMenu_save_c::selFileCursorShow() {
+ mpSelWakuMoyo[mSelectedFile]->getPanePtr()->scale(1.0f, 1.0f);
+ mpSelWakuGold[mSelectedFile]->getPanePtr()->scale(1.0f, 1.0f);
+ mpSelWakuGold2[mSelectedFile]->getPanePtr()->scale(1.0f, 1.0f);
+
+ mpSelWakuMoyo[mSelectedFile]->setAlpha(255);
+ mpSelWakuGold[mSelectedFile]->setAlpha(255);
+ mpSelWakuGold2[mSelectedFile]->setAlpha(255);
+
+ Vec pos = mpSelData[mSelectedFile]->getGlobalVtxCenter(false, 0);
+ mSelIcon->setPos(pos.x, pos.y, mpSelData[mSelectedFile]->getPanePtr(), true);
+ mSelIcon->setAlphaRate(0.0f);
+ mSelIcon->setParam(0.96f, 0.94f, 0.03f, 0.7f, 0.7f);
+}
+
+
+/* 801F6608-801F6654 1F0F48 004C+00 1/1 0/0 0/0 .text
+ * yesnoWakuAlpahAnmInit__12dMenu_save_cFUcUcUcUc */
+void dMenu_save_c::yesnoWakuAlpahAnmInit(u8 yesnoIdx, u8 startAlpha, u8 endAlpha, u8 anmTimer) {
+ if (yesnoIdx != 0xFF) {
+ mNoYesBase[yesnoIdx]->alphaAnimeStart(0);
+ mNoYesGold[yesnoIdx]->alphaAnimeStart(0);
+ mNoYesGold2[yesnoIdx]->alphaAnimeStart(0);
+ mNoYesWakuStartAlpha[yesnoIdx] = startAlpha;
+ mNoYesWakuEndAlpha[yesnoIdx] = endAlpha;
+ mNoYesWakuAnmTimer[yesnoIdx] = anmTimer;
+ mpNoYesTxt[yesnoIdx]->colorAnimeStart(0);
+ }
+}
+
+/* 801F6654-801F67B8 1F0F94 0164+00 4/4 0/0 0/0 .text yesnoWakuAlpahAnm__12dMenu_save_cFUc */
+bool dMenu_save_c::yesnoWakuAlpahAnm(u8 yesnoIdx) {
+ if (yesnoIdx == 0xFF) {
+ return true;
+ }
+
+ bool anmComplete = false;
+ bool baseAnmComplete = mNoYesBase[yesnoIdx]->alphaAnime(mNoYesWakuAnmTimer[yesnoIdx],
+ mNoYesWakuStartAlpha[yesnoIdx],
+ mNoYesWakuEndAlpha[yesnoIdx], 0);
+
+ bool goldAnmComplete = mNoYesGold[yesnoIdx]->alphaAnime(mNoYesWakuAnmTimer[yesnoIdx],
+ mNoYesWakuStartAlpha[yesnoIdx],
+ mNoYesWakuEndAlpha[yesnoIdx], 0);
+
+ bool gold2AnmComplete = mNoYesGold2[yesnoIdx]->alphaAnime(mNoYesWakuAnmTimer[yesnoIdx],
+ mNoYesWakuStartAlpha[yesnoIdx],
+ mNoYesWakuEndAlpha[yesnoIdx], 0);
+
+ bool txtAnmComplete = mpNoYesTxt[yesnoIdx]->colorAnime(
+ mNoYesWakuAnmTimer[yesnoIdx], mpNoYesTxt[yesnoIdx]->getInitBlack(),
+ mpNoYesTxt[yesnoIdx]->getInitBlack(), JUtility::TColor(255, 255, 255, 255),
+ JUtility::TColor(150, 150, 150, 255), 0);
+
+ if (baseAnmComplete == true && goldAnmComplete == true && gold2AnmComplete == true &&
+ txtAnmComplete == true) {
+ anmComplete = true;
+ }
+
+ return anmComplete;
+}
+
+/* 801F67B8-801F67F0 1F10F8 0038+00 2/2 0/0 0/0 .text dataSave__12dMenu_save_cFv */
+void dMenu_save_c::dataSave() {
+ g_mDoMemCd_control.save(mSaveBuffer, sizeof(mSaveBuffer), 0);
+}
+
+/* 801F67F0-801F6954 1F1130 0164+00 2/2 0/0 0/0 .text setSaveData__12dMenu_save_cFv */
+void dMenu_save_c::setSaveData() {
+ u8* save = mSaveBuffer;
+
+ for (int i = 0; i < 3; i++) {
+ BOOL checksumTest = mDoMemCdRWm_TestCheckSumGameData(save);
+
+ int saveStatus = mFileInfo[i]->setSaveData((dSv_save_c*)save, checksumTest, i);
+ if (saveStatus == -1) {
+ field_0x1ad[i] = 1;
+ field_0x1aa[i] = 0;
+ } else {
+ field_0x1aa[i] = saveStatus;
+ field_0x1ad[i] = 0;
+
+ if ((dComIfGs_getNewFile() & 1 || !(dComIfGs_getNewFile() & 0x80)) &&
+ field_0x1aa[i] == 2) {
+ field_0x1aa[i] = 1;
+ }
+ }
+
+ if (field_0x1ad[i] != 0 || field_0x1aa[i] == 1) {
+ mpDataBase[i]->setAlpha(0);
+ mpNoDataBase[i]->setAlpha(255);
+ } else {
+ mpDataBase[i]->setAlpha(255);
+ mpNoDataBase[i]->setAlpha(0);
+ }
+
+ if (field_0x1aa[i] == 2) {
+ field_0x1aa[i] = 1;
+ }
+
+ save += QUEST_LOG_SIZE;
+ }
+}
+
+/* 801F6954-801F69B8 1F1294 0064+00 1/1 0/0 0/0 .text setInitSaveData__12dMenu_save_cFv
+ */
+void dMenu_save_c::setInitSaveData() {
+ for (int i = 0; i < 3; i++) {
+ dComIfGs_setInitDataToCard(mSaveBuffer, i);
+ mDoMemCdRWm_SetCheckSumGameData(mSaveBuffer, i);
+ }
+}
+
+/* 801F69B8-801F69FC 1F12F8 0044+00 0/0 1/1 0/0 .text _draw__12dMenu_save_cFv */
+void dMenu_save_c::_draw() {
+ if (field_0x21a1 == 0 && mpScrnExplain != NULL) {
+ mpScrnExplain->draw((J2DOrthoGraph*)dComIfGp_getCurrentGrafPort());
+ }
+}
+
+/* 801F69FC-801F6ADC 1F133C 00E0+00 0/0 2/2 0/0 .text _draw2__12dMenu_save_cFv */
+void dMenu_save_c::_draw2() {
+ if (field_0x21a1 == 0) {
+ if (mpScrnExplain != NULL) {
+ dComIfGd_set2DOpa(&mMenuSaveExplain);
+ }
+
+ if (mDisplayMenu) {
+ dComIfGd_set2DOpa(&mSaveSel);
+
+ for (int i = 0; i < 3; i++) {
+ mFileInfo[i]->_draw();
+ }
+ dComIfGd_set2DOpa(mSelIcon);
+ }
+
+ if (mWarning != NULL) {
+ mWarning->_draw();
+ }
+ }
+}
+
+/* 801F6ADC-801F6B0C 1F141C 0030+00 1/0 0/0 0/0 .text draw__23dDlst_MenuSaveExplain_cFv
+ */
+void dDlst_MenuSaveExplain_c::draw() {
+ mpScrn->draw((J2DOrthoGraph*)dComIfGp_getCurrentGrafPort());
+}
+
+
+/* 801F6B0C-801F6B44 1F144C 0038+00 1/0 0/0 0/0 .text draw__16dDlst_MenuSave_cFv */
+void dDlst_MenuSave_c::draw() {
+ Scr->draw(0.0f, 0.0f, dComIfGp_getCurrentGrafPort());
+} \ No newline at end of file