From 03d27aa14389e648f51df2bc055ee3d53a3b67f2 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Tue, 18 Aug 2026 15:10:27 -0400 Subject: [PATCH] d_s_name equivalent except PAL --- configure.py | 2 +- .../SSystem/SComponent/c_API_controller_pad.h | 2 +- include/d/d_com_inf_game.h | 7 +- include/d/d_file_error.h | 3 + include/d/d_file_select.h | 51 ++- include/d/d_menu_save.h | 10 +- include/d/d_name.h | 2 + include/d/d_s_name.h | 37 +- include/d/d_save.h | 4 +- include/m_Do/m_Do_MemCard.h | 22 +- src/d/d_file_error.cpp | 4 +- src/d/d_file_select.cpp | 171 +++---- src/d/d_menu_save.cpp | 12 +- src/d/d_name.cpp | 4 +- src/d/d_s_name.cpp | 425 +++++++++++++++--- 15 files changed, 578 insertions(+), 178 deletions(-) diff --git a/configure.py b/configure.py index 99ee4bd1d..404b93b2d 100755 --- a/configure.py +++ b/configure.py @@ -661,7 +661,7 @@ config.libs = [ Object(NonMatching, "d/d_picture_box.cpp"), Object(Matching, "d/d_s_logo.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_s_menu.cpp"), - Object(NonMatching, "d/d_s_name.cpp"), + Object(EquivalentFor("D44J01", "GZLJ01", "GZLE01"), "d/d_s_name.cpp"), # stripped vtable padding Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_s_open.cpp"), Object(NonMatching, "d/d_s_open_sub.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_s_play.cpp"), diff --git a/include/SSystem/SComponent/c_API_controller_pad.h b/include/SSystem/SComponent/c_API_controller_pad.h index 812ccde38..10f56ad44 100644 --- a/include/SSystem/SComponent/c_API_controller_pad.h +++ b/include/SSystem/SComponent/c_API_controller_pad.h @@ -7,7 +7,7 @@ struct controller_pad_buttons { /* 0x00 (0x80 >> 7) */ bool left : 1; /* 0x00 (0x40 >> 6) */ bool right : 1; - /* 0x00 (0x10 >> 5) */ bool down : 1; + /* 0x00 (0x20 >> 5) */ bool down : 1; /* 0x00 (0x10 >> 4) */ bool up : 1; /* 0x00 (0x08 >> 3) */ bool z : 1; /* 0x00 (0x04 >> 2) */ bool r : 1; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index d19970697..5d9f3715b 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -1833,6 +1833,11 @@ inline void dComIfGs_initDan(s8 i_stageNo) { g_dComIfG_gameInfo.save.initDan(i_stageNo); } +// Name from TP +inline void dComIfGs_resetDan() { + g_dComIfG_gameInfo.save.resetDan(); +} + inline void dComIfGs_onActor(int i_no, int i_roomNo) { g_dComIfG_gameInfo.save.onActor(i_no, i_roomNo); } @@ -3091,7 +3096,7 @@ inline void dComIfGp_plusMiniGameRupee(s16 count) { inline s32 dComIfGp_getWindowNum() { return g_dComIfG_gameInfo.play.getWindowNum(); } inline void dComIfGp_setWindowNum(u8 num) { g_dComIfG_gameInfo.play.setWindowNum(num); } inline dDlst_window_c * dComIfGp_getWindow(int idx) { return g_dComIfG_gameInfo.play.getWindow(idx); } -inline void dComIfGp_setWindow(int idx, f32 x, f32 y, f32 w, f32 h, f32 n, f32 f, int cameraID, int mode) { +inline void dComIfGp_setWindow(u8 idx, f32 x, f32 y, f32 w, f32 h, f32 n, f32 f, int cameraID, int mode) { g_dComIfG_gameInfo.play.setWindow(idx, x, y, w, h, n, f, cameraID, mode); } inline J2DOrthoGraph* dComIfGp_getCurrentGrafPort() { return g_dComIfG_gameInfo.play.getCurrentGrafPort(); } diff --git a/include/d/d_file_error.h b/include/d/d_file_error.h index 32d93325f..02c92bd2a 100644 --- a/include/d/d_file_error.h +++ b/include/d/d_file_error.h @@ -78,6 +78,9 @@ public: void _create(); void initial(); void _delete(); +#if VERSION == VERSION_DEMO + void _deleteSp(); +#endif void setErrMessage(u32, int); void closeMessage(); void resizeMsgBoard(int); diff --git a/include/d/d_file_select.h b/include/d/d_file_select.h index ec4bd28d0..83939d1ec 100644 --- a/include/d/d_file_select.h +++ b/include/d/d_file_select.h @@ -83,8 +83,27 @@ public: /* 0x50 */ u8 field_0x50; /* 0x51 */ u8 field_0x51; /* 0x52 */ u8 field_0x52; - /* 0x54 */ float field_0x54; - /* 0x58 */ float field_0x58; + /* 0x54 */ f32 field_0x54; + /* 0x58 */ f32 field_0x58; +#if VERSION == VERSION_PAL + /* 0x5C */ u8 field_0x5c; + /* 0x5D */ u8 field_0x5d; + /* 0x5E */ u8 field_0x5e; + /* 0x5F */ u8 field_0x5f; + /* 0x60 */ s16 field_0x60; + /* 0x62 */ s16 field_0x62; + /* 0x64 */ s16 field_0x64; + /* 0x66 */ s16 field_0x66; + /* 0x68 */ s16 field_0x68; + /* 0x6A */ s16 field_0x6a; + /* 0x6C */ s16 field_0x6c; + /* 0x6E */ s16 field_0x6e; + /* 0x70 */ s16 field_0x70; + /* 0x72 */ s16 field_0x72; + /* 0x74 */ s16 field_0x74; + /* 0x76 */ s16 field_0x76; + /* 0x78 */ u8 field_0x78; +#endif }; class dDlst_FileSel_c : public dDlst_base_c { @@ -103,16 +122,18 @@ public: void setSavePicDataPtr(u8* dataPtr) { mSavePicDataPtr = dataPtr; } void setUseType(u8 useType) { mUseType = useType; } - void getErrType() {} - void getSelectNum() {} - void isDataExtra(u8) {} - void isDataNew(u8) {} - void isSelectEnd() {} + u8 getErrType() { return errType; } + u8 getSelectNum() { return selectNum; } + BOOL isDataExtra(u8 idx) { return dataExtra[idx]; } + BOOL isDataNew(u8 idx) { return dataNew[idx]; } + u8 isSelectEnd() { return selectEnd; } // ? dFile_select_c() {} void _create(); void initial(); +#if VERSION == VERSION_DEMO void _deleteSp(); +#endif void _delete(); void _move(); bool _open(); @@ -213,7 +234,8 @@ public: void ExErrorMsgPaneMove2(); public: - /* 0x0000 */ JKRMemArchive* field_0x0; + /* 0x0000 */ JKRMemArchive* archive; +private: /* 0x0004 */ dDlst_FileSel_c fileSel; /* 0x0010 */ fopMsgM_pane_class field_0x10; /* 0x0048 */ fopMsgM_pane_class field_0x48; @@ -270,6 +292,9 @@ public: /* 0x3730 */ fopMsgM_pane_class field_0x3730; /* 0x3768 */ fopMsgM_pane_class field_0x3768; /* 0x37A0 */ fopMsgM_pane_class field_0x37a0; +#if VERSION == VERSION_PAL + fopMsgM_pane_class pad[0xF]; // TODO +#endif /* 0x37D8 */ JUtility::TColor field_0x37d8[11]; /* 0x3804 */ JUtility::TColor field_0x3804[11]; /* 0x3830 */ JUtility::TColor field_0x3830[18]; @@ -284,13 +309,13 @@ public: /* 0x3900 */ char* field_0x3900[3]; /* 0x390C */ STControl* stick; /* 0x3910 */ STControl* stick2; - /* 0x3914 */ u8 field_0x3914[3]; + /* 0x3914 */ u8 dataNew[3]; /* 0x3917 */ u8 field_0x3917[3]; - /* 0x391A */ u8 saveStatus[3]; + /* 0x391A */ u8 dataExtra[3]; /* 0x391D */ u8 field_0x391D[3]; /* 0x3920 */ u8 field_0x3920; /* 0x3921 */ u8 field_0x3921; - /* 0x3922 */ u8 saveSlot; + /* 0x3922 */ u8 selectNum; /* 0x3923 */ s8 field_0x3923; /* 0x3924 */ u8 field_0x3924; /* 0x3925 */ u8 field_0x3925; @@ -300,10 +325,10 @@ public: /* 0x3929 */ u8 field_0x3929; /* 0x392A */ u8 field_0x392a; /* 0x392B */ u8 field_0x392b; - /* 0x392C */ u8 field_0x392c; + /* 0x392C */ u8 selectEnd; /* 0x392D */ u8 field_0x392d; /* 0x392E */ u8 field_0x392e; - /* 0x392F */ u8 field_0x392f; + /* 0x392F */ u8 errType; /* 0x3930 */ s16 field_0x3930; /* 0x3932 */ s16 field_0x3932; /* 0x3934 */ u8 field_0x3934[0x3936 - 0x3934]; diff --git a/include/d/d_menu_save.h b/include/d/d_menu_save.h index 686eea1a4..f7d09364b 100644 --- a/include/d/d_menu_save.h +++ b/include/d/d_menu_save.h @@ -68,8 +68,8 @@ public: u8* getDataBufPtr() { return dataBuf; } u8 getEndStatus() { return endStatus; } u8 getSaveStatus() { return saveStatus; } - void setErrorFlag(u8) {} - void setErrorType(u8) {} + void setErrorFlag(u8 i_errorFlag) { errorFlag = i_errorFlag; } + void setErrorType(u8 i_errorType) { errorType = i_errorType; } void setUseType(u8 i_useType) { useType = i_useType; } virtual ~dMenu_save_c() {} @@ -156,7 +156,7 @@ public: BOOL PaneRotate(s16, u8, fopMsgM_pane_class*, f32, f32, f32, u8); BOOL PaneTranceMenu(s16, u8, fopMsgM_pane_class*, f32, f32, u8, int); -public: +private: /* 0x0004 */ JKRArchive* archive; /* 0x0008 */ dDlst_MenuSave_c MenuSave; /* 0x0014 */ fopMsgM_pane_class field_0x14[8]; @@ -193,8 +193,8 @@ public: /* 0x0539 */ u8 field_0x539; /* 0x053A */ u8 field_0x53a; /* 0x053B */ u8 field_0x53b; - /* 0x053C */ u8 field_0x53c; - /* 0x053D */ u8 field_0x53d; + /* 0x053C */ u8 errorFlag; + /* 0x053D */ u8 errorType; /* 0x0540 */ int field_0x540; /* 0x0544 */ s16 field_0x544; /* 0x0546 */ u8 field_0x546[0x0554 - 0x0546]; diff --git a/include/d/d_name.h b/include/d/d_name.h index 853584043..438ad8ae0 100644 --- a/include/d/d_name.h +++ b/include/d/d_name.h @@ -159,7 +159,9 @@ public: void displayInit(); void NameStrSet(); +#if VERSION == VERSION_DEMO void _deleteSp(); +#endif #if VERSION <= VERSION_JPN BOOL checkDakuon(int, u8); diff --git a/include/d/d_s_name.h b/include/d/d_s_name.h index 66c4159e7..53e578163 100644 --- a/include/d/d_s_name.h +++ b/include/d/d_s_name.h @@ -16,6 +16,7 @@ class dMenu_save_c; class dMCloth_c; class dName_c; class mDoDvdThd_toMainRam_c; +class mDoDvdThd_mountXArchive_c; class dScnName_camera_c : public camera_class { public: @@ -26,7 +27,7 @@ public: dSn_HIO_c(); virtual ~dSn_HIO_c() {} - void genMessage(JORMContext* ctx); + void genMessage(JORMContext* ctx) { UNUSED(ctx); } public: /* 0x04 */ s8 mNo; @@ -74,10 +75,22 @@ class dScnName_c : public scene_class { public: ~dScnName_c(); cPhs_State create(); +#if VERSION == VERSION_PAL + void bmg_data_read_all(); + void bmg_data_set(); + void tex_data_set(); +#endif void cloth_create(); void cloth_move(); void cloth2D_create(); void buttonIconCreate(); +#if VERSION == VERSION_PAL + void buttonIconTexChange(u8, u8); + void PaneAlphaLangTxt(s16, u8); + void languageTexChange(); + void langTexChg(); + void langTexChgFast(); +#endif BOOL paneTransButtonIcon(s16, u8, f32, f32, u8); BOOL execute(); void setView(); @@ -128,9 +141,21 @@ public: void NoneDraw(); void changeGameScene(); +#if VERSION == VERSION_PAL + /* 0x01C4 */ mDoDvdThd_mountXArchive_c* field_0x1c4; + /* 0x01C8 */ mDoDvdThd_mountXArchive_c* field_0x1c8; + /* 0x01CC */ mDoDvdThd_mountXArchive_c* field_0x1cc; + /* 0x01D0 */ mDoDvdThd_mountXArchive_c* field_0x1d0; + /* 0x01D4 */ mDoDvdThd_mountXArchive_c* field_0x1d4; + u8 pad[0x14]; +#endif /* 0x01C4 */ request_of_phase_process_class mPhs; - /* 0x01CC */ JKRHeap* heap; +#if VERSION == VERSION_DEMO + /* 0x01CC */ JKRSolidHeap* heap; +#else + /* 0x01CC */ JKRExpHeap* heap; /* 0x01D0 */ JKRHeap* oldHeap; +#endif /* 0x01D4 */ dScnName_camera_c mCamera; /* 0x040C */ JKRMemArchive* mArchive; /* 0x0410 */ mDoDvdThd_toMainRam_c* field_0x410; @@ -146,9 +171,13 @@ public: /* 0x04AC */ fopMsgM_pane_class field_0x4ac; /* 0x04E4 */ fopMsgM_pane_class field_0x4e4; /* 0x051C */ fopMsgM_pane_class field_0x51c; +#if VERSION == VERSION_PAL + /* 0x0554 */ fopMsgM_pane_class field_0x554; + /* 0x058C */ fopMsgM_pane_class field_0x58C; +#endif /* 0x0554 */ u8 mMainProc; - /* 0x0555 */ u8 field_0x555; - /* 0x0556 */ u8 field_0x556; + /* 0x0555 */ u8 mOpenProc; + /* 0x0556 */ u8 mMemCardCheckProc; /* 0x0557 */ u8 mDrawProc; /* 0x0558 */ u8 field_0x558; /* 0x0559 */ u8 field_0x559; diff --git a/include/d/d_save.h b/include/d/d_save.h index ab0a3a3db..f9265cef0 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -736,6 +736,7 @@ public: BOOL isSwitch(int); BOOL revSwitch(int); + void reset() { mStageNo = -1; } // Name from TP u8 getGbaRupeeCount() { return mGbaRupeeCount; } void incGbaRupeeCount() { mGbaRupeeCount++; } @@ -949,13 +950,14 @@ public: void removeZone(int zoneNo) { mZone[zoneNo].reset(); } void initDan(s8 i_stage) { mDan.init(i_stage); } + void resetDan() { mDan.reset(); } // Name from TP u8 getDataNum() { return mDataNum; } void setDataNum(u8 num) { mDataNum = num; } u8 getNoFile() { return mNoFile; } void setNoFile(u8 no) { mNoFile = no; } u8 getNewFile() { return mNewFile; } - void setNewFile(u8 file) {mNewFile = file; } + void setNewFile(u8 file) { mNewFile = file; } u64 getMemCardCheckID() { return mMemCardCheckID; } void setMemCardCheckID(u64 id) { mMemCardCheckID = id; } diff --git a/include/m_Do/m_Do_MemCard.h b/include/m_Do/m_Do_MemCard.h index 938e28396..e864d6e83 100644 --- a/include/m_Do/m_Do_MemCard.h +++ b/include/m_Do/m_Do_MemCard.h @@ -20,16 +20,16 @@ public: }; enum CardStatus { - CARD_STAT_WAIT, - CARD_STAT_RESTORE, - CARD_STAT_CREATE, - CARD_STAT_FORMAT, - CARD_STAT_READY, - CARD_STAT_DETACH, - CARD_STAT_ENCODING, - CARD_STAT_ERROR, - CARD_STAT_WRONG_DEVICE = 10, - CARD_STAT_IOERROR = 12, + /* 0x0 */ CARD_STAT_WAIT, + /* 0x1 */ CARD_STAT_RESTORE, + /* 0x2 */ CARD_STAT_CREATE, + /* 0x3 */ CARD_STAT_FORMAT, + /* 0x4 */ CARD_STAT_READY, + /* 0x5 */ CARD_STAT_DETACH, + /* 0x6 */ CARD_STAT_ENCODING, + /* 0x7 */ CARD_STAT_ERROR, + /* 0xA */ CARD_STAT_WRONG_DEVICE = 10, + /* 0xC */ CARD_STAT_IOERROR = 12, }; mDoMemCd_Ctrl_c(); @@ -81,7 +81,9 @@ public: /* 0x1658 */ u8 mCardSlot; /* 0x1659 */ u8 mCopyToPos; /* 0x165A */ u8 mProbeStat; +#if VERSION == VERSION_PAL /* 0x165B */ u8 field_0x165B; +#endif /* 0x165C */ s32 mCommand; /* 0x1660 */ s32 field_0x1660; /* 0x1664 */ OSMutex mMutex; diff --git a/src/d/d_file_error.cpp b/src/d/d_file_error.cpp index e100415b6..a8c50d1c3 100644 --- a/src/d/d_file_error.cpp +++ b/src/d/d_file_error.cpp @@ -79,14 +79,14 @@ MyScreen::~MyScreen() { } /* 8017DF04-8017E010 .text setErrMessage__13dFile_error_cFUli */ -void dFile_error_c::setErrMessage(u32 stringId, int param_2) { +void dFile_error_c::setErrMessage(u32 msgNo, int param_2) { m2fa = (u8) param_2; char message_buffer[512]; initial(); - fopMsgM_messageGet(message_buffer, stringId); + fopMsgM_messageGet(message_buffer, msgNo); int line_count = getLineCount(message_buffer); if (line_count + 2 < VERSION_SELECT(9, 9, 12, 12)) { resizeMsgBoard(line_count + 2); diff --git a/src/d/d_file_select.cpp b/src/d/d_file_select.cpp index c81c4818c..3279e8c9e 100644 --- a/src/d/d_file_select.cpp +++ b/src/d/d_file_select.cpp @@ -86,6 +86,25 @@ dFs_HIO_c::dFs_HIO_c() { field_0x4C = 0x64; field_0x54 = 1.25f; field_0x58 = 12.0f; +#if VERSION == VERSION_PAL + field_0x5c = 7; + field_0x5d = 0xA0; + field_0x5e = 0x50; + field_0x5f = 0xE; + field_0x60 = 0; + field_0x62 = 1; + field_0x64 = 1; + field_0x66 = 0; + field_0x68 = 0; + field_0x6a = 0; + field_0x6c = 0; + field_0x6e = -1; + field_0x70 = -1; + field_0x72 = 0; + field_0x74 = 0; + field_0x76 = 0; + field_0x78 = 0xA; +#endif } /* 8017FA20-8017FCC0 .text _create__14dFile_select_cFv */ @@ -96,7 +115,7 @@ void dFile_select_c::_create() { JUT_ASSERT(VERSION_SELECT(302, 302, 361, 361), stick != NULL); stick2 = new STControl(3, 1, 3, 2); JUT_ASSERT(VERSION_SELECT(305, 305, 364, 364), stick2 != NULL); - fileSel.Scr->set("file_select.blo", (JKRArchive*)field_0x0); + fileSel.Scr->set("file_select.blo", archive); fileSel.font = mDoExt_getMesgFont(); JUT_ASSERT(VERSION_SELECT(311, 311, 370, 370), fileSel.font != NULL); g_fsHIO.mNo = mDoHIO_createChild("ファイルセレクト画面", &g_fsHIO); @@ -104,13 +123,13 @@ void dFile_select_c::_create() { mSavePicDataPtr = NULL; for(int i = 0; i < 3; i++) { - field_0x3914[i] = 0; + dataNew[i] = 0; field_0x3917[i] = 0; - saveStatus[i] = 0; + dataExtra[i] = 0; field_0x391D[i] = 0; } - saveSlot = 0; + selectNum = 0; screenSet(); displayInit(); paneTransInit(); @@ -122,9 +141,11 @@ void dFile_select_c::initial() { paneTransInit(); } +#if VERSION == VERSION_DEMO void dFile_select_c::_deleteSp() { mDoHIO_deleteChild(g_fsHIO.mNo); } +#endif /* 8017FCF4-8017FD6C .text _delete__14dFile_select_cFv */ void dFile_select_c::_delete() { @@ -184,14 +205,14 @@ void dFile_select_c::_move() { (this->*DataSelProc[field_0x392b])(); #else #if VERSION <= VERSION_JPN - if(g_mDoMemCd_control.mProbeStat == 1 && field_0x3941 == 0) + if(mDoMemCd_getProbeStat() == 1 && field_0x3941 == 0) #else - if((g_mDoMemCd_control.mProbeStat == 0 || g_mDoMemCd_control.mProbeStat == 1) && field_0x3941 == 0) + if((mDoMemCd_getProbeStat() == 0 || mDoMemCd_getProbeStat() == 1) && field_0x3941 == 0) #endif { field_0x392e = 1; field_0x3930 = 0; - field_0x392c = 2; + selectEnd = 2; mIconMode = 3; field_0x392a = 7; field_0x392b = 0x26; @@ -200,7 +221,7 @@ void dFile_select_c::_move() { (this->*DataSelProc[field_0x392b])(); } - g_mDoMemCd_control.mProbeStat = 2; + mDoMemCd_clearProbeStat(); #endif } @@ -247,7 +268,7 @@ bool dFile_select_c::_close() { #endif } else { - if(field_0x392c == 3) { + if(selectEnd == 3) { result = closeBack(); } else { @@ -264,7 +285,7 @@ bool dFile_select_c::_close() { int dFile_select_c::closeEnd() { int temp1 = PaneTranceTitle(field_0x3930, g_fsHIO.field_0x08, 0.0f, g_fsHIO.field_0x48, 0, 1); int temp2, temp3; - switch(saveSlot) { + switch(selectNum) { case 0: temp2 = PaneTranceRecTlt1(field_0x3930, g_fsHIO.field_0x0C, 0.0f, 0.0f, -(float)g_fsHIO.field_0x40, 0.0f, 0, 1); temp3 = PaneTranceRecInfo1(field_0x3930, g_fsHIO.field_0x11, 0.0f, 0.0f, -(float)g_fsHIO.field_0x40, 0.0f, 0, 1); @@ -293,7 +314,7 @@ int dFile_select_c::closeEnd() { int dFile_select_c::closeCardErr() { int temp1 = PaneTranceTitle(field_0x3930, g_fsHIO.field_0x08, 0.0f, g_fsHIO.field_0x48, 0, 1); int temp2, temp3; - switch(saveSlot) { + switch(selectNum) { case 0: temp2 = PaneTranceRecTlt1(field_0x3930, g_fsHIO.field_0x0C, 0.0f, 0.0f, -(float)g_fsHIO.field_0x40, 0.0f, 0, 1); temp3 = PaneTranceRecInfo1(field_0x3930, g_fsHIO.field_0x11, 0.0f, 0.0f, -(float)g_fsHIO.field_0x40, 0.0f, 0, 1); @@ -340,7 +361,7 @@ int dFile_select_c::closeErrErase() { int temp1 = PaneTranceTitle(field_0x3930, g_fsHIO.field_0x08, 0.0f, g_fsHIO.field_0x48, 0, 1); int temp4 = MessagePaneMove(0.0f, 0.0f, g_fsHIO.field_0x44, 0.0f, g_fsHIO.field_0x31, 0, 1); int temp2, temp3; - switch(saveSlot) { + switch(selectNum) { case 0: temp2 = PaneTranceRecTlt1(field_0x3930, g_fsHIO.field_0x0C, 0.0f, 0.0f, -(float)g_fsHIO.field_0x40, 0.0f, 0, 1); temp3 = PaneTranceRecInfo1(field_0x3930, g_fsHIO.field_0x11, 0.0f, 0.0f, -(float)g_fsHIO.field_0x40, 0.0f, 0, 1); @@ -426,7 +447,7 @@ void dFile_select_c::dataSelect() { mDoAud_seStart(JA_SE_MSEL_OK_1); mIconMode = 4; field_0x2fc0[0].pane->hide(); - if(field_0x3917[saveSlot]) { + if(field_0x3917[selectNum]) { fopMsgM_messageGet(field_0x38e8[field_0x392d ^ 1], 0x1C); } menuColorChange(); @@ -434,9 +455,9 @@ void dFile_select_c::dataSelect() { field_0x392b = 0x2; } else if(stick2->checkUpTrigger()) { - if(saveSlot != 0) { + if(selectNum != 0) { mDoAud_seStart(JA_SE_MSEL_CURSOR); - saveSlot--; + selectNum--; field_0x3948 = 0.0f; field_0x3923 = 0xFF; field_0x3930 = 0; @@ -445,9 +466,9 @@ void dFile_select_c::dataSelect() { } } else if(stick2->checkDownTrigger()) { - if(saveSlot != 2) { + if(selectNum != 2) { mDoAud_seStart(JA_SE_MSEL_CURSOR); - saveSlot++; + selectNum++; field_0x3948 = 0.0f; field_0x3923 = 0x1; field_0x3930 = 0; @@ -462,7 +483,7 @@ void dFile_select_c::dataSelect() { /* 80181810-80181B7C .text menuColorChange__14dFile_select_cFv */ void dFile_select_c::menuColorChange() { #if VERSION > VERSION_DEMO - if(field_0x3914[saveSlot]) + if(dataNew[selectNum]) #endif { ((J2DPicture*)field_0x3618.pane)->setBlackWhite(JUtility::TColor(0x5A, 0x5A, 0x5A, field_0x38c0[0].a), JUtility::TColor(0xC8, 0xC8, 0xC8, field_0x38c8[0].a)); @@ -485,7 +506,7 @@ void dFile_select_c::SelectTitAnime() { float temp1 = fopMsgM_valueIncrease(g_fsHIO.field_0x4F, field_0x3930, 5); field_0x3948 = g_fsHIO.field_0x4E * temp1 * field_0x3923; - switch(saveSlot) { + switch(selectNum) { case 0: fopMsgM_paneTrans(field_0x1238, 0.0f, field_0x3948); if(field_0x10e8[0].pane->isVisible()) { @@ -512,7 +533,7 @@ void dFile_select_c::SelectTitAnime() { break; } - fopMsgM_paneTrans(field_0x2fc0, 0.0f, saveSlot * 85.0f + field_0x3948); + fopMsgM_paneTrans(field_0x2fc0, 0.0f, selectNum * 85.0f + field_0x3948); field_0x3930++; if(field_0x3930 > g_fsHIO.field_0x4F) { field_0x3930 = 0; @@ -527,7 +548,7 @@ void dFile_select_c::SelectTitAnime() { /* 80181D7C-80181DCC .text recCursorMove__14dFile_select_cFv */ void dFile_select_c::recCursorMove() { - fopMsgM_paneTrans(field_0x2fc0, 0.0f, saveSlot * 85.0f); + fopMsgM_paneTrans(field_0x2fc0, 0.0f, selectNum * 85.0f); } /* 80181DCC-80181E9C .text recCursorAnime__14dFile_select_cFv */ @@ -561,7 +582,7 @@ void dFile_select_c::recCursorAlphaInit() { /* 80181ED0-80182490 .text recDataPaneMove__14dFile_select_cFv */ int dFile_select_c::recDataPaneMove() { int temp1, temp2, temp3, temp4, temp5, temp6; - switch(saveSlot) { + switch(selectNum) { case 0: temp1 = PaneTranceRecTlt2(field_0x3930 - g_fsHIO.field_0x29, g_fsHIO.field_0x28, 0.0f, 0.0f, g_fsHIO.field_0x40, 0.0f, 0, 1); temp2 = PaneTranceRecInfo2(field_0x3930 - g_fsHIO.field_0x29, g_fsHIO.field_0x28, 0.0f, 0.0f, g_fsHIO.field_0x40, 0.0f, 0, 1); @@ -604,16 +625,16 @@ int dFile_select_c::recDataPaneMove() { /* 80182490-801824DC .text dataSelMoveSet__14dFile_select_cFv */ void dFile_select_c::dataSelMoveSet() { field_0x3930 = 0; - if(field_0x3917[saveSlot]) { + if(field_0x3917[selectNum]) { fopMsgM_messageGet(field_0x38e8[2], 0x23); } else { - makeRecInfo(saveSlot); + makeRecInfo(selectNum); } } /* 801824DC-801827A0 .text makeRecInfo__14dFile_select_cFUc */ -void dFile_select_c::makeRecInfo(u8 param_1) { +void dFile_select_c::makeRecInfo(u8 i_dataNo) { static const char* amariheartTex[] = { "heart_03.bti", "heart_02.bti", @@ -622,7 +643,7 @@ void dFile_select_c::makeRecInfo(u8 param_1) { int i; - u8* saveData = &mSaveDataPtr[param_1 * sizeof(card_gamedata)]; + u8* saveData = &mSaveDataPtr[i_dataNo * sizeof(card_gamedata)]; u16 curHealth = *(u16*)(saveData + 2); @@ -718,7 +739,7 @@ void dFile_select_c::dataSelectPaneMove() { temp4 = 1; temp1 = recDataPaneMove(); temp5 = 0; - if(field_0x3917[saveSlot]) { + if(field_0x3917[selectNum]) { temp2 = MessagePaneMove(g_fsHIO.field_0x44, 0.0f, 0.0f, 0.0f, g_fsHIO.field_0x30 + field_0x3920, 1, 0); temp3 = yesNoPaneMove(g_fsHIO.field_0x42, 0.0f, g_fsHIO.field_0x38 + field_0x3920, 1, 0); temp4 = PaneAlphaTitleTxt(field_0x3930 - g_fsHIO.field_0x29, g_fsHIO.field_0x09); @@ -738,7 +759,7 @@ void dFile_select_c::dataSelectPaneMove() { menuCursorAlphaInit(); field_0x30d8.pane->show(); - if(field_0x3917[saveSlot]) { + if(field_0x3917[selectNum]) { field_0x3928 = 1; yesNoCursorMove(); field_0x3930 = 0; @@ -770,11 +791,11 @@ void dFile_select_c::menuSelect() { stick->checkTrigger(); if(CPad_CHECK_TRIG_A(0)) { if(field_0x3928 == 0) { - if(field_0x3914[saveSlot]) { + if(dataNew[selectNum]) { mDoAud_seStart(JA_SE_MSEL_OK_1); } - else if(saveStatus[saveSlot]) { - if(field_0x391D[saveSlot]) { + else if(dataExtra[selectNum]) { + if(field_0x391D[selectNum]) { mDoAud_seStart(JA_SE_MSEL_OK_1); } else { @@ -786,15 +807,15 @@ void dFile_select_c::menuSelect() { } field_0x3930 = 0; field_0x30d8.pane->hide(); - field_0x392c = 1; - g_dComIfG_gameInfo.save.setDataNum(saveSlot); + selectEnd = 1; + g_dComIfG_gameInfo.save.setDataNum(selectNum); field_0x392b = 0x26; } else if(field_0x3928 == 1) { mDoAud_seStart(JA_SE_MSEL_OK_1); field_0x3930 = 0; field_0x30d8.pane->hide(); - field_0x3924 = saveSlot; + field_0x3924 = selectNum; saveCopyBWColor(); field_0x3944 = 85.0f; fopMsgM_messageGet(field_0x38e8[field_0x392d ^ 1], 0x1F); @@ -834,7 +855,7 @@ void dFile_select_c::menuSelect() { field_0x3928++; if( #if VERSION > VERSION_DEMO - field_0x3914[saveSlot] && + dataNew[selectNum] && #endif (field_0x3928 == 1 || field_0x3928 == 2) ) { @@ -851,7 +872,7 @@ void dFile_select_c::menuSelect() { field_0x3928--; if( #if VERSION > VERSION_DEMO - field_0x3914[saveSlot] && + dataNew[selectNum] && #endif (field_0x3928 == 1 || field_0x3928 == 2) ) { @@ -1724,7 +1745,7 @@ void dFile_select_c::yesNoCursorMove() { void dFile_select_c::CmdExecPaneMove0() { u8 temp; if(field_0x392a == 4) { - temp = saveSlot; + temp = selectNum; } else if(field_0x392a == 3) { temp = field_0x3926; @@ -1786,8 +1807,8 @@ void dFile_select_c::CmdExecPaneMove2() { /* 80187ADC-80187BF8 .text CommandExec__14dFile_select_cFv */ void dFile_select_c::CommandExec() { if(field_0x392a == 4) { - dComIfGs_setInitDataToCard(mSaveDataPtr, saveSlot); - mDoMemCdRWm_SetCheckSumGameData(mSaveDataPtr, saveSlot); + dComIfGs_setInitDataToCard(mSaveDataPtr, selectNum); + mDoMemCdRWm_SetCheckSumGameData(mSaveDataPtr, selectNum); mDoMemCd_setPictWriteDataPtr(mSavePicDataPtr); mDoMemCd_setCopyToPos(0xFF); mDoMemCd_Save(mSaveDataPtr, 0x1650, 0); @@ -1865,7 +1886,7 @@ void dFile_select_c::DataCopyWait() { /* 80187DF0-80187FCC .text ErasePaneMoveOk__14dFile_select_cFv */ void dFile_select_c::ErasePaneMoveOk() { int temp1; - switch(saveSlot) { + switch(selectNum) { case 0: temp1 = PaneTranceRecInfo1(field_0x3930 - g_fsHIO.field_0x3A, g_fsHIO.field_0x11, 0.0f, 0.0f, 0.0f, g_fsHIO.field_0x3E, g_fsHIO.field_0x07, 1); @@ -1893,7 +1914,7 @@ void dFile_select_c::ErasePaneMoveOk() { /* 80187FCC-801881A8 .text ErasePaneMoveOk2__14dFile_select_cFv */ void dFile_select_c::ErasePaneMoveOk2() { int temp1; - switch(saveSlot) { + switch(selectNum) { case 0: temp1 = PaneTranceRecInfo1(field_0x3930 - g_fsHIO.field_0x3B, g_fsHIO.field_0x11, g_fsHIO.field_0x3C, 0.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 0); @@ -1924,15 +1945,15 @@ void dFile_select_c::ErrorMsgPaneMove() { if(temp1 == 1 && temp2 == 1) { field_0x392d ^= 1; - int id; + int msgNo; if(field_0x392a == 4) { - id = 0x26; + msgNo = 0x26; } else if(field_0x392a == 3) { - id = 0x27; + msgNo = 0x27; } - fopMsgM_messageGet(field_0x38e8[2], id); + fopMsgM_messageGet(field_0x38e8[2], msgNo); MessagePaneMoveSet(g_fsHIO.field_0x44, field_0x3944, 0.0f, field_0x3944, 1, 0); field_0x3930 = 0; field_0x392b = 0x16; @@ -2009,7 +2030,7 @@ void dFile_select_c::backDatSelWait2() { if(CPad_CHECK_TRIG_A(0) || CPad_CHECK_TRIG_B(0) || CPad_CHECK_TRIG_X(0) || CPad_CHECK_TRIG_Y(0) || CPad_CHECK_TRIG_L(0) || CPad_CHECK_TRIG_R(0) || CPad_CHECK_TRIG_Z(0) || CPad_CHECK_TRIG_START(0) || field_0x3932 == 0) { field_0x392e = 1; field_0x3930 = 0; - field_0x392c = 2; + selectEnd = 2; mIconMode = 3; field_0x392b = 0x26; } @@ -2018,7 +2039,7 @@ void dFile_select_c::backDatSelWait2() { /* 80188704-80188C70 .text DataSelectPaneBackMove__14dFile_select_cFsss */ int dFile_select_c::DataSelectPaneBackMove(s16 param_1, s16 param_2, s16 param_3) { int temp1, temp2, temp3, temp4, temp5, temp6; - switch(saveSlot) { + switch(selectNum) { case 0: temp1 = 1; temp2 = 1; @@ -3027,7 +3048,7 @@ void dFile_select_c::displayInit() { #endif mIconMode = 6; field_0x392d = 0; - field_0x392c = 0; + selectEnd = 0; field_0x392e = 0; field_0x38e8[2][0] = 0; field_0x3932 = g_fsHIO.field_0x4A; @@ -3079,11 +3100,11 @@ void dFile_select_c::setSaveData() { fopMsgM_paneTrans(pane[i], 0.0f, 0.0f); if(mDoMemCdRWm_TestCheckSumGameData(data)) { if(data[0x19B]) { - saveStatus[i] = 1; + dataExtra[i] = 1; field_0x391D[i] = ((data[0x64D] / 16) & 1) ^ 1; } else { - saveStatus[i] = 0; + dataExtra[i] = 0; field_0x391D[i] = 0; } @@ -3110,7 +3131,7 @@ void dFile_select_c::setSaveData() { strcpy(field_0x3900[i], ""); - field_0x3914[i] = 1; + dataNew[i] = 1; } else { strcpy(field_0x38f4[i], (char*)(&data[0x157])); @@ -3127,7 +3148,7 @@ void dFile_select_c::setSaveData() { #endif time.hours, time.minutes, time.seconds ); - field_0x3914[i] = 0; + dataNew[i] = 0; } field_0x3917[i] = 0; @@ -3157,7 +3178,7 @@ void dFile_select_c::setSaveData() { #endif strcpy(field_0x3900[i], ""); field_0x3917[i] = 1; - field_0x3914[i] = 0; + dataNew[i] = 0; } data += 0x770; @@ -3192,11 +3213,11 @@ void dFile_select_c::setSaveData() { fopMsgM_paneTrans(pane, 0.0f, 0.0f); if(mDoMemCdRWm_TestCheckSumGameData(data)) { if(data[0x19B]) { - saveStatus[i] = 1; + dataExtra[i] = 1; field_0x391D[i] = ((data[0x64D] / 16) & 1) ^ 1; } else { - saveStatus[i] = 0; + dataExtra[i] = 0; field_0x391D[i] = 0; } @@ -3223,7 +3244,7 @@ void dFile_select_c::setSaveData() { strcpy(field_0x3900[i], ""); - field_0x3914[i] = 1; + dataNew[i] = 1; } else { strcpy(field_0x38f4[i], (char*)(&data[0x157])); @@ -3240,7 +3261,7 @@ void dFile_select_c::setSaveData() { #endif time.hours, time.minutes, time.seconds ); - field_0x3914[i] = 0; + dataNew[i] = 0; } field_0x3917[i] = 0; @@ -3270,7 +3291,7 @@ void dFile_select_c::setSaveData() { #endif strcpy(field_0x3900[i], ""); field_0x3917[i] = 1; - field_0x3914[i] = 0; + dataNew[i] = 0; } data += 0x770; @@ -3296,7 +3317,7 @@ void dFile_select_c::changeExtraColor(int param_1) { field_0x11c8, }; - if(saveStatus[param_1] == 1) { + if(dataExtra[param_1] == 1) { for(int i = 2; i < 7; i++) { ((J2DPicture*)pane0[param_1][i].pane)->setBlackWhite(JUtility::TColor(0x6E, 0x50, 0, 0), JUtility::TColor(0x96, 0x78, 0, 0xFF)); ((J2DPicture*)pane0[param_1][i + 5].pane)->setBlackWhite(JUtility::TColor(0xDC, 0xA0, 0, 0), JUtility::TColor(0xFF, 0xB4, 0x0F, 0xFF)); @@ -3354,7 +3375,7 @@ void dFile_select_c::changeExtraColor(int param_1) { ((J2DPicture*)pane0[1].pane)->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0xDC, 0xFF, 0x64, 0xFF)); - if(saveStatus[param_1] == 1) { + if(dataExtra[param_1] == 1) { for(int i = 2; i < 7; i++) { ((J2DPicture*)pane0[i].pane)->setBlackWhite(JUtility::TColor(0x6E, 0x50, 0, 0), JUtility::TColor(0x96, 0x78, 0, 0xFF)); ((J2DPicture*)pane0[i + 5].pane)->setBlackWhite(JUtility::TColor(0xDC, 0xA0, 0, 0), JUtility::TColor(0xFF, 0xB4, 0x0F, 0xFF)); @@ -3490,14 +3511,14 @@ void dFile_select_c::dataSelectEx() { field_0x2fc0[0].pane->hide(); field_0x3930 = 0; field_0x392e = 0; - field_0x392c = 3; + selectEnd = 3; mIconMode = 3; field_0x392b = 0x26; } else if(stick2->checkUpTrigger()) { - if(saveSlot != 0) { + if(selectNum != 0) { mDoAud_seStart(JA_SE_MSEL_CURSOR); - saveSlot--; + selectNum--; field_0x3948 = 0.0f; field_0x3923 = 0xFF; field_0x3930 = 0; @@ -3506,9 +3527,9 @@ void dFile_select_c::dataSelectEx() { } } else if(stick2->checkDownTrigger()) { - if(saveSlot != 2) { + if(selectNum != 2) { mDoAud_seStart(JA_SE_MSEL_CURSOR); - saveSlot++; + selectNum++; field_0x3948 = 0.0f; field_0x3923 = 0x1; field_0x3930 = 0; @@ -3524,7 +3545,7 @@ void dFile_select_c::dataSelectEx() { void dFile_select_c::ExSavePaneMove() { int temp1 = recDataPaneMove(); int temp2; - if(field_0x3917[saveSlot]) { + if(field_0x3917[selectNum]) { temp2 = MessagePaneMove(g_fsHIO.field_0x44, 0.0f, 0.0f, 0.0f, g_fsHIO.field_0x30 + field_0x3920, 1, 0); } else { @@ -3554,9 +3575,9 @@ void dFile_select_c::YesNoSelectEx() { int result = ExCardCheck(); if(result) { field_0x392e = 1; - field_0x392f = result; + errType = result; field_0x392a = 6; - field_0x392c = 2; + selectEnd = 2; mIconMode = 3; field_0x392b = 0x26; } @@ -3604,7 +3625,7 @@ void dFile_select_c::YesNoSelectEx() { /* 8018D0CC-8018D2F4 .text ExSavePaneMove0__14dFile_select_cFv */ void dFile_select_c::ExSavePaneMove0() { int temp1; - if(field_0x3917[saveSlot]) { + if(field_0x3917[selectNum]) { temp1 = MessagePaneMove(0.0f, field_0x3944, g_fsHIO.field_0x46, field_0x3944, g_fsHIO.field_0x31, 0, 1); } else { @@ -3688,8 +3709,8 @@ void dFile_select_c::ExSavePaneMove1() { /* 8018D590-8018D654 .text ExDataSave__14dFile_select_cFv */ void dFile_select_c::ExDataSave() { dComIfGs_reinit(); - dComIfGs_setMemoryToCard(mSaveDataPtr, saveSlot); - mDoMemCdRWm_SetCheckSumGameData(mSaveDataPtr, saveSlot); + dComIfGs_setMemoryToCard(mSaveDataPtr, selectNum); + mDoMemCdRWm_SetCheckSumGameData(mSaveDataPtr, selectNum); #if VERSION > VERSION_DEMO for(int i = 0; i < 3; i++) { @@ -3701,7 +3722,7 @@ void dFile_select_c::ExDataSave() { mDoMemCd_setCopyToPos(0xFF); mDoMemCd_setPictWriteDataPtr(mSavePicDataPtr); #else - dComIfGs_setDataNum(saveSlot); + dComIfGs_setDataNum(selectNum); mDoMemCd_setPictWriteDataPtr(NULL); #endif mDoMemCd_Save(mSaveDataPtr, 0x1650, 0); @@ -3736,7 +3757,7 @@ void dFile_select_c::ExDataSaveWait() { /* 8018D770-8018D9A0 .text ExDataSavePaneMoveOk__14dFile_select_cFv */ void dFile_select_c::ExDataSavePaneMoveOk() { int temp1; - switch(saveSlot) { + switch(selectNum) { case 0: temp1 = PaneTranceRecInfo1(field_0x3930 - g_fsHIO.field_0x3A, g_fsHIO.field_0x11, 0.0f, 0.0f, 0.0f, g_fsHIO.field_0x3E, g_fsHIO.field_0x07, 1); break; @@ -3763,7 +3784,7 @@ void dFile_select_c::ExDataSavePaneMoveOk() { /* 8018D9A0-8018DB74 .text ExDataSavePaneMoveOk2__14dFile_select_cFv */ void dFile_select_c::ExDataSavePaneMoveOk2() { int temp1; - switch(saveSlot) { + switch(selectNum) { case 0: temp1 = PaneTranceRecInfo1(field_0x3930 - g_fsHIO.field_0x3B, g_fsHIO.field_0x11, g_fsHIO.field_0x3C, 0.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 0); break; @@ -3779,7 +3800,7 @@ void dFile_select_c::ExDataSavePaneMoveOk2() { field_0x3930++; if(temp1 == 1 && temp2 == 1) { - field_0x392c = 1; + selectEnd = 1; } } diff --git a/src/d/d_menu_save.cpp b/src/d/d_menu_save.cpp index 9885120c3..9a4160b54 100644 --- a/src/d/d_menu_save.cpp +++ b/src/d/d_menu_save.cpp @@ -142,8 +142,8 @@ BOOL dMenu_save_c::openNormal() { rt = openForGameover(); break; case 3: - if (field_0x53c != 0) { - if (field_0x53d == 2) { + if (errorFlag != 0) { + if (errorType == 2) { rt = openForEnding2(); } else { rt = TRUE; @@ -160,8 +160,8 @@ BOOL dMenu_save_c::openNormal() { field_0x394.pane->show(); if (useType == 3) { - if (field_0x53c != 0) { - if (field_0x53d == 2) { + if (errorFlag != 0) { + if (errorType == 2) { field_0x53a = 0; field_0x535 = 1; proc = PROC_CAN_NOT_SAVE; @@ -1648,8 +1648,8 @@ void dMenu_save_c::paneTransInit() { /* 801DA2C8-801DA3C4 .text displayInit__12dMenu_save_cFv */ void dMenu_save_c::displayInit() { field_0x536 = 0; - field_0x53c = 0; - field_0x53d = 0; + errorFlag = 0; + errorType = 0; field_0x53b = 0; proc = PROC_SAVE_WAIT; saveStatus = 1; diff --git a/src/d/d_name.cpp b/src/d/d_name.cpp index af6919ce2..647193ddc 100644 --- a/src/d/d_name.cpp +++ b/src/d/d_name.cpp @@ -115,12 +115,14 @@ void dName_c::_delete() { mDoExt_removeMesgFont(); delete stick; archive->removeResourceAll(); - mDoHIO_deleteChild(g_nmHIO.id); // supposed to be _deleteSp? + mDoHIO_deleteChild(g_nmHIO.id); } +#if VERSION == VERSION_DEMO void dName_c::_deleteSp() { mDoHIO_deleteChild(g_nmHIO.id); } +#endif /* 80216248-80216268 .text _move__7dName_cFv */ void dName_c::_move() { diff --git a/src/d/d_s_name.cpp b/src/d/d_s_name.cpp index 5dc384eaa..966ec4157 100644 --- a/src/d/d_s_name.cpp +++ b/src/d/d_s_name.cpp @@ -19,6 +19,7 @@ #include "f_op/f_op_overlap_mng.h" #include "f_op/f_op_scene_mng.h" #include "m_Do/m_Do_audio.h" +#include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_dvd_thread.h" #include "m_Do/m_Do_graphic.h" #include "m_Do/m_Do_hostIO.h" @@ -100,17 +101,27 @@ cPhs_State resLoad(request_of_phase_process_class* phase, char* resName) { /* 8022F9FC-802301C8 .text create__10dScnName_cFv */ cPhs_State dScnName_c::create() { +#if VERSION == VERSION_DEMO + dComIfGp_setNextStage("Name", 0, -1); +#else dComIfGp_offEnableNextStage(); dComIfGp_setNextStage("Name", 0, 0); +#endif dComIfGp_setStartStage(dComIfGp_getNextStartStage()); dComIfGp_offEnableNextStage(); cPhs_State rt = resLoad(&mPhs, "Stage"); if (rt == cPhs_COMPLEATE_e) { +#if VERSION == VERSION_DEMO + heap = mDoExt_createSolidHeapFromGameToCurrent(0x68000, 0); +#else heap = JKRCreateExpHeap(0x68000, mDoExt_getGameHeap(), false); - JUT_ASSERT(0x1c8, heap != NULL); +#endif + JUT_ASSERT(VERSION_SELECT(303, 305, 456, 459), heap != NULL); +#if VERSION > VERSION_DEMO oldHeap = mDoExt_setCurrentHeap(heap); +#endif mArchive = new JKRMemArchive(); mArchive->mountFixed(dComIfG_getStageRes("Stage", 0x17), JKRMEMBREAK_FLAG_UNKNOWN0); @@ -118,48 +129,61 @@ cPhs_State dScnName_c::create() { buttonIconCreate(); dFs_c = new dFile_select_c(); - JUT_ASSERT(470, dFs_c != NULL); - dFs_c->field_0x0 = mArchive; + JUT_ASSERT(VERSION_SELECT(316, 319, 470, 473), dFs_c != NULL); + dFs_c->archive = mArchive; savePicDatabuf = new (0x20) card_pictdata[3 * 3]; - JUT_ASSERT(476, savePicDatabuf != NULL); + JUT_ASSERT(VERSION_SELECT(322, 325, 476, 483), savePicDatabuf != NULL); if (fpcM_GetName(this) == fpcNm_NAME_SCENE_e) { dFs_c->setUseType(0); dNm_c = new dName_c(); - JUT_ASSERT(484, dNm_c != NULL); + JUT_ASSERT(VERSION_SELECT(330, 333, 484, 491), dNm_c != NULL); dNm_c->_create(); dFe_c = new dFile_error_c(); - JUT_ASSERT(489, dFe_c != NULL); + JUT_ASSERT(VERSION_SELECT(335, 338, 489, 496), dFe_c != NULL); dFe_c->_create(); +#if VERSION > VERSION_DEMO dMs_c = NULL; +#endif dComIfGs_setNewFile(0); dComIfGs_setNoFile(0); } if (fpcM_GetName(this) == fpcNm_NAMEEX_SCENE_e) { +#if VERSION > VERSION_DEMO dComIfGs_setClearCount(1); +#endif dFs_c->setUseType(1); dMs_c = new dMenu_save_c(); - JUT_ASSERT(511, dMs_c != NULL); + JUT_ASSERT(VERSION_SELECT(350, 360, 511, 518), dMs_c != NULL); dMs_c->setUseType(3); dMs_c->_create(); dFe_c = NULL; +#if VERSION > VERSION_DEMO dNm_c = NULL; +#endif } dFs_c->_create(); g_snHIO.mNo = mDoHIO_root.m_subroot.createChild("名前登録シーン", &g_snHIO); +#if VERSION == VERSION_DEMO + mDoExt_restoreCurrentHeap(); + mDoExt_adjustSolidHeap(heap); +#endif + dComIfGp_setWindowNum(1); dComIfGp_setWindow(0, 0.0f, 0.0f, mDoMch_render_c::getFbWidth(), mDoMch_render_c::getEfbHeight(), 0.0f, 1.0f, 0, 2); dComIfGp_setCamera(0, &mCamera); + dDlst_window_c* window = dComIfGp_getWindow(0); + view_port_class* viewport = window->getViewPort(); + fopCamM_SetNear(&mCamera, 5.0f); fopCamM_SetFar(&mCamera, 160000.0f); fopCamM_SetFovy(&mCamera, 60.0f); - f32 aspect = dComIfGp_getWindow(0)->getViewPort()->mWidth / dComIfGp_getWindow(0)->getViewPort()->mHeight; - fopCamM_SetAspect(&mCamera, aspect * fapGmHIO_getAspectRatio()); + fopCamM_SetAspect(&mCamera, fapGmHIO_getAspectRatio() * (viewport->mWidth / viewport->mHeight)); fopCamM_SetEye(&mCamera, 9377.0f, 0.0f, 7644.0f); fopCamM_SetCenter(&mCamera, 0.0f, 6311.0f, 1000.0f); fopCamM_SetBank(&mCamera, 0); @@ -193,20 +217,51 @@ cPhs_State dScnName_c::create() { field_0x558 = g_snHIO.field_0x5; field_0x1bb8 = 0; +#if VERSION == VERSION_DEMO + mMainProc = 0xE; + mDrawProc = 4; +#else if (fpcM_GetName(this) == fpcNm_NAME_SCENE_e) { mMainProc = 0; - field_0x556 = 0; + mMemCardCheckProc = 0; mDrawProc = 0; } else if (fpcM_GetName(this) == fpcNm_NAMEEX_SCENE_e) { mMainProc = 10; mDrawProc = 3; } +#endif JFWDisplay::getManager()->setTickRate(OS_TIMER_CLOCK / 30); } return rt; } +#if VERSION == VERSION_PAL +void dScnName_c::bmg_data_read_all() { + /* Nonmatching */ + dComIfGp_getMsgDtArchive()->unmount(); + field_0x1c4 = mDoDvdThd_mountXArchive_c::create("/res/Msg/data0/bmgres.arc", 0, JKRArchive::MOUNT_MEM); + field_0x1c8 = mDoDvdThd_mountXArchive_c::create("/res/Msg/data1/bmgres.arc", 0, JKRArchive::MOUNT_MEM); + field_0x1cc = mDoDvdThd_mountXArchive_c::create("/res/Msg/data2/bmgres.arc", 0, JKRArchive::MOUNT_MEM); + field_0x1d0 = mDoDvdThd_mountXArchive_c::create("/res/Msg/data3/bmgres.arc", 0, JKRArchive::MOUNT_MEM); + field_0x1d4 = mDoDvdThd_mountXArchive_c::create("/res/Msg/data4/bmgres.arc", 0, JKRArchive::MOUNT_MEM); +} + +#endif + +#if VERSION == VERSION_PAL +void dScnName_c::bmg_data_set() { + /* Nonmatching */ +} + +#endif + +#if VERSION == VERSION_PAL +void dScnName_c::tex_data_set() { + /* Nonmatching */ +} +#endif + /* 802301C8-802301FC .text cloth_create__10dScnName_cFv */ void dScnName_c::cloth_create() { cloth2D_create(); @@ -224,7 +279,7 @@ void dScnName_c::cloth_move() { void dScnName_c::cloth2D_create() { JKRArchive* clothRes = dComIfGp_getClothResArchive(); cloth.cloth_c = new dMCloth_c(); - JUT_ASSERT(801, cloth.cloth_c != NULL); + JUT_ASSERT(VERSION_SELECT(504, 517, 801, 805), cloth.cloth_c != NULL); cloth.cloth_c->setArchive(clothRes); cloth.cloth_c->setClothType(MENU_CLOTH_TYPE_FILE_SELECT); } @@ -239,7 +294,7 @@ static void dummy() { /* 802302F8-80230500 .text buttonIconCreate__10dScnName_cFv */ void dScnName_c::buttonIconCreate() { btnIcon.scr = new J2DScreen(); - JUT_ASSERT(866, btnIcon.scr != NULL); + JUT_ASSERT(VERSION_SELECT(569, 582, 866, 870), btnIcon.scr != NULL); btnIcon.scr->set("main_parts_fileselect.blo", mArchive); fopMsgM_setPaneData(&field_0x43c, btnIcon.scr->search('cent')); fopMsgM_setPaneData(&field_0x474, btnIcon.scr->search('bab')); @@ -251,6 +306,36 @@ void dScnName_c::buttonIconCreate() { field_0x1bb6 = 6; } +#if VERSION == VERSION_PAL +void dScnName_c::buttonIconTexChange(u8, u8) { + /* Nonmatching */ +} +#endif + +#if VERSION == VERSION_PAL +void dScnName_c::PaneAlphaLangTxt(s16, u8) { + /* Nonmatching */ +} +#endif + +#if VERSION == VERSION_PAL +void dScnName_c::languageTexChange() { + /* Nonmatching */ +} +#endif + +#if VERSION == VERSION_PAL +void dScnName_c::langTexChg() { + /* Nonmatching */ +} +#endif + +#if VERSION == VERSION_PAL +void dScnName_c::langTexChgFast() { + /* Nonmatching */ +} +#endif + /* 80230500-802305E0 .text paneTransButtonIcon__10dScnName_cFsUcffUc */ BOOL dScnName_c::paneTransButtonIcon(s16 param_1, u8 param_2, f32 param_3, f32 param_4, u8 param_5) { if (param_1 < 0) { @@ -332,9 +417,12 @@ BOOL dScnName_c::execute() { dComIfG_resetToOpening(this); } +#if VERSION > VERSION_DEMO if (mDoRst::isReset()) { return TRUE; } +#endif + cloth_move(); if (dFe_c != NULL) { @@ -362,8 +450,10 @@ void dScnName_c::setView() { /* 80230714-802307EC .text draw__10dScnName_cFv */ BOOL dScnName_c::draw() { setView(); - for (create_tag_class* pTag = fopDwIt_Begin(); pTag != NULL; pTag = fopDwIt_Next(pTag)) - fpcM_Draw(pTag->mpTagData); + for (create_tag_class* pTag = fopDwIt_Begin(); pTag != NULL; pTag = fopDwIt_Next(pTag)) { + void* process = pTag->mpTagData; + fpcM_Draw(process); + } if (field_0x55d && !g_snHIO.field_0xb) { dComIfGd_set2DOpa(&cloth); } @@ -374,6 +464,21 @@ BOOL dScnName_c::draw() { /* 802307EC-80230A14 .text __dt__10dScnName_cFv */ dScnName_c::~dScnName_c() { +#if VERSION == VERSION_DEMO + mArchive->unmountFixed(); + delete cloth.cloth_c; + dNm_c->_deleteSp(); + dFs_c->_deleteSp(); + if (dFe_c) { + dFe_c->_deleteSp(); + } + s8 no = g_snHIO.mNo; + mDoHIO_root.m_subroot.deleteChild(no); + mDoExt_destroySolidHeap(heap); + dComIfG_deleteStageRes("Stage"); + dComIfGp_setWindowNum(0); + dComIfGs_setRestartOption(0); +#else dFs_c->_delete(); delete dFs_c; if (dNm_c) { @@ -392,42 +497,144 @@ dScnName_c::~dScnName_c() { delete btnIcon.scr; mArchive->unmountFixed(); delete cloth.cloth_c; - mDoHIO_root.m_subroot.deleteChild(g_snHIO.mNo); + s8 no = g_snHIO.mNo; + mDoHIO_root.m_subroot.deleteChild(no); JKRSetCurrentHeap(oldHeap); heap->destroy(); dComIfG_deleteStageRes("Stage"); dComIfGp_setWindowNum(0); dComIfGs_setRestartOption(0); +#endif } /* 80230A14-80230AD0 .text MemCardCheckMain__10dScnName_cFv */ void dScnName_c::MemCardCheckMain() { - /* Nonmatching */ + if (mDoMemCd_getProbeStat() == 0 || mDoMemCd_getProbeStat() == 1) { +#if VERSION > VERSION_DEMO + if (!mDoRst::isReset()) +#endif + { + if (field_0x1bb8 == 0 && dFe_c->getStatus() == 1) { + dFe_c->closeMessage(); + field_0x55a = 0xFF; + field_0x55b = 0; + mMemCardCheckProc = 2; + } + mDoMemCd_clearProbeStat(); + } + } + (this->*MemCardCheckProc[mMemCardCheckProc])(); } /* 80230AD0-80230C78 .text MemCardStatCheck__10dScnName_cFv */ void dScnName_c::MemCardStatCheck() { - /* Nonmatching */ + if (field_0x558 > 0) { + field_0x558--; + return; + } + switch (mDoMemCd_getStatus(0)) { + case mDoMemCd_Ctrl_c::CARD_STAT_WAIT: + dFe_c->setErrMessage(9, 0); + field_0x55b = 4; + field_0x55a = 0x1A; + mMemCardCheckProc = 2; + break; + case 8: + dFe_c->setErrMessage(0xA, 0); + field_0x55b = 4; + field_0x55a = 0x1A; + mMemCardCheckProc = 2; + break; + case 9: + dFe_c->setErrMessage(0xB, 0); + field_0x55b = 4; + field_0x55a = 0x1A; + mMemCardCheckProc = 2; + break; + case mDoMemCd_Ctrl_c::CARD_STAT_WRONG_DEVICE: + dFe_c->setErrMessage(0xC, 0); + field_0x55b = 4; + field_0x55a = 0x1A; + mMemCardCheckProc = 2; + break; + case mDoMemCd_Ctrl_c::CARD_STAT_ENCODING: + case mDoMemCd_Ctrl_c::CARD_STAT_ERROR: + dFe_c->setErrMessage(0x2D, 0); + mMemCardCheckProc = 5; + break; + case 11: + case mDoMemCd_Ctrl_c::CARD_STAT_IOERROR: + dFe_c->setErrMessage(0xF, 0); + mMemCardCheckProc = 3; + field_0x55a = 0x60; + field_0x55c = 0x61; + field_0x55b = 0xD; + break; + case mDoMemCd_Ctrl_c::CARD_STAT_CREATE: + mDoMemCd_setPictDataPtr((u8*)savePicDatabuf); + mDoMemCd_Load(); + mMemCardCheckProc = 1; + break; + case mDoMemCd_Ctrl_c::CARD_STAT_RESTORE: + dFe_c->setErrMessage(0x15, 0); + mMemCardCheckProc = 9; + break; + } } /* 80230C78-80230D20 .text MemCardLoadWait__10dScnName_cFv */ void dScnName_c::MemCardLoadWait() { - /* Nonmatching */ + int rt = mDoMemCd_LoadSync(saveMemory, sizeof(saveMemory), 0); + if (rt == 0) + return; + if (rt == 1) { + dComIfGs_setMemCardCheckID(mDoMemCd_getCardSerialNo()); +#if VERSION > VERSION_JPN + if (dComIfGs_getNoFile() != 0) { + dComIfGs_setNoFile(0); + } +#endif + mMainProc = 1; + mDrawProc = 4; + } else if (rt == 2) { + mMemCardCheckProc = 0; + } } /* 80230D20-80230D74 .text MemCardErrMsgWaitKey__10dScnName_cFv */ void dScnName_c::MemCardErrMsgWaitKey() { - /* Nonmatching */ + if (dFe_c->getStatus() == 2) { + if (field_0x55a != 0xFF) { + dFe_c->setErrMessage(field_0x55a, 0); + } + mMemCardCheckProc = field_0x55b; + } } /* 80230D74-80230DE8 .text MemCardErrMsgWaitKey2__10dScnName_cFv */ void dScnName_c::MemCardErrMsgWaitKey2() { - /* Nonmatching */ + if (dFe_c->getStatus() == 2) { + if (field_0x55a != 0xFF) { + dFe_c->setErrMessage(field_0x55a, 0); + field_0x55a = 0xFF; + mMemCardCheckProc = 3; + } else { + dFe_c->setErrMessage(field_0x55c, 0); + mMemCardCheckProc = field_0x55b; + } + } } /* 80230DE8-80230E50 .text MemCardGotoIPLSelect__10dScnName_cFv */ void dScnName_c::MemCardGotoIPLSelect() { - /* Nonmatching */ + if (dFe_c->getStatus() == 2) { + if (dFe_c->getYesNo() != 0) { + mMemCardCheckProc = 0xE; + } else { + dFe_c->setErrMessage(0x1A, 0); + mMemCardCheckProc = 4; + } + } } /* 80230E50-80230E7C .text MemCardGotoIPL__10dScnName_cFv */ @@ -437,17 +644,53 @@ void dScnName_c::MemCardGotoIPL() { /* 80230E7C-80230F4C .text MemCardErrMsgWaitNoSaveSel__10dScnName_cFv */ void dScnName_c::MemCardErrMsgWaitNoSaveSel() { - /* Nonmatching */ + if (dFe_c->getStatus() == 2) { + if (dFe_c->getYesNo() != 0) { + dComIfGs_setInitDataToCard(saveMemory, 0); + mDoMemCdRWm_SetCheckSumGameData(saveMemory, 0); + dComIfGs_setInitDataToCard(saveMemory, 1); + mDoMemCdRWm_SetCheckSumGameData(saveMemory, 1); + dComIfGs_setInitDataToCard(saveMemory, 2); + mDoMemCdRWm_SetCheckSumGameData(saveMemory, 2); + dComIfGs_setNoFile(1); + mMainProc = 1; + mDrawProc = 4; + } else { + mMemCardCheckProc = 0; + } + } } /* 80230F4C-80230FD0 .text MemCardErrMsgWaitFormatSel__10dScnName_cFv */ void dScnName_c::MemCardErrMsgWaitFormatSel() { - /* Nonmatching */ + if (dFe_c->getStatus() == 2) { + if (dFe_c->getYesNo() != 0) { + dFe_c->setErrMessage(0x11, 0); + mMemCardCheckProc = 6; + } else { + dFe_c->setErrMessage(0x10, 0); + field_0x55b = 4; + field_0x55a = 0x1A; + mMemCardCheckProc = 2; + } + } } /* 80230FD0-8023106C .text MemCardErrMsgWaitFormatSel2__10dScnName_cFv */ void dScnName_c::MemCardErrMsgWaitFormatSel2() { - /* Nonmatching */ + if (dFe_c->getStatus() == 2) { + if (dFe_c->getYesNo() != 0) { + mDoMemCd_Format(); + dFe_c->setErrMessage(0x12, 1); + mMemCardCheckProc = 7; + field_0x1bb8 = 1; + } else { + dFe_c->setErrMessage(0x10, 0); + field_0x55b = 4; + field_0x55a = 0x1A; + mMemCardCheckProc = 2; + } + } } /* 8023106C-802310C0 .text MemCardFormat__10dScnName_cFv */ @@ -455,18 +698,51 @@ void dScnName_c::MemCardFormat() { field_0x1bbc = mDoMemCd_FormatSync(); if (field_0x1bbc != 0) { dFe_c->closeMessage(); - field_0x556 = 8; + mMemCardCheckProc = 8; } } /* 802310C0-8023117C .text MemCardFormatCheck__10dScnName_cFv */ void dScnName_c::MemCardFormatCheck() { - /* Nonmatching */ + if (dFe_c->getStatus() == 2) { + if (field_0x1bbc == 2) { + field_0x55a = 0xFF; + field_0x55b = 0; + dFe_c->setErrMessage(0x14, 0); + mMemCardCheckProc = 2; + } else if (field_0x1bbc == 1) { + field_0x55a = 0xFF; + field_0x55b = 0; + dFe_c->setErrMessage(0x13, 0); + dFe_c->setTimeCountDownMode(); + mMemCardCheckProc = 2; + } + field_0x1bb8 = 0; + field_0x55a = 0xFF; + } } /* 8023117C-80231284 .text MemCardMakeGameFileSel__10dScnName_cFv */ void dScnName_c::MemCardMakeGameFileSel() { - /* Nonmatching */ + if (dFe_c->getStatus() == 2) { + if (dFe_c->getYesNo() != 0) { + dComIfGs_setInitDataToCard(saveMemory, 0); + mDoMemCdRWm_SetCheckSumGameData(saveMemory, 0); + dComIfGs_setInitDataToCard(saveMemory, 1); + mDoMemCdRWm_SetCheckSumGameData(saveMemory, 1); + dComIfGs_setInitDataToCard(saveMemory, 2); + mDoMemCdRWm_SetCheckSumGameData(saveMemory, 2); + mDoMemCd_Save(saveMemory, sizeof(saveMemory), 0); + dFe_c->setErrMessage(0x17, 1); + mMemCardCheckProc = 0xA; + field_0x1bb8 = 1; + } else { + dFe_c->setErrMessage(0x16, 0); + field_0x55b = 4; + field_0x55a = 0x1A; + mMemCardCheckProc = 2; + } + } } /* 80231284-802312D8 .text MemCardMakeGameFile__10dScnName_cFv */ @@ -474,13 +750,28 @@ void dScnName_c::MemCardMakeGameFile() { field_0x1bbc = mDoMemCd_SaveSync(); if (field_0x1bbc != 0) { dFe_c->closeMessage(); - field_0x556 = 11; + mMemCardCheckProc = 11; } } /* 802312D8-80231398 .text MemCardMakeGameFileCheck__10dScnName_cFv */ void dScnName_c::MemCardMakeGameFileCheck() { - /* Nonmatching */ + if (dFe_c->getStatus() == 2) { + if (field_0x1bbc == 2) { + field_0x55a = 0xFF; + field_0x55b = 0; + dFe_c->setErrMessage(0x18, 0); + mMemCardCheckProc = 2; + } else if (field_0x1bbc == 1) { + dComIfGs_setNewFile(1); + field_0x55a = 0xFF; + field_0x55b = 0xC; + dFe_c->setErrMessage(0x19, 0); + mMemCardCheckProc = 2; + } + field_0x1bb8 = 0; + field_0x55a = 0xFF; + } } /* 80231398-802313AC .text MemCardGotoFileSelect__10dScnName_cFv */ @@ -494,6 +785,15 @@ void dScnName_c::MemCardCheckDbg() {} /* 802313B0-80231428 .text MemCardCheckDbgWait__10dScnName_cFv */ void dScnName_c::MemCardCheckDbgWait() { + if (dFe_c->getStatus() == 0) { + if (CPad_CHECK_TRIG_Y(0)) { + dFe_c->initial(); + mMemCardCheckProc = 0xF; + } else if (CPad_CHECK_TRIG_Z(0)) { + mMainProc = 1; + mDrawProc = 4; + } + } } /* 80231428-80231454 .text FileErrorDraw__10dScnName_cFv */ @@ -533,14 +833,14 @@ void dScnName_c::NoteOpenWait() { } dFs_c->initial(); mMainProc = 3; - field_0x555 = 0; + mOpenProc = 0; mDrawProc = 1; } } /* 802315A8-802315E0 .text FileSelectOpen__10dScnName_cFv */ void dScnName_c::FileSelectOpen() { - (this->*(FileSelOpenProc[field_0x555]))(); + (this->*(FileSelOpenProc[mOpenProc]))(); } /* 802315E0-802319B4 .text buttonIconProc__10dScnName_cFv */ @@ -666,28 +966,31 @@ void dScnName_c::FileSelectMain() { /* 80231A8C-80231CB8 .text FileSelectMainNormal__10dScnName_cFv */ void dScnName_c::FileSelectMainNormal() { - /* Nonmatching */ - switch (dFs_c->field_0x392c) { + switch (dFs_c->isSelectEnd()) { case 1: field_0x1bb9 = 0; - if (dFs_c->field_0x3914[dFs_c->saveSlot] != 0) { + if (dFs_c->isDataNew(dFs_c->getSelectNum())) { field_0x1bb6 = 3; mMainProc = 5; } else { - dComIfGs_setCardToMemory(saveMemory, dFs_c->saveSlot); - if (dFs_c->saveStatus[dFs_c->saveSlot] != 0 && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_3510)) { + dComIfGs_setCardToMemory(saveMemory, dFs_c->getSelectNum()); + if (dFs_c->isDataExtra(dFs_c->getSelectNum()) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_3510)) { field_0x1bb9 = 1; } u8 pictureNum = dComIfGs_getPictureNum(); if (dComIfGs_getPictureNum() != 0) { - u8 failed = 0; - u8 boxDataIdx = 0; - u8 r25 = 0; - card_pictdata* workBuf = &savePicDatabuf[dFs_c->saveSlot * 3]; - for (s32 i = 0; i < 3; i++) { - u32 mask = 1 << i; - if ((dComIfGs_getEventReg(dSv_event_flag_c::UNK_89FF) & mask)) { + int i; + u8 failed; + u8 r25; + u8 boxDataIdx; + card_pictdata* workBuf; + failed = 0; + boxDataIdx = 0; + r25 = 0; + workBuf = &savePicDatabuf[dFs_c->getSelectNum() * 3]; + for (i = 0; i < 3; i++) { + if ((dComIfGs_getEventReg(dSv_event_flag_c::UNK_89FF) & (1 << i))) { workBuf++; continue; } @@ -729,8 +1032,7 @@ void dScnName_c::FileSelectMainNormal() { /* 80231CB8-80231D00 .text FileSelectMainExSave__10dScnName_cFv */ void dScnName_c::FileSelectMainExSave() { - /* Nonmatching */ - switch (dFs_c->field_0x392c) { + switch (dFs_c->isSelectEnd()) { case 1: field_0x558 = 0x2d; mMainProc = 13; @@ -757,25 +1059,32 @@ void dScnName_c::ResetWait() { /* 80231D28-80231E9C .text FileSelectClose__10dScnName_cFv */ void dScnName_c::FileSelectClose() { if (dFs_c->_close() == 1) { - switch (dFs_c->field_0x392c) { + switch (dFs_c->isSelectEnd()) { case 2: +#if VERSION == VERSION_DEMO + cloth.cloth_c->alpha_out(); +#endif if (fpcM_GetName(this) == fpcNm_NAMEEX_SCENE_e) { dMs_c->initialize(); - dMs_c->field_0x53c = 1; - dMs_c->field_0x53d = dFs_c->field_0x392f; // getErrType? - if (dFs_c->field_0x392f == 2) { + dMs_c->setErrorFlag(1); + dMs_c->setErrorType(dFs_c->getErrType()); + if (dFs_c->getErrType() == 2) { dMs_c->initializeEx(); } mMainProc = 10; mDrawProc = 3; } else { +#if VERSION > VERSION_DEMO field_0x55d = 0; cloth.cloth_c->init(); +#endif mMainProc = 0; - field_0x556 = 0; + mMemCardCheckProc = 0; mDrawProc = 0; } +#if VERSION > VERSION_DEMO cloth.cloth_c->alpha_out(); +#endif break; case 3: cloth.cloth_c->alpha_out(); @@ -791,7 +1100,7 @@ void dScnName_c::FileSelectClose() { } dNm_c->initial(); mMainProc = 6; - field_0x555 = 0; + mOpenProc = 0; mDrawProc = 2; break; } @@ -805,7 +1114,7 @@ void dScnName_c::FileSelectDraw() { /* 80231EC0-80231EF8 .text NameInOpen__10dScnName_cFv */ void dScnName_c::NameInOpen() { - (this->*(NameOpenProc[field_0x555]))(); + (this->*(NameOpenProc[mOpenProc]))(); } /* 80231EF8-80231F44 .text NameOpenMain__10dScnName_cFv */ @@ -842,7 +1151,7 @@ void dScnName_c::NameInClose() { if ((BOOL)dNm_c->_close() == TRUE) { dFs_c->initial(); mMainProc = 3; - field_0x555 = 0; + mOpenProc = 0; mDrawProc = 1; } } @@ -922,9 +1231,10 @@ void dScnName_c::changeGameScene() { return; dComIfGs_gameStart(); - u32 procName = field_0x55f ? fpcNm_OPEN_SCENE_e : fpcNm_PLAY_SCENE_e; - if (fopScnM_ChangeReq(this, procName, fpcNm_OVERLAP0_e, 5)) { - g_dComIfG_gameInfo.save.getDan().mStageNo = -1; + if (fopScnM_ChangeReq(this, field_0x55f ? fpcNm_OPEN_SCENE_e : fpcNm_PLAY_SCENE_e, fpcNm_OVERLAP0_e, 5)) { +#if VERSION > VERSION_DEMO + dComIfGs_resetDan(); +#endif dComIfGs_setRestartRoomParam(0); mDoAud_setSceneName(dComIfGp_getNextStageName(), dComIfGp_getNextStageRoomNo(), dComIfGp_getNextStageLayer()); } @@ -968,8 +1278,7 @@ void dDlst_BTICN_c::draw() { void dDlst_FLSEL_CLOTH_c::draw() { Mtx44 mtx; view_port_class* viewport = dComIfGp_getCurrentViewport(); - f32 aspect = viewport->mWidth / viewport->mHeight; - C_MTXPerspective(mtx, 30.0f, aspect * fapGmHIO_getAspectRatio(), 1.0f, 100000.0f); + C_MTXPerspective(mtx, 30.0f, fapGmHIO_getAspectRatio() * (viewport->mWidth / viewport->mHeight), 1.0f, 100000.0f); GXSetProjection(mtx, GX_PERSPECTIVE); cloth_c->draw(0.0f, (GXColor){0xe3, 0xff, 0xb3, 0xff}, (GXColor){0x00, 0x00, 0x00, 0x00}, 0); dComIfGp_getCurrentGrafPort()->setPort();