From 4766819367d5887e595bf11c3612807d2bff6d16 Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sun, 15 Jun 2025 17:25:25 -0400 Subject: [PATCH] d_reset naming --- config/SOUE01/splits.txt | 2 +- config/SOUE01/symbols.txt | 102 ++++++++++++------------ configure.py | 4 +- include/d/d_pad.h | 4 +- include/d/d_player_act.h | 4 + include/d/d_reset.h | 97 ++++++++++++++++++++++ include/rvl/KPAD/KPAD.h | 6 ++ include/toBeSorted/reload_color_fader.h | 25 ------ src/REL/d/d_s_boot.cpp | 8 +- src/d/d_dvd_drive_error.cpp | 5 +- src/d/d_pad.cpp | 86 +++++++++++++++++--- src/d/d_reset.cpp | 14 ++++ src/d/d_rumble.cpp | 5 +- src/d/d_sc_title.cpp | 8 +- src/d/d_scene.cpp | 8 +- src/toBeSorted/save_manager.cpp | 11 ++- 16 files changed, 278 insertions(+), 111 deletions(-) create mode 100644 include/d/d_reset.h delete mode 100644 include/toBeSorted/reload_color_fader.h create mode 100644 src/d/d_reset.cpp diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 5139c7b6..d1fe5882 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -337,7 +337,7 @@ toBeSorted/area_math.cpp: toBeSorted/deg_angle_util.cpp: .text start:0x80067280 end:0x80067B14 align:16 -toBeSorted/reload_color_fader.cpp: +d/d_reset.cpp: .text start:0x80067B20 end:0x80068FD0 align:16 .ctors start:0x804DB6A4 end:0x804DB6A8 .sbss start:0x80575270 end:0x80575278 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index e5b13dd7..64395c06 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -2926,62 +2926,62 @@ fn_800679B0 = .text:0x800679B0; // type:function size:0xB0 fn_80067A60 = .text:0x80067A60; // type:function size:0x34 fn_80067AA0 = .text:0x80067AA0; // type:function size:0x3C fn_80067AE0 = .text:0x80067AE0; // type:function size:0x34 -fn_80067B20 = .text:0x80067B20; // type:function size:0x4C -GetInstance__16ReloadColorFaderFv = .text:0x80067B70; // type:function size:0x8 -fn_80067B80 = .text:0x80067B80; // type:function size:0x84 -fn_80067C10 = .text:0x80067C10; // type:function size:0xA8 -fn_80067CC0 = .text:0x80067CC0; // type:function size:0x7C -fn_80067D40 = .text:0x80067D40; // type:function size:0x70 -fn_80067DB0 = .text:0x80067DB0; // type:function size:0x14 -fn_80067DD0__16ReloadColorFaderFb = .text:0x80067DD0; // type:function size:0x8 -fn_80067DE0 = .text:0x80067DE0; // type:function size:0xD4 +CreateInstance__Q26dReset8Manage_cFPQ23EGG4Heap = .text:0x80067B20; // type:function size:0x4C +GetInstance__Q26dReset8Manage_cFv = .text:0x80067B70; // type:function size:0x8 +__ct__Q26dReset8Manage_cFPQ23EGG4Heap = .text:0x80067B80; // type:function size:0x84 +Configure__Q26dReset8Manage_cFv = .text:0x80067C10; // type:function size:0xA8 +Reset__Q26dReset8Manage_cFv = .text:0x80067CC0; // type:function size:0x7C +Calculate__Q26dReset8Manage_cFv = .text:0x80067D40; // type:function size:0x70 +Draw__Q26dReset8Manage_cFv = .text:0x80067DB0; // type:function size:0x14 +BootComplete__Q26dReset8Manage_cFb = .text:0x80067DD0; // type:function size:0x8 +CanExecSoftReset__Q26dReset8Manage_cCFv = .text:0x80067DE0; // type:function size:0xD4 getStatus__Q23EGG10ColorFaderCFv = .text:0x80067EC0; // type:function size:0x8 -fn_80067ED0__16ReloadColorFaderFv = .text:0x80067ED0; // type:function size:0x24 -fn_80067F00__16ReloadColorFaderFv = .text:0x80067F00; // type:function size:0x50 -fn_80067F50__16ReloadColorFaderFv = .text:0x80067F50; // type:function size:0x4 -fn_80067F60__16ReloadColorFaderFv = .text:0x80067F60; // type:function size:0x38 -fn_80067FA0 = .text:0x80067FA0; // type:function size:0xC -fn_80067FB0 = .text:0x80067FB0; // type:function size:0xC -fn_80067FC0 = .text:0x80067FC0; // type:function size:0xC -fn_80067FD0 = .text:0x80067FD0; // type:function size:0xC -fn_80067FE0__16ReloadColorFaderFv = .text:0x80067FE0; // type:function size:0xC +SetSoftResetFinish__Q26dReset8Manage_cFv = .text:0x80067ED0; // type:function size:0x24 +SetSoftResetScene__Q26dReset8Manage_cFv = .text:0x80067F00; // type:function size:0x50 +PostDeleteScene__Q26dReset8Manage_cFv = .text:0x80067F50; // type:function size:0x4 +IsFaderBlank__Q26dReset8Manage_cCFv = .text:0x80067F60; // type:function size:0x38 +SetHbmReturnMenu__Q26dReset8Manage_cFv = .text:0x80067FA0; // type:function size:0xC +SetHbmReset__Q26dReset8Manage_cFv = .text:0x80067FB0; // type:function size:0xC +SetDelayReset__Q26dReset8Manage_cFv = .text:0x80067FC0; // type:function size:0xC +SetDelayPowerOff__Q26dReset8Manage_cFv = .text:0x80067FD0; // type:function size:0xC +SetInteriorReturnDataManager__Q26dReset8Manage_cFv = .text:0x80067FE0; // type:function size:0xC fn_80067FF0 = .text:0x80067FF0; // type:function size:0x3C -fn_80068030 = .text:0x80068030; // type:function size:0x34 +ExecProcPre__Q26dReset8Manage_cFv = .text:0x80068030; // type:function size:0x34 fn_80068070 = .text:0x80068070; // type:function size:0x4 -fn_80068080 = .text:0x80068080; // type:function size:0x48 -fn_800680D0 = .text:0x800680D0; // type:function size:0xC8 -fn_800681A0 = .text:0x800681A0; // type:function size:0x4 -fn_800681B0 = .text:0x800681B0; // type:function size:0x114 -fn_800682D0 = .text:0x800682D0; // type:function size:0x40 -fn_80068310 = .text:0x80068310; // type:function size:0x48 -doSoftResetMaybe = .text:0x80068360; // type:function size:0x40 -fn_800683A0 = .text:0x800683A0; // type:function size:0x38 -fn_800683E0 = .text:0x800683E0; // type:function size:0x40 -fn_80068420 = .text:0x80068420; // type:function size:0x100 -fn_80068520 = .text:0x80068520; // type:function size:0x22C -fn_80068750 = .text:0x80068750; // type:function size:0x8 -calledWhileHomeMenuIsVisible = .text:0x80068760; // type:function size:0x198 -fn_80068900 = .text:0x80068900; // type:function size:0x9C -fn_800689A0 = .text:0x800689A0; // type:function size:0x134 -fn_80068AE0 = .text:0x80068AE0; // type:function size:0xC -fn_80068AF0 = .text:0x80068AF0; // type:function size:0x4 -fn_80068B00 = .text:0x80068B00; // type:function size:0x60 -fn_80068B60 = .text:0x80068B60; // type:function size:0xE8 -fn_80068C50 = .text:0x80068C50; // type:function size:0xC -fn_80068C60 = .text:0x80068C60; // type:function size:0xC +ExecProcMain__Q26dReset8Manage_cFv = .text:0x80068080; // type:function size:0x48 +DiskCheckModeRequest__Q26dReset8Manage_cFv = .text:0x800680D0; // type:function size:0xC8 +DebugPrintMode__Q26dReset8Manage_cFPCc = .text:0x800681A0; // type:function size:0x4 +ModeProc__Q26dReset8Manage_cFv = .text:0x800681B0; // type:function size:0x114 +ModeRequest__Q26dReset8Manage_cFQ36dReset8Manage_c6Mode_e = .text:0x800682D0; // type:function size:0x40 +ModeRequestSafetyWait__Q26dReset8Manage_cFQ36dReset8Manage_c6Exec_e = .text:0x80068310; // type:function size:0x48 +ModeRequestSoftReset__Q26dReset8Manage_cFv = .text:0x80068360; // type:function size:0x40 +ModeInit_Normal__Q26dReset8Manage_cFv = .text:0x800683A0; // type:function size:0x38 +ModeProc_Normal__Q26dReset8Manage_cFv = .text:0x800683E0; // type:function size:0x40 +ModeInit_SoftReset__Q26dReset8Manage_cFv = .text:0x80068420; // type:function size:0x100 +ModeProc_SoftReset__Q26dReset8Manage_cFv = .text:0x80068520; // type:function size:0x22C +ModeInit_HbmWait__Q26dReset8Manage_cFv = .text:0x80068750; // type:function size:0x8 +ModeProc_HbmWait__Q26dReset8Manage_cFv = .text:0x80068760; // type:function size:0x198 +ModeInit_DiskWait__Q26dReset8Manage_cFv = .text:0x80068900; // type:function size:0x9C +ModeProc_DiskWait__Q26dReset8Manage_cFv = .text:0x800689A0; // type:function size:0x134 +ModeInit_FatalError__Q26dReset8Manage_cFv = .text:0x80068AE0; // type:function size:0xC +ModeProc_FatalError__Q26dReset8Manage_cFv = .text:0x80068AF0; // type:function size:0x4 +ModeInit_SafetyWait__Q26dReset8Manage_cFv = .text:0x80068B00; // type:function size:0x60 +ModeProc_SafetyWait__Q26dReset8Manage_cFv = .text:0x80068B60; // type:function size:0xE8 +SetResetCallback__Q26dReset8Manage_cFv = .text:0x80068C50; // type:function size:0xC +SetPowerCallback__Q26dReset8Manage_cFv = .text:0x80068C60; // type:function size:0xC fn_80068C70 = .text:0x80068C70; // type:function size:0x18 fn_80068C90 = .text:0x80068C90; // type:function size:0x48 -fn_80068CE0 = .text:0x80068CE0; // type:function size:0x30 -fn_80068D10 = .text:0x80068D10; // type:function size:0x30 -fn_80068D40 = .text:0x80068D40; // type:function size:0x88 -LCDisableThunk = .text:0x80068DD0; // type:function size:0x4 -fn_80068DE0 = .text:0x80068DE0; // type:function size:0x64 -fn_80068E50 = .text:0x80068E50; // type:function size:0x4 -fn_80068E60 = .text:0x80068E60; // type:function size:0x8 -fn_80068E70 = .text:0x80068E70; // type:function size:0xC -fn_80068E80__16ReloadColorFaderFv = .text:0x80068E80; // type:function size:0x6C -fn_80067EF0__16ReloadColorFaderFl = .text:0x80068EF0; // type:function size:0xC0 -fn_80068FB0 = .text:0x80068FB0; // type:function size:0x20 +ResetCallback__Q26dReset8Manage_cFv = .text:0x80068CE0; // type:function size:0x30 +PowerCallback__Q26dReset8Manage_cFv = .text:0x80068D10; // type:function size:0x30 +CleanUpGX__Q26dReset8Manage_cFv = .text:0x80068D40; // type:function size:0x88 +CleanUpLC__Q26dReset8Manage_cFv = .text:0x80068DD0; // type:function size:0x4 +MotorCancelOn__Q26dReset8Manage_cFv = .text:0x80068DE0; // type:function size:0x64 +MotorCancelOff__Q26dReset8Manage_cFv = .text:0x80068E50; // type:function size:0x4 +IsFatalError__Q26dReset8Manage_cFv = .text:0x80068E60; // type:function size:0x8 +IsDiskError__Q26dReset8Manage_cFv = .text:0x80068E70; // type:function size:0xC +FadeOutCalc__Q26dReset8Manage_cFv = .text:0x80068E80; // type:function size:0x6C +FadeOutRequest__Q26dReset8Manage_cFb = .text:0x80068EF0; // type:function size:0xC0 +__sinit_\d_reset_cpp = .text:0x80068FB0; // type:function size:0x20 scope:local __ct__22CurrentStageArcManagerFv = .text:0x80068FD0; // type:function size:0x54 __dt__22CurrentStageArcManagerFv = .text:0x80069030; // type:function size:0x64 init__22CurrentStageArcManagerFPQ23EGG4Heap = .text:0x800690A0; // type:function size:0x14 diff --git a/configure.py b/configure.py index 0e789eac..e7f491e7 100644 --- a/configure.py +++ b/configure.py @@ -411,7 +411,7 @@ config.libs = [ Object(Matching, "d/d_heap.cpp"), Object(NonMatching, "d/d_main.cpp"), Object(NonMatching, "d/d_pad.cpp"), - Object(NonMatching, "d/d_pad_ex.cpp"), + Object(Matching, "d/d_pad_ex.cpp"), Object(NonMatching, "d/d_pause_manager.cpp"), Object(NonMatching, "d/d_player_act.cpp"), Object(Matching, "d/d_player_mdl.cpp"), @@ -430,7 +430,7 @@ config.libs = [ Object(NonMatching, "toBeSorted/cx_util.cpp"), Object(NonMatching, "toBeSorted/area_math.cpp"), Object(NonMatching, "toBeSorted/deg_angle_util.cpp"), - Object(NonMatching, "toBeSorted/reload_color_fader.cpp"), + Object(NonMatching, "d/d_reset.cpp"), Object(Matching, "toBeSorted/arc_managers/current_stage_arc_manager.cpp"), Object(Matching, "toBeSorted/arc_managers/oarc_manager.cpp"), Object(NonMatching, "toBeSorted/arc_managers/oarc_control.cpp"), diff --git a/include/d/d_pad.h b/include/d/d_pad.h index 7b5f4f0c..29e10e48 100644 --- a/include/d/d_pad.h +++ b/include/d/d_pad.h @@ -115,7 +115,9 @@ public: /* 0x2284 */ s32 field_0x2284; /* 0x2288 */ s32 field_0x2288; /* 0x228C */ KPADUnifiedWpadStatus mStatus; - /* 0x22C0 */ u8 _0x22C0[0x22D0 - 0x22C4]; + /* 0x22C0 */ u8 _0x22C0[0x22CE - 0x22C4]; + /* 0x22CE */ bool field_0x22CE; + /* 0x22CF */ u8 _0x22CF[0x22D0 - 0x22CF]; /* 0x22D0 */ u8 field_0x22D0; /* 0x22D1 */ u8 field_0x22D1; /* 0x22D4 */ s32 field_0x22D4; diff --git a/include/d/d_player_act.h b/include/d/d_player_act.h index 0631bfdc..7c272127 100644 --- a/include/d/d_player_act.h +++ b/include/d/d_player_act.h @@ -607,6 +607,10 @@ public: return mRidingActorType; } + bool isAttacking() const { + return mAttackDirection != ATTACK_NONE; + } + static bool isInEvent(); bool isAttackingLeft() const; bool isAttackingRight() const; diff --git a/include/d/d_reset.h b/include/d/d_reset.h new file mode 100644 index 00000000..76ec7993 --- /dev/null +++ b/include/d/d_reset.h @@ -0,0 +1,97 @@ +#ifndef RELOAD_COLOR_FADER_H +#define RELOAD_COLOR_FADER_H + +#include "common.h" +#include "egg/core/eggFader.h" +#include "m/m_color.h" +namespace dReset { + +class Manage_c { +public: + enum Mode_c { + // TODO + }; + enum Exec_c { + // TODO + }; + + static Manage_c *GetInstance(); + + void Configure(); + void Reset(); + void Calculate(); + void Draw(); + void BootComplete(bool complete); + bool CanExecSoftReset() const; + void SetSoftResetFinish(); + void SetSoftResetScene(); + void PostDeleteScene(); + bool IsFaderBlank() const; + void SetHbmReturnMenu(); + void SetHbmReset(); + void SetDelayReset(); + void SetDelayPowerOff(); + void SetInteriorReturnDataManager(); + // fn_80067FF0 + void ExecProcPre(); + // fn_80068070 + void ExecProcMain(); + void DiskCheckModeRequest(); + void DebugPrintMode(const char *); + void ModeProc(); + void ModeRequest(Mode_c); + void ModeRequestSafetyWait(Exec_c); + void ModeRequestSoftReset(); + + void ModeInit_Normal(); + void ModeProc_Normal(); + + void ModtInit_SoftReset(); + void ModtProc_SoftReset(); + + void ModtInit_HbmWait(); + void ModtProc_HbmWait(); + + void ModtInit_DiscWait(); + void ModtProc_DiscWait(); + + void ModeInit_FatalError(); + void ModeProc_FatalError(); + + void ModeInit_SafetyWait(); + void ModeProc_SafetyWait(); + + void SetResetCallback(); + void SetPowerCallback(); + // fn_80068C70 + // fn_80068C90 + static void ResetCallback(); + static void PowerCallback(); + void CleanUpGX(); + void CleanUpLC(); + void MotorCancelOn(); + void MotorCancelOff(); + bool IsFatalError(); + bool IsDiskError(); + EGG::Fader::EStatus FadeOutCalc(); + void FadeOutRequest(bool fadeout); + + bool is1Or5() const { + return field_0x0C == 1 || field_0x0C == 5; + } + + s32 get0x0C() const { + return field_0x0C; + } + +private: + static Manage_c *s_pInstance; + static mColor c_faderColor; + + u8 field_0x00[0x0C - 0x00]; + s32 field_0x0C; +}; + +} // namespace dReset + +#endif diff --git a/include/rvl/KPAD/KPAD.h b/include/rvl/KPAD/KPAD.h index 849e7730..7c916fff 100644 --- a/include/rvl/KPAD/KPAD.h +++ b/include/rvl/KPAD/KPAD.h @@ -112,9 +112,15 @@ void KPADDisableMplsDirRevise(s32 chan); void KPADSetMplsDirReviseParam(s32 chan, f32); void KPADEnableMplsAccRevise(s32 chan); void KPADSetMplsAccReviseParam(s32 chan, f32, f32); + void KPADEnableMplsDpdRevise(s32 chan); +f32 KPADIsEnableMplsDpdRevise(s32 chan); +void KPADDisableMplsDpdRevise(s32 chan); void KPADSetMplsDpdReviseParam(s32 chan, f32); +typedef Vec KPADVec[3]; +void KPADSetMplsDirReviseBase(s32 chan, Vec *); + #ifdef __cplusplus } #endif diff --git a/include/toBeSorted/reload_color_fader.h b/include/toBeSorted/reload_color_fader.h deleted file mode 100644 index 55cb7c5a..00000000 --- a/include/toBeSorted/reload_color_fader.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef RELOAD_COLOR_FADER_H -#define RELOAD_COLOR_FADER_H - -#include "common.h" -class ReloadColorFader { -public: - static ReloadColorFader *GetInstance(); - void fn_80067ED0(); - void fn_80067EF0(s32); - void fn_80067F00(); - void fn_80067F50(); - void fn_80067FE0(); - bool fn_80068E80(); - bool fn_80067F60(); - void fn_80067DD0(bool); - - bool is1Or5() const { - return field_0x0C == 1 || field_0x0C == 5; - } - - u8 field_0x00[0x0C - 0x00]; - s32 field_0x0C; -}; - -#endif diff --git a/src/REL/d/d_s_boot.cpp b/src/REL/d/d_s_boot.cpp index 7cec6c7b..b83aefac 100644 --- a/src/REL/d/d_s_boot.cpp +++ b/src/REL/d/d_s_boot.cpp @@ -9,6 +9,7 @@ #include "d/d_gfx.h" #include "d/d_heap.h" #include "d/d_message.h" +#include "d/d_reset.h" #include "d/d_scene.h" #include "d/d_sys.h" #include "d/lyt/d_lyt_battery.h" @@ -27,11 +28,10 @@ #include "toBeSorted/arc_managers/layout_arc_manager.h" #include "toBeSorted/arc_managers/oarc_manager.h" #include "toBeSorted/d_d3d.h" -#include "toBeSorted/d_hbm.h" #include "toBeSorted/d_emitter.h" +#include "toBeSorted/d_hbm.h" #include "toBeSorted/d_particle.h" #include "toBeSorted/fi_context.h" -#include "toBeSorted/reload_color_fader.h" #include "toBeSorted/save_manager.h" #include "toBeSorted/save_related.h" #include "toBeSorted/special_item_drop_mgr.h" @@ -439,7 +439,7 @@ int dScBoot_c::doDelete() { SpecialItemDropMgr::create(); dHbm_c::GetInstance()->offFlags(8); dGfx_c::GetInstance()->setDrawCallback(nullptr); - ReloadColorFader::GetInstance()->fn_80067DD0(true); + dReset::Manage_c::GetInstance()->BootComplete(true); return SUCCEEDED; } @@ -499,7 +499,7 @@ void dScBoot_c::executeState_Strap() { case 1: if (!checkDone()) { bool ok = mStrapScreen.execute(); - if (ReloadColorFader::GetInstance()->field_0x0C == 1) { + if (dReset::Manage_c::GetInstance()->get0x0C() == 1) { ok = false; } diff --git a/src/d/d_dvd_drive_error.cpp b/src/d/d_dvd_drive_error.cpp index 8f1bdc91..e9056a47 100644 --- a/src/d/d_dvd_drive_error.cpp +++ b/src/d/d_dvd_drive_error.cpp @@ -2,12 +2,13 @@ #include "d/d_dvd_unk.h" #include "d/d_gfx.h" +#include "d/d_reset.h" #include "d/d_textunk.h" #include "egg/gfx/eggDrawGX.h" #include "egg/gfx/eggScreen.h" #include "m/m_mtx.h" #include "m/m_vec.h" -#include "toBeSorted/reload_color_fader.h" + /** 805750d0 */ dDvdDriveError_c *dDvdDriveError_c::sInstance; @@ -145,7 +146,7 @@ void dDvdDriveError_c::execute() { dDvdUnk::FontUnk::GetInstance()->fn_80052C60(); } } else if (mDvdDriveStatus == DVD_STATE_IDLE) { - if (!ReloadColorFader::GetInstance()->is1Or5()) { + if (!dReset::Manage_c::GetInstance()->is1Or5()) { mIsError = false; } } diff --git a/src/d/d_pad.cpp b/src/d/d_pad.cpp index e7ab853b..5b90deef 100644 --- a/src/d/d_pad.cpp +++ b/src/d/d_pad.cpp @@ -1,17 +1,19 @@ #include "d/d_pad.h" #include "common.h" +#include "d/a/d_a_player.h" #include "d/d_gfx.h" #include "d/snd/d_snd_player_mgr.h" #include "egg/core/eggController.h" #include "egg/core/eggHeap.h" +#include "m/m_angle.h" +#include "m/m_mtx.h" #include "m/m_pad.h" #include "m/m_vec.h" #include "rvl/KPAD/KPAD.h" +#include "rvl/MTX/vec.h" #include "rvl/WPAD/WPAD.h" -#include "rvl/WPAD.h" - namespace dPad { ex_c ex_c::m_ex[4]; @@ -118,14 +120,80 @@ void beginPad_BR() { } } - ex_c::m_ex[0].fn_800572A0(); + dPad::ex_c &ex = ex_c::m_ex[0]; + ex.fn_800572A0(); if (mPad::getCore(0)->isConnected()) { - ex_c::m_ex[0].getUnifiedWpadStatus(0); - ex_c::m_ex[0].fn_80059300(0); - ex_c::m_ex[0].fn_80056AF0(0); - ex_c::m_ex[0].fn_80056B90(0); - ex_c::m_ex[0].fn_80056CE0(0); - ex_c::m_ex[0].fn_80056DF0(0); + ex.getUnifiedWpadStatus(0); + ex.fn_80059300(0); + ex.fn_80056AF0(0); + ex.fn_80056B90(0); + ex.fn_80056CE0(0); + ex.fn_80056DF0(0); + bool isDpdReviseEnabled = KPADIsEnableMplsDpdRevise(0) >= 0.f; + if (ex.field_0x22CE) { + if (isDpdReviseEnabled) { + KPADDisableMplsDpdRevise(0); + } + } else { + if (!isDpdReviseEnabled) { + KPADEnableMplsDpdRevise(0); + } + } + ex.field_0x22CE = false; + + const dAcPy_c *player = dAcPy_c::GetLink(); + if (player && player->isAttacking()) { + mMtx_c m; + m.XrotS(mAng::deg2short(-30.f)); + mVec3_c baseZ; + KPADVec kpadvec; + baseZ.x = m.m[0][2]; + baseZ.y = m.m[1][2]; + baseZ.z = m.m[2][2]; + kpadvec[2].x = m.m[0][2]; + kpadvec[2].y = m.m[1][2]; + kpadvec[2].z = m.m[2][2]; + mVec3_c tmpCross; + VECCrossProduct(ex.field_0x2268, baseZ, tmpCross); + + if (0.05f < VECMag(tmpCross)) { + tmpCross.normalize(); + kpadvec[0].x = tmpCross.x; + kpadvec[0].y = tmpCross.y; + kpadvec[0].z = tmpCross.z; + } else { + kpadvec[0].x = baseZ.x; + kpadvec[0].y = baseZ.y; + kpadvec[0].z = baseZ.z; + } + tmpCross.x = kpadvec[0].x; + tmpCross.y = kpadvec[0].y; + tmpCross.z = kpadvec[0].z; + + mVec3_c tmpCross2; + VECCrossProduct(baseZ, tmpCross, tmpCross2); + if (VECMag(tmpCross2) > 0.05f) { + tmpCross2.normalize(); + kpadvec[1].x = tmpCross2.x; + kpadvec[1].y = tmpCross2.y; + kpadvec[1].z = tmpCross2.z; + } else { + kpadvec[1].x = baseZ.x; + kpadvec[1].y = baseZ.y; + kpadvec[1].z = baseZ.z; + } + tmpCross2.x = kpadvec[1].x; + tmpCross2.y = kpadvec[1].y; + tmpCross2.z = kpadvec[1].z; + + KPADSetMplsDirReviseBase(0, kpadvec); + KPADEnableMplsDpdRevise(0); + } else { + disableMplsDirRevise(0); + } + + KPADEnableMplsAccRevise(0); + KPADSetMplsAccReviseParam(0, 0.03f, 0.4f); } ex_c::m_current_ex = &ex_c::m_ex[mPad::getCurrentCoreID()]; diff --git a/src/d/d_reset.cpp b/src/d/d_reset.cpp new file mode 100644 index 00000000..da35de7a --- /dev/null +++ b/src/d/d_reset.cpp @@ -0,0 +1,14 @@ +#include "d/d_reset.h" + +#include "m/m_color.h" + +namespace dReset { + +Manage_c *Manage_c::s_pInstance; +mColor Manage_c::c_faderColor(0, 0, 0, 0xFF); + +Manage_c *Manage_c::GetInstance() { + return s_pInstance; +} + +} // namespace dReset diff --git a/src/d/d_rumble.cpp b/src/d/d_rumble.cpp index bc5dcd12..21c522a8 100644 --- a/src/d/d_rumble.cpp +++ b/src/d/d_rumble.cpp @@ -1,10 +1,11 @@ #include "d/d_rumble.h" #include "common.h" +#include "d/d_reset.h" #include "d/d_sc_game.h" #include "d/lyt/d_lyt_control_game.h" #include "m/m_pad.h" -#include "toBeSorted/reload_color_fader.h" + dRumbleEntry_c dRumble_c::sRumblePreset0(8, 0b11000000000000000000000000000000, 2.f); dRumbleEntry_c dRumble_c::sRumblePreset1(9, 0b11010000000000000000000000000000, 4.f); @@ -44,7 +45,7 @@ void dRumble_c::execute() { } // I am guessing on any reload screen or homebutton menu? - if (ReloadColorFader::GetInstance()->is1Or5()) { + if (dReset::Manage_c::GetInstance()->is1Or5()) { mPad::g_core[0]->stopRumbleMgr(); mPad::g_core[1]->stopRumbleMgr(); return; diff --git a/src/d/d_sc_title.cpp b/src/d/d_sc_title.cpp index 11fcbb41..f5ab20f8 100644 --- a/src/d/d_sc_title.cpp +++ b/src/d/d_sc_title.cpp @@ -5,6 +5,7 @@ #include "d/d_heap.h" #include "d/d_message.h" #include "d/d_pad.h" +#include "d/d_reset.h" #include "d/d_sc_game.h" #include "d/d_sys.h" #include "f/f_base.h" @@ -16,7 +17,6 @@ #include "toBeSorted/arc_managers/layout_arc_manager.h" #include "toBeSorted/file_manager.h" #include "toBeSorted/music_mgrs.h" -#include "toBeSorted/reload_color_fader.h" #include "toBeSorted/save_related.h" #include "toBeSorted/unk_save_time.h" @@ -74,16 +74,16 @@ static const char *const sSkb = "SoftwareKeyboard"; int dScTitle_c::create() { int ret = dScGame_c::create(); - if (ret == SUCCEEDED && ReloadColorFader::GetInstance()->field_0x0C == 1) { + if (ret == SUCCEEDED && dReset::Manage_c::GetInstance()->get0x0C() == 1) { if (field_0x2AC == 0) { - ReloadColorFader::GetInstance()->fn_80067EF0(0); + dReset::Manage_c::GetInstance()->FadeOutRequest(false); if (checkAllSaveFilesEmpty() != true) { TITLE_SCREEN_CHANGE = 0; } field_0x2AC = 1; ret = NOT_READY; } else { - ReloadColorFader::GetInstance()->fn_80067EF0(1); + dReset::Manage_c::GetInstance()->FadeOutRequest(true); } } diff --git a/src/d/d_scene.cpp b/src/d/d_scene.cpp index 3a5bb4a0..0a8fa4a4 100644 --- a/src/d/d_scene.cpp +++ b/src/d/d_scene.cpp @@ -2,11 +2,11 @@ #include "common.h" #include "d/d_base.h" +#include "d/d_reset.h" #include "d/d_rumble.h" #include "f/f_base.h" #include "f/f_profile_name.h" #include "m/m_fader_base.h" -#include "toBeSorted/reload_color_fader.h" static u16 RootActorID = fProfile::PROFILE_MAX; static u32 RootActorParams = 0; @@ -27,7 +27,7 @@ dScene_c::dScene_c() { void dScene_c::postCreate(MAIN_STATE_e state) { if (state == SUCCESS) { - ReloadColorFader::GetInstance()->fn_80067ED0(); + dReset::Manage_c::GetInstance()->SetSoftResetFinish(); } dBase_c::postCreate(state); } @@ -35,7 +35,7 @@ void dScene_c::postCreate(MAIN_STATE_e state) { void dScene_c::postDelete(MAIN_STATE_e state) { if (state == SUCCESS) { gameStateIsActive = false; - ReloadColorFader::GetInstance()->fn_80067F50(); + dReset::Manage_c::GetInstance()->PostDeleteScene(); } dBase_c::postDelete(state); } @@ -69,7 +69,7 @@ int dScene_c::preExecute() { void dScene_c::postExecute(MAIN_STATE_e status) { if (status != CANCELED) { - ReloadColorFader::GetInstance()->fn_80067F00(); + dReset::Manage_c::GetInstance()->SetSoftResetScene(); } dBase_c::postExecute(status); if (proc_control & ROOT_DISABLE_EXECUTE) { diff --git a/src/toBeSorted/save_manager.cpp b/src/toBeSorted/save_manager.cpp index 4c9b9210..4a36f28a 100644 --- a/src/toBeSorted/save_manager.cpp +++ b/src/toBeSorted/save_manager.cpp @@ -6,6 +6,7 @@ #include "d/d_dvd_unk.h" #include "d/d_heap.h" #include "d/d_message.h" +#include "d/d_reset.h" #include "d/d_s_boot.h" #include "d/d_sc_game.h" #include "d/d_sys.h" @@ -18,7 +19,6 @@ #include "toBeSorted/file_manager.h" #include "toBeSorted/nand_request_thread.h" #include "toBeSorted/nand_result_tracker.h" -#include "toBeSorted/reload_color_fader.h" #include "rvl/NAND.h" #include "rvl/TPL.h" @@ -1437,10 +1437,9 @@ void SaveMgr::executeNandError() { } case 6: { if (systemWindow->getField_0xE10() != 0) { - if (!ReloadColorFader::GetInstance()->fn_80068E80() && - !ReloadColorFader::GetInstance()->fn_80067F60() && - mPad::g_currentCore->downTrigger(/* A */ 0x800) && systemWindow->getField_0xDE0() != 2 && - systemWindow->fn_80152F60() == true) { + if (!dReset::Manage_c::GetInstance()->FadeOutCalc() && + !dReset::Manage_c::GetInstance()->IsFaderBlank() && mPad::getCore()->downTrigger(mPad::BUTTON_A) && + systemWindow->getField_0xDE0() != 2 && systemWindow->fn_80152F60() == true) { mStep = 7; } } @@ -1457,7 +1456,7 @@ void SaveMgr::executeNandError() { mStep = 9; } else { dCsBase_c::GetInstance()->setField704(false); - ReloadColorFader::GetInstance()->fn_80067FE0(); + dReset::Manage_c::GetInstance()->SetInteriorReturnDataManager(); endState(); field_0x836 = 0; }