mirror of
https://github.com/zeldaret/ss
synced 2026-07-11 14:48:32 -04:00
d_reset almost fully matching
This commit is contained in:
@@ -340,7 +340,11 @@ toBeSorted/deg_angle_util.cpp:
|
||||
d/d_reset.cpp:
|
||||
.text start:0x80067B20 end:0x80068FD0 align:16
|
||||
.ctors start:0x804DB6A4 end:0x804DB6A8
|
||||
.rodata start:0x804E0F18 end:0x804E0FA8
|
||||
.data start:0x8050DFB0 end:0x8050DFE0
|
||||
.sdata start:0x80571D20 end:0x80571D30
|
||||
.sbss start:0x80575270 end:0x80575278
|
||||
.sdata2 start:0x805779E8 end:0x805779F8
|
||||
|
||||
toBeSorted/arc_managers/current_stage_arc_manager.cpp:
|
||||
.text start:0x80068FD0 end:0x80069910 align:16
|
||||
|
||||
+28
-28
@@ -2155,9 +2155,9 @@ fn_800527F0 = .text:0x800527F0; // type:function size:0x11C
|
||||
fn_80052910 = .text:0x80052910; // type:function size:0x48
|
||||
fn_80052960 = .text:0x80052960; // type:function size:0x18
|
||||
init__Q27dDvdUnk7FontUnkFv = .text:0x80052980; // type:function size:0x30
|
||||
fn_800529B0 = .text:0x800529B0; // type:function size:0x30
|
||||
fn_800529E0 = .text:0x800529E0; // type:function size:0x38
|
||||
fn_80052A20 = .text:0x80052A20; // type:function size:0xB8
|
||||
fn_800529B0__Q27dDvdUnk7FontUnkFv = .text:0x800529B0; // type:function size:0x30
|
||||
fn_800529E0__Q27dDvdUnk7FontUnkFv = .text:0x800529E0; // type:function size:0x38
|
||||
fn_80052A20__Q27dDvdUnk7FontUnkFv = .text:0x80052A20; // type:function size:0xB8
|
||||
fn_80052AE0 = .text:0x80052AE0; // type:function size:0x148
|
||||
fn_80052C30 = .text:0x80052C30; // type:function size:0x24
|
||||
fn_80052C60__Q27dDvdUnk7FontUnkFv = .text:0x80052C60; // type:function size:0x24
|
||||
@@ -2945,11 +2945,11 @@ 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_80067FF0__Q26dReset8Manage_cFv = .text:0x80067FF0; // type:function size:0x3C
|
||||
ExecProcPre__Q26dReset8Manage_cFv = .text:0x80068030; // type:function size:0x34
|
||||
fn_80068070 = .text:0x80068070; // type:function size:0x4
|
||||
fn_80068070__Q26dReset8Manage_cFv = .text:0x80068070; // type:function size:0x4
|
||||
ExecProcMain__Q26dReset8Manage_cFv = .text:0x80068080; // type:function size:0x48
|
||||
DiskCheckModeRequest__Q26dReset8Manage_cFv = .text:0x800680D0; // type:function size:0xC8
|
||||
DiskCheckModeRequest__Q26dReset8Manage_cFb = .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
|
||||
@@ -2969,8 +2969,8 @@ ModeInit_SafetyWait__Q26dReset8Manage_cFv = .text:0x80068B00; // type:function s
|
||||
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
|
||||
SetDiskCheckCallback__Q26dReset8Manage_cFv = .text:0x80068C70; // type:function size:0x18
|
||||
DiskCheckCallback__Q26dReset8Manage_cFlP11DVDFileInfo = .text:0x80068C90; // type:function size:0x48
|
||||
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
|
||||
@@ -8513,13 +8513,13 @@ create__18dLytSystemWindow_cFv = .text:0x80152DE0; // type:function size:0x3C
|
||||
fn_80152E20 = .text:0x80152E20; // type:function size:0xC8
|
||||
fn_80152EF0 = .text:0x80152EF0; // type:function size:0x8
|
||||
fn_80152F00 = .text:0x80152F00; // type:function size:0x8
|
||||
fn_80152F10 = .text:0x80152F10; // type:function size:0x10
|
||||
fn_80152F10__18dLytSystemWindow_cFv = .text:0x80152F10; // type:function size:0x10
|
||||
fn_80152F20 = .text:0x80152F20; // type:function size:0x18
|
||||
setProperties__18dLytSystemWindow_cFPCcbPCw = .text:0x80152F40; // type:function size:0x8
|
||||
fn_80152F50__18dLytSystemWindow_cCFv = .text:0x80152F50; // type:function size:0x8
|
||||
fn_80152F60__18dLytSystemWindow_cCFv = .text:0x80152F60; // type:function size:0x8
|
||||
fn_80152F70__18dLytSystemWindow_cCFv = .text:0x80152F70; // type:function size:0x8
|
||||
fn_80152F80 = .text:0x80152F80; // type:function size:0x8
|
||||
fn_80152F80__18dLytSystemWindow_cCFv = .text:0x80152F80; // type:function size:0x8
|
||||
getField_0xDE0__18dLytSystemWindow_cCFv = .text:0x80152F90; // type:function size:0x8
|
||||
showMaybe__18dLytSystemWindow_cFl = .text:0x80152FA0; // type:function size:0x8
|
||||
showMaybe__18dLytSystemWindow_cFv = .text:0x80152FB0; // type:function size:0x8
|
||||
@@ -10512,9 +10512,9 @@ IconInit__Q24dHbm8Manage_cFv = .text:0x801971A0; // type:function size:0x44
|
||||
IconCalc__Q24dHbm8Manage_cFv = .text:0x801971F0; // type:function size:0x148
|
||||
IconClear__Q24dHbm8Manage_cFv = .text:0x80197340; // type:function size:0x14
|
||||
StopMotor__Q24dHbm8Manage_cFv = .text:0x80197360; // type:function size:0x5C
|
||||
fn_801973C0 = .text:0x801973C0; // type:function size:0x58
|
||||
fn_801973C0__Q24dHbm8Manage_cFl = .text:0x801973C0; // type:function size:0x58
|
||||
ForbidCalc__Q24dHbm8Manage_cFv = .text:0x80197420; // type:function size:0x140
|
||||
fn_80197560__6dHbm_cFl = .text:0x80197560; // type:function size:0x28
|
||||
fn_80197560__Q24dHbm8Manage_cFl = .text:0x80197560; // type:function size:0x28
|
||||
fn_80197590 = .text:0x80197590; // type:function size:0x28
|
||||
dStageMgr_c_classInit__Fv = .text:0x801975C0; // type:function size:0x34
|
||||
fn_80197600 = .text:0x80197600; // type:function size:0xA0
|
||||
@@ -19940,11 +19940,11 @@ getFreeSize__15dSndPlayerMgr_cFv = .text:0x8035DF60; // type:function size:0x54
|
||||
fn_8035DFC0 = .text:0x8035DFC0; // type:function size:0x3C
|
||||
fn_8035E000 = .text:0x8035E000; // type:function size:0xD4
|
||||
fn_8035E0E0 = .text:0x8035E0E0; // type:function size:0xCC
|
||||
fn_8035E1B0 = .text:0x8035E1B0; // type:function size:0x68
|
||||
fn_8035E220 = .text:0x8035E220; // type:function size:0x2C
|
||||
fn_8035E250 = .text:0x8035E250; // type:function size:0x8C
|
||||
fn_8035E2E0 = .text:0x8035E2E0; // type:function size:0x2C
|
||||
fn_8035E310 = .text:0x8035E310; // type:function size:0x50
|
||||
fn_8035E1B0__15dSndPlayerMgr_cFUs = .text:0x8035E1B0; // type:function size:0x68
|
||||
fn_8035E220__15dSndPlayerMgr_cFv = .text:0x8035E220; // type:function size:0x2C
|
||||
fn_8035E250__15dSndPlayerMgr_cFUs = .text:0x8035E250; // type:function size:0x8C
|
||||
fn_8035E2E0__15dSndPlayerMgr_cFv = .text:0x8035E2E0; // type:function size:0x2C
|
||||
fn_8035E310__15dSndPlayerMgr_cFv = .text:0x8035E310; // type:function size:0x50
|
||||
enterPauseState__15dSndPlayerMgr_cFv = .text:0x8035E360; // type:function size:0x70
|
||||
leavePauseState__15dSndPlayerMgr_cFv = .text:0x8035E3D0; // type:function size:0x70
|
||||
enterMenu__15dSndPlayerMgr_cFv = .text:0x8035E440; // type:function size:0x2C
|
||||
@@ -19956,7 +19956,7 @@ fn_8035E560 = .text:0x8035E560; // type:function size:0x18
|
||||
fn_8035E580 = .text:0x8035E580; // type:function size:0x50
|
||||
fn_8035E5D0 = .text:0x8035E5D0; // type:function size:0x44
|
||||
fn_8035E620 = .text:0x8035E620; // type:function size:0xB4
|
||||
fn_8035E6E0 = .text:0x8035E6E0; // type:function size:0xA4
|
||||
fn_8035E6E0__15dSndPlayerMgr_cFv = .text:0x8035E6E0; // type:function size:0xA4
|
||||
fn_8035E790 = .text:0x8035E790; // type:function size:0x84
|
||||
fn_8035E820 = .text:0x8035E820; // type:function size:0x38
|
||||
fn_8035E860 = .text:0x8035E860; // type:function size:0x14
|
||||
@@ -22009,12 +22009,12 @@ OSGetSaveRegion = .text:0x803AAE20; // type:function size:0x14
|
||||
OSRegisterShutdownFunction = .text:0x803AAE40; // type:function size:0x88 scope:global
|
||||
__OSCallShutdownFunctions = .text:0x803AAED0; // type:function size:0xB0
|
||||
__OSShutdownDevices = .text:0x803AAF80; // type:function size:0x180 scope:global
|
||||
fn_803AB100 = .text:0x803AB100; // type:function size:0xE0
|
||||
fn_803AB1E0 = .text:0x803AB1E0; // type:function size:0x11C
|
||||
fn_803AB300 = .text:0x803AB300; // type:function size:0xD4
|
||||
OSRebootSystem = .text:0x803AB100; // type:function size:0xE0
|
||||
OSShutdownSystem = .text:0x803AB1E0; // type:function size:0x11C
|
||||
OSRestart = .text:0x803AB300; // type:function size:0xD4
|
||||
__OSReturnToMenu = .text:0x803AB3E0; // type:function size:0x288 scope:local
|
||||
OSReturnToMenu = .text:0x803AB670; // type:function size:0x40 scope:global
|
||||
fn_803AB6B0 = .text:0x803AB6B0; // type:function size:0x40
|
||||
OSReturnToDataManager = .text:0x803AB6B0; // type:function size:0x40
|
||||
fn_803AB6F0 = .text:0x803AB6F0; // type:function size:0xA4
|
||||
fn_803AB7A0 = .text:0x803AB7A0; // type:function size:0x58
|
||||
OSGetResetCode = .text:0x803AB800; // type:function size:0x30 scope:global
|
||||
@@ -22070,8 +22070,8 @@ OSUTF32toSJIS = .text:0x803AE130; // type:function size:0x40
|
||||
__OSGetIPCBufferHi = .text:0x803AE170; // type:function size:0x8
|
||||
__OSGetIPCBufferLo = .text:0x803AE180; // type:function size:0x8
|
||||
__OSInitIPCBuffer = .text:0x803AE190; // type:function size:0x18 scope:global
|
||||
fn_803AE1B0 = .text:0x803AE1B0; // type:function size:0xEC
|
||||
fn_803AE2A0 = .text:0x803AE2A0; // type:function size:0xEC
|
||||
OSSetResetCallback = .text:0x803AE1B0; // type:function size:0xEC
|
||||
OSSetPowerCallback = .text:0x803AE2A0; // type:function size:0xEC
|
||||
__OSInitSTM = .text:0x803AE390; // type:function size:0x118 scope:global
|
||||
fn_803AE4B0 = .text:0x803AE4B0; // type:function size:0x7C
|
||||
__OSHotReset = .text:0x803AE530; // type:function size:0x74 scope:global
|
||||
@@ -28214,8 +28214,8 @@ lbl_804E0E3C = .rodata:0x804E0E3C; // type:object size:0x3C
|
||||
lbl_804E0E78 = .rodata:0x804E0E78; // type:object size:0x3C
|
||||
lbl_804E0EB4 = .rodata:0x804E0EB4; // type:object size:0x3C
|
||||
lbl_804E0EF0 = .rodata:0x804E0EF0; // type:object size:0x28
|
||||
lbl_804E0F18 = .rodata:0x804E0F18; // type:object size:0x48
|
||||
lbl_804E0F60 = .rodata:0x804E0F60; // type:object size:0x48
|
||||
@LOCAL@ModeProc__Q26dReset8Manage_cFv@procs = .rodata:0x804E0F18; // type:object size:0x48
|
||||
@LOCAL@ModeRequest__Q26dReset8Manage_cFQ36dReset8Manage_c6Mode_e@procs = .rodata:0x804E0F60; // type:object size:0x48
|
||||
sInfos = .rodata:0x804E0FA8; // type:object size:0x246C scope:local data:4byte
|
||||
lbl_804E3418 = .rodata:0x804E3418; // type:object size:0x40 data:4byte
|
||||
lbl_804E3458 = .rodata:0x804E3458; // type:object size:0x38 data:4byte
|
||||
@@ -41338,7 +41338,7 @@ sInstance__18ArcCallbackHandler = .sbss:0x80575250; // type:object size:0x8 data
|
||||
aspectRatio = .sbss:0x80575258; // type:object size:0x4 align:4 data:float
|
||||
sInstance__8dCsMgr_c = .sbss:0x80575260; // type:object size:0x4 data:4byte
|
||||
spInstance__9dRumble_c = .sbss:0x80575268; // type:object size:0x4 data:4byte
|
||||
c_faderColor__Q26dReset8Manage_c = .sbss:0x80575270; // type:object size:0x1 data:byte
|
||||
c_faderColor__Q26dReset8Manage_c = .sbss:0x80575270; // type:object size:0x4 data:byte
|
||||
s_pInstance__Q26dReset8Manage_c = .sbss:0x80575274; // type:object size:0x4 data:4byte
|
||||
sInstance__22CurrentStageArcManager = .sbss:0x80575278; // type:object size:0x4 data:4byte
|
||||
@GUARD@getCurrentStageDirectory__22CurrentStageArcManagerFv@sStageDirTmp = .sbss:0x8057527C; // type:object size:0x1 scope:local data:byte
|
||||
@@ -41524,7 +41524,7 @@ lbl_805756A0 = .sbss:0x805756A0; // type:object size:0x4 data:4byte
|
||||
lbl_805756A4 = .sbss:0x805756A4; // type:object size:0x4 data:4byte
|
||||
sInstance__19GoddessChestCounter = .sbss:0x805756A8; // type:object size:0x8 data:4byte
|
||||
sInstance__9dScBoot_c = .sbss:0x805756B0; // type:object size:0x4 data:4byte
|
||||
lbl_805756B4 = .sbss:0x805756B4; // type:object size:0x4 data:4byte
|
||||
sInstance__11dTitleMgr_c = .sbss:0x805756B4; // type:object size:0x4 data:4byte
|
||||
TITLE_SCREEN_CHANGE = .sbss:0x805756B8; // type:object size:0x4 data:4byte
|
||||
sInstance__10dTgSiren_c = .sbss:0x805756BC; // type:object size:0x4 data:4byte
|
||||
WEATHER_TAG = .sbss:0x805756C0; // type:object size:0x8 data:4byte
|
||||
|
||||
@@ -28,6 +28,9 @@ public:
|
||||
void setField704(bool val) {
|
||||
field_0x704 = val;
|
||||
}
|
||||
void setField705(bool val) {
|
||||
field_0x705 = val;
|
||||
}
|
||||
|
||||
dCursorHitCheck_c *getHitCheck() {
|
||||
return mCursorIf.getHit();
|
||||
|
||||
@@ -21,6 +21,9 @@ public:
|
||||
static void create(EGG::Heap *heap);
|
||||
void init();
|
||||
|
||||
void fn_800529B0();
|
||||
void fn_800529E0();
|
||||
void fn_80052A20();
|
||||
void fn_80052D00(bool);
|
||||
void fn_80052D50();
|
||||
void fn_80052C90();
|
||||
@@ -30,7 +33,7 @@ public:
|
||||
return field_0x24;
|
||||
}
|
||||
|
||||
u8 getField_0x28() const {
|
||||
bool getField_0x28() const {
|
||||
return field_0x28;
|
||||
}
|
||||
|
||||
@@ -53,7 +56,7 @@ private:
|
||||
/* 0x1C */ s32 field_0x1C;
|
||||
/* 0x20 */ s32 field_0x20;
|
||||
/* 0x24 */ s32 field_0x24;
|
||||
/* 0x28 */ u8 field_0x28;
|
||||
/* 0x28 */ bool field_0x28;
|
||||
/* 0x29 */ u8 field_0x29;
|
||||
/* 0x2A */ u8 field_0x2A;
|
||||
/* 0x2B */ u8 field_0x2B;
|
||||
|
||||
+11
-2
@@ -1,4 +1,5 @@
|
||||
|
||||
#include "common.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
namespace dHbm {
|
||||
class Manage_c {
|
||||
@@ -28,6 +29,7 @@ public:
|
||||
void IconCalc();
|
||||
void IconClear();
|
||||
void StopMotor();
|
||||
bool fn_801973C0(s32);
|
||||
void ForbidCalc();
|
||||
|
||||
s32 fn_80197560(s32);
|
||||
@@ -35,9 +37,16 @@ public:
|
||||
mFlags &= ~flags;
|
||||
}
|
||||
|
||||
UNKWORD getField_0x210() const {
|
||||
return field_0x210;
|
||||
}
|
||||
|
||||
private:
|
||||
static Manage_c *s_pInstance;
|
||||
u8 _0x00[0x218 - 0x000];
|
||||
u32 mFlags;
|
||||
|
||||
/* 0x000 */ u8 _0x00[0x210 - 0x000];
|
||||
/* 0x210 */ UNKWORD field_0x210;
|
||||
/* 0x218 */ UNKWORD field_0x214;
|
||||
/* 0x218 */ u32 mFlags;
|
||||
};
|
||||
} // namespace dHbm
|
||||
|
||||
+75
-27
@@ -2,20 +2,34 @@
|
||||
#define RELOAD_COLOR_FADER_H
|
||||
|
||||
#include "common.h"
|
||||
#include "egg/core/eggColorFader.h"
|
||||
#include "egg/core/eggFader.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
#include "m/m_color.h"
|
||||
namespace dReset {
|
||||
|
||||
class Manage_c {
|
||||
public:
|
||||
enum Mode_c {
|
||||
// TODO
|
||||
enum Mode_e {
|
||||
Normal = 0,
|
||||
SoftReset = 1,
|
||||
HbmWait = 2,
|
||||
DiskWait = 3,
|
||||
FatalError = 4,
|
||||
SafetyWait = 5,
|
||||
};
|
||||
enum Exec_c {
|
||||
// TODO
|
||||
enum Exec_e {
|
||||
Restart = 0,
|
||||
Reboot = 1,
|
||||
ReturnToMenu = 2,
|
||||
ReturnToDataManager = 3,
|
||||
Shutdown = 4,
|
||||
ExecNone = 5,
|
||||
};
|
||||
|
||||
static void CreateInstance(EGG::Heap *);
|
||||
static Manage_c *GetInstance();
|
||||
Manage_c(EGG::Heap *);
|
||||
|
||||
void Configure();
|
||||
void Reset();
|
||||
@@ -32,28 +46,28 @@ public:
|
||||
void SetDelayReset();
|
||||
void SetDelayPowerOff();
|
||||
void SetInteriorReturnDataManager();
|
||||
// fn_80067FF0
|
||||
void fn_80067FF0();
|
||||
void ExecProcPre();
|
||||
// fn_80068070
|
||||
void fn_80068070();
|
||||
void ExecProcMain();
|
||||
void DiskCheckModeRequest();
|
||||
void DiskCheckModeRequest(bool);
|
||||
void DebugPrintMode(const char *);
|
||||
void ModeProc();
|
||||
void ModeRequest(Mode_c);
|
||||
void ModeRequestSafetyWait(Exec_c);
|
||||
void ModeRequest(Mode_e);
|
||||
void ModeRequestSafetyWait(Exec_e);
|
||||
void ModeRequestSoftReset();
|
||||
|
||||
void ModeInit_Normal();
|
||||
void ModeProc_Normal();
|
||||
|
||||
void ModtInit_SoftReset();
|
||||
void ModtProc_SoftReset();
|
||||
void ModeInit_SoftReset();
|
||||
void ModeProc_SoftReset();
|
||||
|
||||
void ModtInit_HbmWait();
|
||||
void ModtProc_HbmWait();
|
||||
void ModeInit_HbmWait();
|
||||
void ModeProc_HbmWait();
|
||||
|
||||
void ModtInit_DiscWait();
|
||||
void ModtProc_DiscWait();
|
||||
void ModeInit_DiskWait();
|
||||
void ModeProc_DiskWait();
|
||||
|
||||
void ModeInit_FatalError();
|
||||
void ModeProc_FatalError();
|
||||
@@ -63,33 +77,67 @@ public:
|
||||
|
||||
void SetResetCallback();
|
||||
void SetPowerCallback();
|
||||
// fn_80068C70
|
||||
// fn_80068C90
|
||||
void SetDiskCheckCallback();
|
||||
static void DiskCheckCallback(s32 b, struct DVDFileInfo *info);
|
||||
static void ResetCallback();
|
||||
static void PowerCallback();
|
||||
void CleanUpGX();
|
||||
void CleanUpLC();
|
||||
void MotorCancelOn();
|
||||
void MotorCancelOff();
|
||||
bool IsFatalError();
|
||||
bool IsDiskError();
|
||||
EGG::Fader::EStatus FadeOutCalc();
|
||||
static bool IsFatalError();
|
||||
static bool IsDiskError();
|
||||
bool FadeOutCalc();
|
||||
void FadeOutRequest(bool fadeout);
|
||||
|
||||
bool is1Or5() const {
|
||||
return field_0x0C == 1 || field_0x0C == 5;
|
||||
bool isSoftResetOrSafetyWait() const {
|
||||
return mMode == SoftReset || mMode == SafetyWait;
|
||||
}
|
||||
|
||||
s32 get0x0C() const {
|
||||
return field_0x0C;
|
||||
bool isNormal() const {
|
||||
return mMode == Normal;
|
||||
}
|
||||
bool isSoftReset() const {
|
||||
return mMode == SoftReset;
|
||||
}
|
||||
bool isHbmWait() const {
|
||||
return mMode == HbmWait;
|
||||
}
|
||||
bool isDiskWait() const {
|
||||
return mMode == DiskWait;
|
||||
}
|
||||
bool isFatalError() const {
|
||||
return mMode == FatalError;
|
||||
}
|
||||
bool isSafetyWait() const {
|
||||
return mMode == SafetyWait;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x00 */ EGG::Heap *mpHeap;
|
||||
/* 0x04 */ EGG::ColorFader *mpFader;
|
||||
/* 0x08 */ EGG::ColorFader::EStatus mFaderStatusPrev;
|
||||
/* 0x0C */ Mode_e mMode;
|
||||
/* 0x10 */ UNKWORD field_0x10;
|
||||
/* 0x14 */ Mode_e mModePrev;
|
||||
/* 0x18 */ Exec_e mExec;
|
||||
/* 0x1C */ UNKWORD field_0x1C;
|
||||
/* 0x20 */ DVDCommandBlock mDvdCmd;
|
||||
/* 0x50 */ bool mHbmReset;
|
||||
/* 0x51 */ bool mHbmReturnMenu;
|
||||
/* 0x52 */ bool mRestart;
|
||||
/* 0x53 */ bool mShutdown;
|
||||
/* 0x54 */ bool mInteriorReturnDataManager;
|
||||
/* 0x58 */ UNKWORD field_0x58;
|
||||
/* 0x5C */ UNKWORD field_0x5C;
|
||||
/* 0x60 */ UNKWORD field_0x60;
|
||||
/* 0x64 */ u8 mBootComplete;
|
||||
/* 0x65 */ u8 mSoftReset;
|
||||
/* 0x66 */ u8 field_0x66;
|
||||
/* 0x67 */ u8 field_0x67;
|
||||
|
||||
static Manage_c *s_pInstance;
|
||||
static mColor c_faderColor;
|
||||
|
||||
u8 field_0x00[0x0C - 0x00];
|
||||
s32 field_0x0C;
|
||||
};
|
||||
|
||||
} // namespace dReset
|
||||
|
||||
@@ -24,6 +24,25 @@ public:
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
u8 getField_0x5E2() const {
|
||||
return field_0x5E2;
|
||||
}
|
||||
void setField_0x5E2(u8 val) {
|
||||
field_0x5E2 = val;
|
||||
}
|
||||
u8 getField_0x5E3() const {
|
||||
return field_0x5E3;
|
||||
}
|
||||
void setField_0x5E3(u8 val) {
|
||||
field_0x5E3 = val;
|
||||
}
|
||||
u8 getField_0x5E4() const {
|
||||
return field_0x5E4;
|
||||
}
|
||||
void setField_0x5E4(u8 val) {
|
||||
field_0x5E4 = val;
|
||||
}
|
||||
|
||||
private:
|
||||
static dScBoot_c *sInstance;
|
||||
class strap_c {
|
||||
|
||||
@@ -17,7 +17,18 @@ public:
|
||||
STATE_FUNC_DECLARE(dTitleMgr_c, FileSelect);
|
||||
STATE_FUNC_DECLARE(dTitleMgr_c, Input);
|
||||
|
||||
static dTitleMgr_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
u8 getField_0xBC() const {
|
||||
return field_0xBC;
|
||||
}
|
||||
|
||||
private:
|
||||
static dTitleMgr_c *sInstance;
|
||||
/* 0x68 */ u8 _0x68[0xBC - 0x68];
|
||||
/* 0xBC */ u8 field_0xBC;
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dTitleMgr_c);
|
||||
};
|
||||
|
||||
|
||||
@@ -23,9 +23,11 @@ public:
|
||||
|
||||
s32 getField_0xDE0() const;
|
||||
bool getField_0xDFC() const;
|
||||
void fn_80152F10();
|
||||
bool fn_80152F50() const;
|
||||
bool fn_80152F60() const;
|
||||
bool fn_80152F70() const;
|
||||
bool fn_80152F80() const;
|
||||
|
||||
private:
|
||||
static dLytSystemWindow_c *sInstance;
|
||||
|
||||
@@ -39,6 +39,13 @@ public:
|
||||
void enterHbm();
|
||||
void leaveHbm();
|
||||
|
||||
void fn_8035E1B0(u16);
|
||||
bool fn_8035E220();
|
||||
void fn_8035E250(u16);
|
||||
bool fn_8035E2E0();
|
||||
void fn_8035E310();
|
||||
void fn_8035E6E0();
|
||||
|
||||
u32 getFreeSize();
|
||||
bool loadDemoArchive(const char *demoArchiveName);
|
||||
const char *getSoundArchivePath();
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#include "common.h"
|
||||
#include "egg/core/eggFader.h"
|
||||
#include "egg/prim/eggBitFlag.h"
|
||||
#include "nw4r/ut.h"
|
||||
|
||||
#include "nw4r/ut.h"
|
||||
|
||||
namespace EGG {
|
||||
|
||||
@@ -20,7 +20,7 @@ public:
|
||||
/* vt 0x14 */ virtual bool fadeOut();
|
||||
/* vt 0x18 */ virtual bool calc();
|
||||
/* vt 0x1C */ virtual void draw();
|
||||
/* vt 0x1C */ virtual ~ColorFader() {}
|
||||
/* vt 0x20 */ virtual ~ColorFader() {}
|
||||
|
||||
public:
|
||||
/* 0x04 */ EStatus mStatus;
|
||||
|
||||
+4
-1
@@ -25,9 +25,12 @@ enum Button {
|
||||
BUTTON_C = 0x4000,
|
||||
};
|
||||
|
||||
inline EGG::CoreController *getCore(int i) {
|
||||
inline EGG::CoreController *getCore(const int i) {
|
||||
return g_core[i];
|
||||
}
|
||||
inline void stopRumbleMgr(int i) {
|
||||
g_core[i]->stopRumbleMgr();
|
||||
}
|
||||
inline EGG::CoreController *getCore() {
|
||||
return g_currentCore;
|
||||
}
|
||||
|
||||
+20
-20
@@ -22,30 +22,29 @@ typedef enum {
|
||||
DVD_RESULT_OK,
|
||||
} DVDResult;
|
||||
|
||||
#define DVD_ESUCCESS DVD_RESULT_OK
|
||||
#define DVD_EFATAL DVD_RESULT_FATAL
|
||||
#define DVD_ECANCELED DVD_RESULT_CANCELED
|
||||
#define DVD_ECOVER DVD_RESULT_COVER_CLOSED
|
||||
#define DVD_ESUCCESS DVD_RESULT_OK
|
||||
#define DVD_EFATAL DVD_RESULT_FATAL
|
||||
#define DVD_ECANCELED DVD_RESULT_CANCELED
|
||||
#define DVD_ECOVER DVD_RESULT_COVER_CLOSED
|
||||
|
||||
typedef long DVDState;
|
||||
enum DVDState_et
|
||||
{
|
||||
DVD_STATE_IDLE = 0,
|
||||
enum DVDState_et {
|
||||
DVD_STATE_IDLE = 0,
|
||||
|
||||
DVD_STATE_BUSY = 1,
|
||||
DVD_STATE_WAITING = 2,
|
||||
DVD_STATE_COVER_CLOSED = 3,
|
||||
DVD_STATE_NO_DISK = 4,
|
||||
DVD_STATE_COVER_OPENED = 5,
|
||||
DVD_STATE_WRONG_DISK_ID = 6,
|
||||
DVD_STATE_7 = 7,
|
||||
DVD_STATE_PAUSED = 8,
|
||||
DVD_STATE_9 = 9,
|
||||
DVD_STATE_CANCELED = 10,
|
||||
DVD_STATE_DISK_ERROR = 11,
|
||||
DVD_STATE_MOTOR_STOPPED = 12,
|
||||
DVD_STATE_BUSY = 1,
|
||||
DVD_STATE_WAITING = 2,
|
||||
DVD_STATE_COVER_CLOSED = 3,
|
||||
DVD_STATE_NO_DISK = 4,
|
||||
DVD_STATE_COVER_OPENED = 5,
|
||||
DVD_STATE_WRONG_DISK_ID = 6,
|
||||
DVD_STATE_7 = 7,
|
||||
DVD_STATE_PAUSED = 8,
|
||||
DVD_STATE_9 = 9,
|
||||
DVD_STATE_CANCELED = 10,
|
||||
DVD_STATE_DISK_ERROR = 11,
|
||||
DVD_STATE_MOTOR_STOPPED = 12,
|
||||
|
||||
DVD_STATE_FATAL = -1,
|
||||
DVD_STATE_FATAL = -1,
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
@@ -110,6 +109,7 @@ s32 DVDGetDriveStatus(void);
|
||||
void DVDPause(void);
|
||||
void DVDResume(void);
|
||||
BOOL DVDCancelAsync(DVDCommandBlock *block, DVDCommandCallback callback);
|
||||
BOOL DVDCheckDiskAsync(DVDCommandBlock *block, DVDAsyncCallback callback);
|
||||
s32 DVDCancel(DVDCommandBlock *block);
|
||||
BOOL DVDCancelAllAsync(DVDCommandCallback callback);
|
||||
const DVDDiskID *DVDGetCurrentDiskID(void);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define RVL_SDK_GX_FIFO_H
|
||||
#include "common.h"
|
||||
#include "rvl/GX/GXInternal.h"
|
||||
#include "rvl/OS/OSThread.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -15,6 +16,10 @@ BOOL GXGetCPUFifo(GXFifoObj *);
|
||||
u32 GXGetFifoCount(GXFifoObj *);
|
||||
u8 GXGetFifoWrap(GXFifoObj *);
|
||||
|
||||
// IDK where this goes
|
||||
OSThread *GXSetCurrentGXThread();
|
||||
OSThread *GXGetCurrentGXThread();
|
||||
void GXSetDrawDoneCallback(void *);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -40,6 +40,10 @@ void OSReturnToMenu(void);
|
||||
u32 OSGetResetCode(void);
|
||||
void OSResetSystem(u32 arg0, u32 arg1, u32 arg2);
|
||||
|
||||
void OSRestart(u32);
|
||||
void OSRebootSystem(void);
|
||||
void OSReturnToDataManager(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -342,7 +342,9 @@ public:
|
||||
u8 getField_0xA843() const {
|
||||
return mIsFileInvalid[1];
|
||||
}
|
||||
|
||||
u8 getField_0xA84D() const {
|
||||
return m_0xA84D;
|
||||
}
|
||||
|
||||
void setField0xA84C(u8 val) {
|
||||
m_0xA84C = val;
|
||||
|
||||
@@ -13,7 +13,6 @@ class dSndSound_c;
|
||||
#define BGM_MGR (dSndPlayerMgr_c::GetInstance())
|
||||
extern "C" void fn_8035E000();
|
||||
extern "C" void fn_8035E860(dSndPlayerMgr_c *);
|
||||
extern "C" void fn_8035E310(dSndPlayerMgr_c *);
|
||||
extern "C" void fn_8035E820(dSndPlayerMgr_c *);
|
||||
extern "C" void fn_8035E880(dSndPlayerMgr_c *);
|
||||
extern "C" void fn_8035E790(dSndPlayerMgr_c *, UNKWORD, void *);
|
||||
@@ -45,6 +44,6 @@ extern "C" bool fn_80373550(void *, u32);
|
||||
extern "C" void fn_80372920(void *);
|
||||
extern "C" void fn_803738B0(void *, dSndSound_c *sound);
|
||||
extern "C" void fn_80373900(void *, dSndSound_c *sound);
|
||||
extern "C" bool fn_803733B0(void*, u32);
|
||||
extern "C" bool fn_803733B0(void *, u32);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -124,6 +124,20 @@ public:
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
bool getField_0x83D() const {
|
||||
return field_0x83D;
|
||||
}
|
||||
bool getField_0x83F() const {
|
||||
return field_0x83F;
|
||||
}
|
||||
s32 getCheckForFreeSpaceResult() const {
|
||||
return mCheckForFreeSpaceResult;
|
||||
}
|
||||
bool isInState() {
|
||||
return mCurrentState != STATE_MAX;
|
||||
}
|
||||
|
||||
void init();
|
||||
void createSaveMsgWindow();
|
||||
void execute();
|
||||
void draw();
|
||||
@@ -191,7 +205,6 @@ private:
|
||||
|
||||
SaveMgr();
|
||||
~SaveMgr();
|
||||
void init();
|
||||
|
||||
void beginState(SaveMgrState_e state);
|
||||
void endState();
|
||||
@@ -226,5 +239,4 @@ private:
|
||||
static SaveMgr *sInstance;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -499,7 +499,7 @@ void dScBoot_c::executeState_Strap() {
|
||||
case 1:
|
||||
if (!checkDone()) {
|
||||
bool ok = mStrapScreen.execute();
|
||||
if (dReset::Manage_c::GetInstance()->get0x0C() == 1) {
|
||||
if (dReset::Manage_c::GetInstance()->isSoftReset()) {
|
||||
ok = false;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_vec.h"
|
||||
|
||||
|
||||
/** 805750d0 */
|
||||
dDvdDriveError_c *dDvdDriveError_c::sInstance;
|
||||
|
||||
@@ -146,7 +145,7 @@ void dDvdDriveError_c::execute() {
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052C60();
|
||||
}
|
||||
} else if (mDvdDriveStatus == DVD_STATE_IDLE) {
|
||||
if (!dReset::Manage_c::GetInstance()->is1Or5()) {
|
||||
if (!dReset::Manage_c::GetInstance()->isSoftResetOrSafetyWait()) {
|
||||
mIsError = false;
|
||||
}
|
||||
}
|
||||
|
||||
+592
-1
@@ -1,14 +1,605 @@
|
||||
#include "d/d_reset.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/d_cs_base.h"
|
||||
#include "d/d_dvd_unk.h"
|
||||
#include "d/d_hbm.h"
|
||||
#include "d/d_rumble.h"
|
||||
#include "d/d_s_boot.h"
|
||||
#include "d/d_sc_title.h"
|
||||
#include "d/d_title_manager.h"
|
||||
#include "d/lyt/d_lyt_system_window.h"
|
||||
#include "d/snd/d_snd_player_mgr.h"
|
||||
#include "egg/core/eggColorFader.h"
|
||||
#include "egg/core/eggController.h"
|
||||
#include "egg/core/eggFader.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
#include "m/m_color.h"
|
||||
#include "m/m_pad.h"
|
||||
#include "m/m_video.h"
|
||||
#include "rvl/GX/GXDraw.h"
|
||||
#include "rvl/GX/GXMisc.h"
|
||||
#include "rvl/OS/OSCache.h"
|
||||
#include "rvl/OS/OSInterrupt.h"
|
||||
#include "rvl/OS/OSReset.h"
|
||||
#include "rvl/OS/OSStateTM.h"
|
||||
#include "rvl/OS/OSThread.h"
|
||||
#include "rvl/VI/vi.h"
|
||||
#include "toBeSorted/file_manager.h"
|
||||
#include "toBeSorted/save_manager.h"
|
||||
|
||||
#include "rvl/OS.h"
|
||||
|
||||
namespace dReset {
|
||||
|
||||
Manage_c *Manage_c::s_pInstance;
|
||||
mColor Manage_c::c_faderColor(0, 0, 0, 0xFF);
|
||||
Manage_c *Manage_c::s_pInstance;
|
||||
|
||||
void Manage_c::CreateInstance(EGG::Heap *pHeap) {
|
||||
s_pInstance = new (pHeap) Manage_c(pHeap);
|
||||
}
|
||||
|
||||
Manage_c *Manage_c::GetInstance() {
|
||||
return s_pInstance;
|
||||
}
|
||||
|
||||
Manage_c::Manage_c(EGG::Heap *pHeap) {
|
||||
mpHeap = pHeap;
|
||||
mpFader = nullptr;
|
||||
mMode = Normal;
|
||||
field_0x10 = 0;
|
||||
mModePrev = Normal;
|
||||
mExec = ExecNone;
|
||||
field_0x1C = 0;
|
||||
mHbmReset = false;
|
||||
mHbmReturnMenu = false;
|
||||
mRestart = false;
|
||||
mShutdown = false;
|
||||
mInteriorReturnDataManager = false;
|
||||
field_0x58 = 0;
|
||||
field_0x5C = 0;
|
||||
field_0x60 = 0;
|
||||
mBootComplete = 0;
|
||||
mSoftReset = 0;
|
||||
field_0x66 = 0;
|
||||
field_0x67 = 0;
|
||||
Configure();
|
||||
}
|
||||
|
||||
void Manage_c::Configure() {
|
||||
mpFader = new (mpHeap) EGG::ColorFader(
|
||||
0.f, 0.f, mVideo::m_video->pRenderMode->fbWidth, mVideo::m_video->pRenderMode->efbHeight, c_faderColor,
|
||||
EGG::ColorFader::STATUS_PREPARE_OUT
|
||||
);
|
||||
SetResetCallback();
|
||||
SetPowerCallback();
|
||||
}
|
||||
|
||||
void Manage_c::Reset() {
|
||||
mMode = Normal;
|
||||
field_0x10 = 0;
|
||||
mExec = ExecNone;
|
||||
field_0x1C = 0;
|
||||
SetResetCallback();
|
||||
SetPowerCallback();
|
||||
mHbmReset = false;
|
||||
mHbmReturnMenu = false;
|
||||
mRestart = false;
|
||||
mShutdown = false;
|
||||
mInteriorReturnDataManager = false;
|
||||
field_0x58 = 0;
|
||||
field_0x5C = 0;
|
||||
field_0x60 = 0;
|
||||
mSoftReset = 0;
|
||||
field_0x67 = 0;
|
||||
}
|
||||
|
||||
void Manage_c::Calculate() {
|
||||
ModeProc();
|
||||
if (!SaveMgr::GetInstance()->getField_0x83D() && !SaveMgr::GetInstance()->getField_0x83F()) {
|
||||
if (FileManager::GetInstance()->getField_0xA84D() != 1) {
|
||||
mpFader->calc();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::Draw() {
|
||||
mpFader->draw();
|
||||
}
|
||||
|
||||
void Manage_c::BootComplete(bool complete) {
|
||||
mBootComplete = complete;
|
||||
}
|
||||
|
||||
bool Manage_c::CanExecSoftReset() const {
|
||||
return mMode == SoftReset && mpFader->getStatus() == EGG::Fader::STATUS_PREPARE_IN && field_0x60 == 0 &&
|
||||
dHbm::Manage_c::GetInstance()->getField_0x210() != 2 && dSndPlayerMgr_c::GetInstance()->fn_8035E2E0() &&
|
||||
FileManager::GetInstance()->getField_0xA84D() != 1;
|
||||
}
|
||||
|
||||
void Manage_c::SetSoftResetFinish() {
|
||||
if (mMode == SoftReset) {
|
||||
if (field_0x60 == 1) {
|
||||
field_0x60 = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::SetSoftResetScene() {
|
||||
if (CanExecSoftReset() && dScBoot_c::GetInstance() == nullptr) {
|
||||
dScTitle_c::loadTitleScreen(0);
|
||||
field_0x60 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::PostDeleteScene() {}
|
||||
|
||||
bool Manage_c::IsFaderBlank() const {
|
||||
return mpFader->getStatus() == EGG::Fader::STATUS_PREPARE_IN;
|
||||
}
|
||||
|
||||
void Manage_c::SetHbmReturnMenu() {
|
||||
mHbmReturnMenu = true;
|
||||
}
|
||||
|
||||
void Manage_c::SetHbmReset() {
|
||||
mHbmReset = true;
|
||||
}
|
||||
|
||||
void Manage_c::SetDelayReset() {
|
||||
field_0x58 = 2;
|
||||
}
|
||||
|
||||
void Manage_c::SetDelayPowerOff() {
|
||||
field_0x5C = 2;
|
||||
}
|
||||
|
||||
void Manage_c::SetInteriorReturnDataManager() {
|
||||
mInteriorReturnDataManager = true;
|
||||
}
|
||||
|
||||
void Manage_c::fn_80067FF0() {
|
||||
MotorCancelOn();
|
||||
CleanUpGX();
|
||||
CleanUpLC();
|
||||
}
|
||||
|
||||
void Manage_c::ExecProcPre() {
|
||||
CleanUpGX();
|
||||
CleanUpLC();
|
||||
}
|
||||
|
||||
void Manage_c::fn_80068070() {
|
||||
ExecProcMain();
|
||||
}
|
||||
|
||||
void Manage_c::ExecProcMain() {
|
||||
if (mExec == Restart) {
|
||||
OSRestart(0);
|
||||
} else if (mExec == Reboot) {
|
||||
OSRebootSystem();
|
||||
} else if (mExec == ReturnToMenu) {
|
||||
OSReturnToMenu();
|
||||
} else if (mExec == ReturnToDataManager) {
|
||||
OSReturnToDataManager();
|
||||
} else if (mExec == Shutdown) {
|
||||
OSShutdownSystem();
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::DiskCheckModeRequest(bool) {
|
||||
if (mBootComplete) {
|
||||
SetDiskCheckCallback();
|
||||
while (true) {
|
||||
if (field_0x1C == 2) {
|
||||
ModeRequestSafetyWait(ReturnToMenu);
|
||||
return;
|
||||
} else if (field_0x1C == 1) {
|
||||
ModeRequestSoftReset();
|
||||
return;
|
||||
} else {
|
||||
VIWaitForRetrace();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
SetDiskCheckCallback();
|
||||
while (true) {
|
||||
if (field_0x1C == 2) {
|
||||
ModeRequestSafetyWait(ReturnToMenu);
|
||||
return;
|
||||
} else if (field_0x1C != 1) {
|
||||
VIWaitForRetrace();
|
||||
} else {
|
||||
if (dScBoot_c::GetInstance()) {
|
||||
ModeRequestSoftReset();
|
||||
dHbm::Manage_c::GetInstance()->fn_80197560(1);
|
||||
field_0x1C = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::DebugPrintMode(const char *) {}
|
||||
|
||||
void Manage_c::ModeProc() {
|
||||
bool fatalErr = IsFatalError();
|
||||
bool diskErr = IsDiskError();
|
||||
if (fatalErr) {
|
||||
if (mMode != FatalError) {
|
||||
ModeRequest(FatalError);
|
||||
}
|
||||
} else if (diskErr) {
|
||||
if (mMode != DiskWait && mMode != SafetyWait) {
|
||||
ModeRequest(DiskWait);
|
||||
}
|
||||
} else if (mMode == Normal && dHbm::Manage_c::GetInstance()->getField_0x210() == 2) {
|
||||
ModeRequest(HbmWait);
|
||||
}
|
||||
static void (Manage_c::*const procs[6])() = {
|
||||
&Manage_c::ModeProc_Normal, &Manage_c::ModeProc_SoftReset, &Manage_c::ModeProc_HbmWait,
|
||||
&Manage_c::ModeProc_DiskWait, &Manage_c::ModeProc_FatalError, &Manage_c::ModeProc_SafetyWait,
|
||||
};
|
||||
|
||||
(this->*procs[mMode])();
|
||||
|
||||
if (mRestart) {
|
||||
SetResetCallback();
|
||||
}
|
||||
if (mShutdown) {
|
||||
SetPowerCallback();
|
||||
}
|
||||
mHbmReset = false;
|
||||
mHbmReturnMenu = false;
|
||||
mRestart = false;
|
||||
mShutdown = false;
|
||||
mInteriorReturnDataManager = false;
|
||||
}
|
||||
|
||||
void Manage_c::ModeRequest(Manage_c::Mode_e mode) {
|
||||
mModePrev = mMode;
|
||||
mMode = mode;
|
||||
static void (Manage_c::*const procs[6])() = {
|
||||
&Manage_c::ModeInit_Normal, &Manage_c::ModeInit_SoftReset, &Manage_c::ModeInit_HbmWait,
|
||||
&Manage_c::ModeInit_DiskWait, &Manage_c::ModeInit_FatalError, &Manage_c::ModeInit_SafetyWait,
|
||||
};
|
||||
(this->*procs[mMode])();
|
||||
}
|
||||
|
||||
void Manage_c::ModeRequestSafetyWait(Manage_c::Exec_e exec) {
|
||||
ModeRequest(SafetyWait);
|
||||
mExec = exec;
|
||||
MotorCancelOn();
|
||||
}
|
||||
|
||||
void Manage_c::ModeRequestSoftReset() {
|
||||
mSoftReset = 1;
|
||||
ModeRequest(SoftReset);
|
||||
MotorCancelOn();
|
||||
}
|
||||
|
||||
void Manage_c::ModeInit_Normal() {
|
||||
DebugPrintMode("Normal");
|
||||
mExec = ExecNone;
|
||||
}
|
||||
|
||||
void Manage_c::ModeProc_Normal() {
|
||||
Exec_e exec;
|
||||
if (mShutdown) {
|
||||
ModeRequestSafetyWait(Shutdown);
|
||||
} else if (mInteriorReturnDataManager) {
|
||||
ModeRequestSafetyWait(ReturnToDataManager);
|
||||
} else if (mRestart) {
|
||||
DiskCheckModeRequest(false);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void fn_803267B0(s32, s32);
|
||||
void Manage_c::ModeInit_SoftReset() {
|
||||
DebugPrintMode("SoftReset");
|
||||
if (mSoftReset) {
|
||||
mSoftReset = false;
|
||||
if (dScBoot_c::GetInstance()) {
|
||||
mpFader->setFrame(30);
|
||||
mpFader->fadeOut();
|
||||
field_0x66 = true;
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E250(30);
|
||||
} else {
|
||||
field_0x60 = 0;
|
||||
if (dTitleMgr_c::GetInstance()) {
|
||||
if (dTitleMgr_c::GetInstance()->getField_0xBC() == 0) {
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E250(30);
|
||||
}
|
||||
} else {
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E250(30);
|
||||
}
|
||||
fn_803267B0(0, 60);
|
||||
mpFader->setFrame(30);
|
||||
mpFader->fadeOut();
|
||||
field_0x66 = true;
|
||||
field_0x67 = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::ModeProc_SoftReset() {
|
||||
if (dScBoot_c::GetInstance()) {
|
||||
if (mpFader->getStatus() == EGG::ColorFader::STATUS_PREPARE_IN) {
|
||||
if (dScBoot_c::GetInstance()->getField_0x5E4()) {
|
||||
dScBoot_c::GetInstance()->setField_0x5E4(0);
|
||||
mpFader->setStatus(EGG::ColorFader::STATUS_PREPARE_OUT);
|
||||
ModeRequest(Normal);
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E310();
|
||||
} else {
|
||||
if (field_0x66) {
|
||||
dScBoot_c::GetInstance()->setField_0x5E3(1);
|
||||
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_800529B0();
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E6E0();
|
||||
|
||||
if (dDvdUnk::FontUnk::GetInstance()->getField_0x29() ||
|
||||
dDvdUnk::FontUnk::GetInstance()->getField_0x24() ||
|
||||
SaveMgr::GetInstance()->getCheckForFreeSpaceResult()) {
|
||||
dScBoot_c::GetInstance()->setField_0x5E3(0);
|
||||
dScBoot_c::GetInstance()->setField_0x5E2(1);
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_800529E0();
|
||||
}
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052A20();
|
||||
}
|
||||
field_0x66 = false;
|
||||
}
|
||||
}
|
||||
} else if (dTitleMgr_c::GetInstance() == nullptr || dTitleMgr_c::GetInstance()->getField_0xBC() == 0) {
|
||||
if (field_0x66 && mpFader->getStatus() == EGG::ColorFader::STATUS_PREPARE_IN) {
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_800529B0();
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052A20();
|
||||
|
||||
dCsBase_c::GetInstance()->setField703(false);
|
||||
dCsBase_c::GetInstance()->setField704(false);
|
||||
dCsBase_c::GetInstance()->setField705(false);
|
||||
|
||||
field_0x66 = false;
|
||||
}
|
||||
if (mpFader->getStatus() == EGG::Fader::STATUS_PREPARE_IN && field_0x60 == 2) {
|
||||
if (field_0x67 == 0) {
|
||||
if (SaveMgr::GetInstance()->isInState()) {
|
||||
SaveMgr::GetInstance()->init();
|
||||
}
|
||||
if (dLytSystemWindow_c::GetInstance()->fn_80152F80()) {
|
||||
dLytSystemWindow_c::GetInstance()->fn_80152F10();
|
||||
}
|
||||
field_0x67++;
|
||||
} else {
|
||||
mpFader->setStatus(EGG::Fader::STATUS_PREPARE_OUT);
|
||||
VISetBlack(FALSE);
|
||||
MotorCancelOff();
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::ModeInit_HbmWait() {
|
||||
DebugPrintMode("HbmWait");
|
||||
}
|
||||
|
||||
void Manage_c::ModeProc_HbmWait() {
|
||||
bool doFade = false;
|
||||
if (field_0x5C == 0 && field_0x58 == 0) {
|
||||
if (mHbmReturnMenu) {
|
||||
ModeRequestSafetyWait(ReturnToMenu);
|
||||
} else if (mHbmReset) {
|
||||
DiskCheckModeRequest(true);
|
||||
doFade = true;
|
||||
} else {
|
||||
if (dHbm::Manage_c::GetInstance()->getField_0x210() != 2) {
|
||||
if (mShutdown) {
|
||||
ModeRequestSafetyWait(Shutdown);
|
||||
} else if (mRestart) {
|
||||
DiskCheckModeRequest(false);
|
||||
} else {
|
||||
ModeRequest(Normal);
|
||||
}
|
||||
} else {
|
||||
if (mShutdown) {
|
||||
if (dHbm::Manage_c::GetInstance()->fn_801973C0(2)) {
|
||||
field_0x5C = 1;
|
||||
}
|
||||
} else if (mRestart) {
|
||||
if (dHbm::Manage_c::GetInstance()->fn_801973C0(1)) {
|
||||
field_0x58 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (field_0x5C == 2) {
|
||||
field_0x5C = 0;
|
||||
ModeRequestSafetyWait(Shutdown);
|
||||
doFade = true;
|
||||
} else if (field_0x58 == 2) {
|
||||
field_0x58 = 0;
|
||||
DiskCheckModeRequest(false);
|
||||
doFade = true;
|
||||
}
|
||||
if (doFade) {
|
||||
mpFader->setStatus(EGG::Fader::STATUS_PREPARE_IN);
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::ModeInit_DiskWait() {
|
||||
if (dScBoot_c::GetInstance()) {
|
||||
mFaderStatusPrev = mpFader->getStatus();
|
||||
mpFader->setStatus(EGG::Fader::STATUS_PREPARE_OUT);
|
||||
} else {
|
||||
if (mModePrev == SoftReset) {
|
||||
mpFader->setStatus(EGG::Fader::STATUS_PREPARE_OUT);
|
||||
}
|
||||
}
|
||||
DebugPrintMode("DiskWait");
|
||||
}
|
||||
|
||||
void Manage_c::ModeProc_DiskWait() {
|
||||
if (IsDiskError()) {
|
||||
if (mShutdown) {
|
||||
ModeRequestSafetyWait(Shutdown);
|
||||
} else if (mRestart) {
|
||||
ModeRequestSafetyWait(ReturnToMenu);
|
||||
}
|
||||
} else {
|
||||
if (dScBoot_c::GetInstance()) {
|
||||
if (mFaderStatusPrev == EGG::Fader::STATUS_PREPARE_IN) {
|
||||
mpFader->setStatus(EGG::Fader::STATUS_PREPARE_IN);
|
||||
} else if (mFaderStatusPrev == EGG::Fader::STATUS_PREPARE_OUT) {
|
||||
mpFader->setStatus(EGG::Fader::STATUS_PREPARE_OUT);
|
||||
} else if (mFaderStatusPrev == EGG::Fader::STATUS_FADE_IN) {
|
||||
mpFader->setStatus(EGG::Fader::STATUS_PREPARE_OUT);
|
||||
} else {
|
||||
mpFader->setStatus(EGG::Fader::STATUS_PREPARE_IN);
|
||||
}
|
||||
} else {
|
||||
if (mModePrev == SoftReset) {
|
||||
mpFader->setStatus(EGG::Fader::STATUS_PREPARE_IN);
|
||||
}
|
||||
}
|
||||
ModeRequest(mModePrev);
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::ModeInit_FatalError() {
|
||||
DebugPrintMode("FatalError");
|
||||
}
|
||||
|
||||
void Manage_c::ModeProc_FatalError() {}
|
||||
|
||||
void Manage_c::ModeInit_SafetyWait() {
|
||||
DebugPrintMode("SafetyWait");
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E1B0(30);
|
||||
mpFader->setFrame(30);
|
||||
mpFader->fadeOut();
|
||||
}
|
||||
|
||||
void Manage_c::ModeProc_SafetyWait() {
|
||||
if (mpFader->getStatus() == EGG::Fader::STATUS_PREPARE_IN) {
|
||||
bool b = dSndPlayerMgr_c::GetInstance()->fn_8035E220() && !FileManager::GetInstance()->getField_0xA84D();
|
||||
if (b) {
|
||||
ExecProcPre();
|
||||
fn_80068070();
|
||||
}
|
||||
}
|
||||
if (SaveMgr::GetInstance()->getField_0x83D() || SaveMgr::GetInstance()->getField_0x83F() ||
|
||||
FileManager::GetInstance()->getField_0xA84D() == 1) {
|
||||
if (FileManager::GetInstance()->getField_0xA84D() != 1) {
|
||||
mpFader->calc();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::SetResetCallback() {
|
||||
OSSetResetCallback(ResetCallback);
|
||||
}
|
||||
|
||||
void Manage_c::SetPowerCallback() {
|
||||
OSSetPowerCallback(PowerCallback);
|
||||
}
|
||||
|
||||
void Manage_c::SetDiskCheckCallback() {
|
||||
field_0x1C = 0;
|
||||
DVDCheckDiskAsync(&mDvdCmd, DiskCheckCallback);
|
||||
}
|
||||
|
||||
void Manage_c::DiskCheckCallback(s32 result, struct DVDFileInfo *info) {
|
||||
if (result == 0) {
|
||||
GetInstance()->field_0x1C = 2;
|
||||
} else {
|
||||
GetInstance()->field_0x1C = 1;
|
||||
}
|
||||
};
|
||||
|
||||
void Manage_c::ResetCallback() {
|
||||
GetInstance()->mRestart = true;
|
||||
};
|
||||
|
||||
void Manage_c::PowerCallback() {
|
||||
GetInstance()->mShutdown = true;
|
||||
};
|
||||
|
||||
void Manage_c::CleanUpGX() {
|
||||
VISetBlack(TRUE);
|
||||
VIFlush();
|
||||
VIWaitForRetrace();
|
||||
VIWaitForRetrace();
|
||||
OSThread *thread = GXGetCurrentGXThread();
|
||||
BOOL status = OSDisableInterrupts();
|
||||
|
||||
if (thread != OSGetCurrentThread()) {
|
||||
OSCancelThread(thread);
|
||||
GXSetCurrentGXThread();
|
||||
}
|
||||
GXFlush();
|
||||
GXAbortFrame();
|
||||
GXDrawDone();
|
||||
OSRestoreInterrupts(status);
|
||||
|
||||
GXSetDrawDoneCallback(0);
|
||||
VIWaitForRetrace();
|
||||
}
|
||||
|
||||
void Manage_c::CleanUpLC() {
|
||||
LCDisable();
|
||||
}
|
||||
|
||||
void Manage_c::MotorCancelOn() {
|
||||
// Huh
|
||||
for (int i = 0; i < 4;) {
|
||||
mPad::g_core[i++]->stopRumbleMgr();
|
||||
}
|
||||
dRumble_c::stop(-1);
|
||||
}
|
||||
|
||||
void Manage_c::MotorCancelOff() {}
|
||||
|
||||
bool Manage_c::IsFatalError() {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Manage_c::IsDiskError() {
|
||||
return dDvdUnk::FontUnk::GetInstance()->getField_0x28();
|
||||
}
|
||||
|
||||
bool Manage_c::FadeOutCalc() {
|
||||
if (mpFader->getStatus() == EGG::Fader::STATUS_PREPARE_IN ||
|
||||
mpFader->getStatus() == EGG::Fader::STATUS_PREPARE_OUT) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void Manage_c::FadeOutRequest(bool fade) {
|
||||
if (!fade) {
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_800529B0();
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052A20();
|
||||
|
||||
dCsBase_c::GetInstance()->setField703(false);
|
||||
dCsBase_c::GetInstance()->setField704(false);
|
||||
dCsBase_c::GetInstance()->setField705(false);
|
||||
|
||||
field_0x66 = 0;
|
||||
|
||||
if (SaveMgr::GetInstance()->isInState()) {
|
||||
SaveMgr::GetInstance()->init();
|
||||
}
|
||||
|
||||
if (dLytSystemWindow_c::GetInstance()->fn_80152F80()) {
|
||||
dLytSystemWindow_c::GetInstance()->fn_80152F10();
|
||||
}
|
||||
} else {
|
||||
mpFader->setStatus(EGG::Fader::STATUS_PREPARE_OUT);
|
||||
VISetBlack(FALSE);
|
||||
MotorCancelOff();
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace dReset
|
||||
|
||||
+1
-2
@@ -6,7 +6,6 @@
|
||||
#include "d/lyt/d_lyt_control_game.h"
|
||||
#include "m/m_pad.h"
|
||||
|
||||
|
||||
dRumbleEntry_c dRumble_c::sRumblePreset0(8, 0b11000000000000000000000000000000, 2.f);
|
||||
dRumbleEntry_c dRumble_c::sRumblePreset1(9, 0b11010000000000000000000000000000, 4.f);
|
||||
dRumbleEntry_c dRumble_c::sRumblePreset2(10, 0b11101100000000000000000000000000, 6.f);
|
||||
@@ -45,7 +44,7 @@ void dRumble_c::execute() {
|
||||
}
|
||||
|
||||
// I am guessing on any reload screen or homebutton menu?
|
||||
if (dReset::Manage_c::GetInstance()->is1Or5()) {
|
||||
if (dReset::Manage_c::GetInstance()->isSoftResetOrSafetyWait()) {
|
||||
mPad::g_core[0]->stopRumbleMgr();
|
||||
mPad::g_core[1]->stopRumbleMgr();
|
||||
return;
|
||||
|
||||
@@ -74,7 +74,7 @@ static const char *const sSkb = "SoftwareKeyboard";
|
||||
|
||||
int dScTitle_c::create() {
|
||||
int ret = dScGame_c::create();
|
||||
if (ret == SUCCEEDED && dReset::Manage_c::GetInstance()->get0x0C() == 1) {
|
||||
if (ret == SUCCEEDED && dReset::Manage_c::GetInstance()->isSoftReset()) {
|
||||
if (field_0x2AC == 0) {
|
||||
dReset::Manage_c::GetInstance()->FadeOutRequest(false);
|
||||
if (checkAllSaveFilesEmpty() != true) {
|
||||
@@ -100,7 +100,7 @@ int dScTitle_c::create() {
|
||||
SizedString<128> fntPath;
|
||||
fntPath.sprintf("/US/Font/%s/%s", dMessage_c::getLanguageIdentifier(), "normal_02.brfnt");
|
||||
mDvd_toMainRam_normal_c::create2(&mpSkbFont, fntPath, 0, dHeap::work2Heap.heap);
|
||||
fn_8035E310(BGM_MGR);
|
||||
BGM_MGR->fn_8035E310();
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user