mirror of
https://github.com/zeldaret/ss
synced 2026-06-24 17:23:13 -04:00
Merge pull request #227 from robojumper/d_pad_manager
More game bootup / error related things
This commit is contained in:
@@ -52,7 +52,7 @@ finalizeState_Connect__9dScBoot_cFv = .text:0x00001DB0; // type:function size:0x
|
||||
initializeState_Save__9dScBoot_cFv = .text:0x00001DC0; // type:function size:0x18
|
||||
executeState_Save__9dScBoot_cFv = .text:0x00001DE0; // type:function size:0x29C
|
||||
finalizeState_Save__9dScBoot_cFv = .text:0x00002080; // type:function size:0x4
|
||||
fn_3_2090 = .text:0x00002090; // type:function size:0x78
|
||||
tryLoadTitleScreen__9dScBoot_cFv = .text:0x00002090; // type:function size:0x78
|
||||
checkDone__9dScBoot_cFv = .text:0x00002110; // type:function size:0x2C
|
||||
build__24sFStateFct_c<9dScBoot_c>FRC12sStateIDIf_c = .text:0x00002140; // type:function size:0x60
|
||||
dispose__24sFStateFct_c<9dScBoot_c>FRP10sStateIf_c = .text:0x000021A0; // type:function size:0xC
|
||||
|
||||
@@ -254,8 +254,12 @@ d/d_pad.cpp:
|
||||
d/d_pad_ex.cpp:
|
||||
.text start:0x80059620 end:0x80059CE0 align:16
|
||||
|
||||
d/d_pause_manager.cpp:
|
||||
d/d_pad_manager.cpp:
|
||||
.text start:0x80059CE0 end:0x8005B6D4 align:16
|
||||
.rodata start:0x804DE188 end:0x804DE1E8
|
||||
.data start:0x8050D458 end:0x8050D620
|
||||
.sdata start:0x80571C68 end:0x80571C70
|
||||
.sdata2 start:0x80577008 end:0x80577010
|
||||
|
||||
d/d_player_act.cpp:
|
||||
.text start:0x8005B6E0 end:0x8005CE8C align:16
|
||||
|
||||
+103
-96
@@ -527,8 +527,8 @@ fn_80015DE0 = .text:0x80015DE0; // type:function size:0x8
|
||||
fn_80015DF0 = .text:0x80015DF0; // type:function size:0x48
|
||||
create__11SaveRelatedFv = .text:0x80015E40; // type:function size:0x38
|
||||
remove__11SaveRelatedFv = .text:0x80015E80; // type:function size:0x18
|
||||
fn_80015EA0 = .text:0x80015EA0; // type:function size:0x14
|
||||
fn_80015EC0 = .text:0x80015EC0; // type:function size:0x74
|
||||
fn_80015EA0__11SaveRelatedFv = .text:0x80015EA0; // type:function size:0x14
|
||||
fn_80015EC0__11SaveRelatedFv = .text:0x80015EC0; // type:function size:0x74
|
||||
fn_80015F40__11SaveRelatedFv = .text:0x80015F40; // type:function size:0xC
|
||||
fn_80015F50 = .text:0x80015F50; // type:function size:0x8
|
||||
fn_80015F60 = .text:0x80015F60; // type:function size:0x14
|
||||
@@ -2151,22 +2151,22 @@ draw__16dDvdDriveError_cFv = .text:0x80052350; // type:function size:0x35C
|
||||
execute__16dDvdDriveError_cFv = .text:0x800526B0; // type:function size:0x98
|
||||
init__16dDvdDriveError_cFv = .text:0x80052750; // type:function size:0x10
|
||||
create__Q27dDvdUnk7FontUnkFPQ23EGG4Heap = .text:0x80052760; // type:function size:0x88
|
||||
fn_800527F0 = .text:0x800527F0; // type:function size:0x11C
|
||||
fn_80052910 = .text:0x80052910; // type:function size:0x48
|
||||
fn_80052960 = .text:0x80052960; // type:function size:0x18
|
||||
execute__Q27dDvdUnk7FontUnkFv = .text:0x800527F0; // type:function size:0x11C
|
||||
drawNonDriveError__Q27dDvdUnk7FontUnkFv = .text:0x80052910; // type:function size:0x48
|
||||
drawDriveError__Q27dDvdUnk7FontUnkFv = .text:0x80052960; // type:function size:0x18
|
||||
init__Q27dDvdUnk7FontUnkFv = .text:0x80052980; // type:function size:0x30
|
||||
fn_800529B0__Q27dDvdUnk7FontUnkFv = .text:0x800529B0; // type:function size:0x30
|
||||
fn_800529E0__Q27dDvdUnk7FontUnkFv = .text:0x800529E0; // type:function size:0x38
|
||||
clearNandError__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
|
||||
fn_80052C90__Q27dDvdUnk7FontUnkFv = .text:0x80052C90; // type:function size:0x28
|
||||
fn_80052CC0 = .text:0x80052CC0; // type:function size:0x38
|
||||
fn_80052D00__Q27dDvdUnk7FontUnkFb = .text:0x80052D00; // type:function size:0x14
|
||||
fn_80052D20 = .text:0x80052D20; // type:function size:0x30
|
||||
preExecute__Q27dDvdUnk7FontUnkFv = .text:0x80052AE0; // type:function size:0x148
|
||||
isAnyError__Q27dDvdUnk7FontUnkCFv = .text:0x80052C30; // type:function size:0x24
|
||||
onError__Q27dDvdUnk7FontUnkFv = .text:0x80052C60; // type:function size:0x24
|
||||
clearNandTrackerError__Q27dDvdUnk7FontUnkFv = .text:0x80052C90; // type:function size:0x28
|
||||
fn_80052CC0__Q27dDvdUnk7FontUnkFv = .text:0x80052CC0; // type:function size:0x38
|
||||
setNeedsPad__Q27dDvdUnk7FontUnkFb = .text:0x80052D00; // type:function size:0x14
|
||||
padErrorsAllowed__Q27dDvdUnk7FontUnkFv = .text:0x80052D20; // type:function size:0x30
|
||||
fn_80052D50__Q27dDvdUnk7FontUnkFv = .text:0x80052D50; // type:function size:0x78
|
||||
fn_80052DD0 = .text:0x80052DD0; // type:function size:0x2C
|
||||
fn_80052DD0__Q27dDvdUnk7FontUnkFv = .text:0x80052DD0; // type:function size:0x2C
|
||||
initDylinkHeap__4dDylFiPC10RelNamePtriPQ23EGG4Heap = .text:0x80052E00; // type:function size:0x1A0
|
||||
isLinked__4dDylFUs = .text:0x80052FA0; // type:function size:0x30
|
||||
Unlink__4dDylFUs = .text:0x80052FD0; // type:function size:0x20
|
||||
@@ -2320,10 +2320,10 @@ getBatteryLevel__Q24dPad4ex_cFv = .text:0x80058EA0; // type:function size:0x8
|
||||
getBatteryLevel__Q24dPad4ex_cFl = .text:0x80058EB0; // type:function size:0x30
|
||||
setInfo__Q24dPad4ex_cFlPC8WPADInfo = .text:0x80058EE0; // type:function size:0x68
|
||||
fn_80058F50__Q24dPad4ex_cFv = .text:0x80058F50; // type:function size:0xC
|
||||
fn_80058F60__Q24dPad4ex_cFv = .text:0x80058F60; // type:function size:0x78
|
||||
startCurrentMplsCalibration__Q24dPad4ex_cFv = .text:0x80058F60; // type:function size:0x78
|
||||
getCurrentCalibrationWork__Q24dPad4ex_cFv = .text:0x80058FE0; // type:function size:0x8
|
||||
fn_80058FF0__Q24dPad4ex_cFv = .text:0x80058FF0; // type:function size:0xC
|
||||
fn_80059000__Q24dPad4ex_cFv = .text:0x80059000; // type:function size:0xC
|
||||
stopCurrentMplsCalibration__Q24dPad4ex_cFv = .text:0x80058FF0; // type:function size:0xC
|
||||
centerCurrentCursor__Q24dPad4ex_cFv = .text:0x80059000; // type:function size:0xC
|
||||
needMplsCalibration__Q24dPad4ex_cFv = .text:0x80059010; // type:function size:0x90
|
||||
setCalibrateMpls__Q24dPad4ex_cFv = .text:0x800590A0; // type:function size:0x10
|
||||
fn_800590B0__Q24dPad4ex_cFv = .text:0x800590B0; // type:function size:0x30
|
||||
@@ -2407,38 +2407,38 @@ fn_80059B90__4dPadFv = .text:0x80059B90; // type:function size:0x10
|
||||
getFSAcc__4dPadFv = .text:0x80059BA0; // type:function size:0x120
|
||||
fn_80059CC0__4dPadFv = .text:0x80059CC0; // type:function size:0x10
|
||||
fn_80059CD0__4dPadFv = .text:0x80059CD0; // type:function size:0x10
|
||||
fn_80059CE0 = .text:0x80059CE0; // type:function size:0x2C
|
||||
fn_80059D10 = .text:0x80059D10; // type:function size:0x44
|
||||
fn_80059D60 = .text:0x80059D60; // type:function size:0x40
|
||||
fn_80059DA0 = .text:0x80059DA0; // type:function size:0x24
|
||||
fn_80059DD0 = .text:0x80059DD0; // type:function size:0x54
|
||||
fn_80059E30 = .text:0x80059E30; // type:function size:0x60
|
||||
fn_80059E90 = .text:0x80059E90; // type:function size:0x44
|
||||
fn_80059EE0 = .text:0x80059EE0; // type:function size:0x2C
|
||||
fn_80059F10 = .text:0x80059F10; // type:function size:0x2C
|
||||
fn_80059F40 = .text:0x80059F40; // type:function size:0xC
|
||||
fn_80059F50 = .text:0x80059F50; // type:function size:0x84
|
||||
fn_80059FE0 = .text:0x80059FE0; // type:function size:0x68
|
||||
fn_8005A050 = .text:0x8005A050; // type:function size:0x104
|
||||
fn_8005A160 = .text:0x8005A160; // type:function size:0x40
|
||||
fn_8005A1A0 = .text:0x8005A1A0; // type:function size:0x144
|
||||
fn_8005A2F0 = .text:0x8005A2F0; // type:function size:0x40
|
||||
fn_8005A330 = .text:0x8005A330; // type:function size:0x174
|
||||
fn_8005A4B0 = .text:0x8005A4B0; // type:function size:0x8
|
||||
fn_8005A4C0 = .text:0x8005A4C0; // type:function size:0x188
|
||||
fn_8005A650 = .text:0x8005A650; // type:function size:0x48
|
||||
performInitialCalibrationMaybeMaybe = .text:0x8005A6A0; // type:function size:0x2C4
|
||||
fn_8005A970 = .text:0x8005A970; // type:function size:0x3C
|
||||
fn_8005A9B0 = .text:0x8005A9B0; // type:function size:0x1D8
|
||||
fn_8005AB90 = .text:0x8005AB90; // type:function size:0x5C
|
||||
fn_8005ABF0 = .text:0x8005ABF0; // type:function size:0x374
|
||||
fn_8005AF70 = .text:0x8005AF70; // type:function size:0x8
|
||||
fn_8005AF80 = .text:0x8005AF80; // type:function size:0x50C
|
||||
fn_8005B490 = .text:0x8005B490; // type:function size:0x18
|
||||
fn_8005B4B0 = .text:0x8005B4B0; // type:function size:0xDC
|
||||
fn_8005B590 = .text:0x8005B590; // type:function size:0xB0
|
||||
fn_8005B640 = .text:0x8005B640; // type:function size:0x2C
|
||||
fn_8005B670 = .text:0x8005B670; // type:function size:0x64
|
||||
__ct__13dPadManager_cFv = .text:0x80059CE0; // type:function size:0x2C
|
||||
create__13dPadManager_cFPQ23EGG4Heap = .text:0x80059D10; // type:function size:0x44
|
||||
__dt__13dPadManager_cFv = .text:0x80059D60; // type:function size:0x40
|
||||
execute__13dPadManager_cFv = .text:0x80059DA0; // type:function size:0x24
|
||||
draw__13dPadManager_cFv = .text:0x80059DD0; // type:function size:0x54
|
||||
init__13dPadManager_cFv = .text:0x80059E30; // type:function size:0x60
|
||||
buildWindow__13dPadManager_cFv = .text:0x80059E90; // type:function size:0x44
|
||||
get30SecondsInTicks__13dPadManager_cFv = .text:0x80059EE0; // type:function size:0x2C
|
||||
get3Point3SecondsInTicks__13dPadManager_cFv = .text:0x80059F10; // type:function size:0x2C
|
||||
requestMplsCalibration__13dPadManager_cFv = .text:0x80059F40; // type:function size:0xC
|
||||
executeProc__13dPadManager_cFv = .text:0x80059F50; // type:function size:0x84
|
||||
ModeRequestNormal__13dPadManager_cFv = .text:0x80059FE0; // type:function size:0x68
|
||||
ModeProc_Normal__13dPadManager_cFv = .text:0x8005A050; // type:function size:0x104
|
||||
ModeRequestReconnectPad__13dPadManager_cFv = .text:0x8005A160; // type:function size:0x40
|
||||
ModeProc_ReconnectPad__13dPadManager_cFv = .text:0x8005A1A0; // type:function size:0x144
|
||||
ModeRequestAttachMplsAndNunchuk__13dPadManager_cFv = .text:0x8005A2F0; // type:function size:0x40
|
||||
ModeProc_AttachMplsAndNunchuk__13dPadManager_cFv = .text:0x8005A330; // type:function size:0x174
|
||||
ModeRequestAttachNunchuk__13dPadManager_cFv = .text:0x8005A4B0; // type:function size:0x8
|
||||
ModeProc_AttachNunchuk__13dPadManager_cFv = .text:0x8005A4C0; // type:function size:0x188
|
||||
ModeRequestCalibrating__13dPadManager_cFv = .text:0x8005A650; // type:function size:0x48
|
||||
ModeProc_Calibrating__13dPadManager_cFv = .text:0x8005A6A0; // type:function size:0x2C4
|
||||
ModeRequestLowBattery__13dPadManager_cFv = .text:0x8005A970; // type:function size:0x3C
|
||||
ModeProc_LowBattery__13dPadManager_cFv = .text:0x8005A9B0; // type:function size:0x1D8
|
||||
ModeRequestPointCenter__13dPadManager_cFv = .text:0x8005AB90; // type:function size:0x5C
|
||||
ModeProc_PointCenter__13dPadManager_cFv = .text:0x8005ABF0; // type:function size:0x374
|
||||
ModeRequestCalibrationFail__13dPadManager_cFv = .text:0x8005AF70; // type:function size:0x8
|
||||
ModeProc_CalibrationFail__13dPadManager_cFv = .text:0x8005AF80; // type:function size:0x50C
|
||||
ModeRequest__13dPadManager_cFQ213dPadManager_c6Mode_e = .text:0x8005B490; // type:function size:0x18
|
||||
getPadStatus__13dPadManager_cFv = .text:0x8005B4B0; // type:function size:0xDC
|
||||
ModeRequestNext__13dPadManager_cFQ213dPadManager_c11PadStatus_e = .text:0x8005B590; // type:function size:0xB0
|
||||
get1Point5SecondsInTicks__13dPadManager_cFv = .text:0x8005B640; // type:function size:0x2C
|
||||
isOutOfBattery__13dPadManager_cFv = .text:0x8005B670; // type:function size:0x64
|
||||
preExecute__17daPlayerActBase_cFv = .text:0x8005B6E0; // type:function size:0x4C
|
||||
postExecute__17daPlayerActBase_cFQ27fBase_c12MAIN_STATE_e = .text:0x8005B730; // type:function size:0x18
|
||||
isInEvent__17daPlayerActBase_cFv = .text:0x8005B750; // type:function size:0x24
|
||||
@@ -2860,7 +2860,7 @@ CreateArcEntry__22ArcCallbackHandlerBaseFPvPCc = .text:0x800651C0; // type:funct
|
||||
DestroyArcEntry__22ArcCallbackHandlerBaseFPCc = .text:0x800653D0; // type:function size:0x194
|
||||
__sinit_\arc_callback_handler_cpp = .text:0x80065570; // type:function size:0x20 scope:local
|
||||
create__6mVideoFv = .text:0x80065590; // type:function size:0x54
|
||||
fn_800655F0 = .text:0x800655F0; // type:function size:0x4
|
||||
enableDimming__6dVideoFi = .text:0x800655F0; // type:function size:0x4
|
||||
__ct__8dCsMgr_cFv = .text:0x80065600; // type:function size:0x3C
|
||||
execute__8dCsMgr_cFv = .text:0x80065640; // type:function size:0x164
|
||||
registCursor__8dCsMgr_cFP18dCursorInterface_c = .text:0x800657B0; // type:function size:0x58
|
||||
@@ -4062,13 +4062,14 @@ onEnter__Q23EGG6ThreadFv = .text:0x800BD600; // type:function size:0x4
|
||||
create__17NandResultTrackerFPQ23EGG4Heap = .text:0x800BD610; // type:function size:0x34
|
||||
GetInstance__17NandResultTrackerFv = .text:0x800BD650; // type:function size:0x8
|
||||
isFailure__17NandResultTrackerF10NANDResult = .text:0x800BD660; // type:function size:0x5C
|
||||
fn_800BD6C0 = .text:0x800BD6C0; // type:function size:0x34
|
||||
fn_800BD700 = .text:0x800BD700; // type:function size:0x74
|
||||
fn_800BD780 = .text:0x800BD780; // type:function size:0x18
|
||||
fn_800BD7A0 = .text:0x800BD7A0; // type:function size:0x74
|
||||
fn_800BD820 = .text:0x800BD820; // type:function size:0x8
|
||||
fn_800BD830 = .text:0x800BD830; // type:function size:0x78
|
||||
fn_800BD8B0 = .text:0x800BD8B0; // type:function size:0x10
|
||||
draw__17NandResultTrackerFv = .text:0x800BD6C0; // type:function size:0x34
|
||||
execute__17NandResultTrackerFv = .text:0x800BD700; // type:function size:0x74
|
||||
init__17NandResultTrackerFv = .text:0x800BD780; // type:function size:0x10
|
||||
ModeRequestNormal__17NandResultTrackerFv = .text:0x800BD790; // type:function size:0x8
|
||||
ModeProc_Normal__17NandResultTrackerFv = .text:0x800BD7A0; // type:function size:0x74
|
||||
ModeRequestError__17NandResultTrackerFv = .text:0x800BD820; // type:function size:0x8
|
||||
ModeProc_Error__17NandResultTrackerFv = .text:0x800BD830; // type:function size:0x78
|
||||
ModeRequest__17NandResultTrackerFQ217NandResultTracker6Mode_e = .text:0x800BD8B0; // type:function size:0x10
|
||||
init__16SceneflagManagerFv = .text:0x800BD8C0; // type:function size:0x4
|
||||
setShouldCommit__16SceneflagManagerFUs = .text:0x800BD8D0; // type:function size:0xC
|
||||
__ct__16SceneflagManagerFv = .text:0x800BD8E0; // type:function size:0x64
|
||||
@@ -8465,27 +8466,27 @@ fn_80150430 = .text:0x80150430; // type:function size:0x34
|
||||
fn_80150470 = .text:0x80150470; // type:function size:0x1CC
|
||||
fn_80150640 = .text:0x80150640; // type:function size:0x28
|
||||
fn_80150670 = .text:0x80150670; // type:function size:0x28
|
||||
fn_801506A0 = .text:0x801506A0; // type:function size:0x138
|
||||
__ct__22dLytSystemWindowMain_cFv = .text:0x801506A0; // type:function size:0x138
|
||||
fn_801507E0 = .text:0x801507E0; // type:function size:0x40
|
||||
fn_80150820 = .text:0x80150820; // type:function size:0x10C
|
||||
fn_80150930 = .text:0x80150930; // type:function size:0x78
|
||||
fn_801509B0 = .text:0x801509B0; // type:function size:0xA0
|
||||
fn_80150A50 = .text:0x80150A50; // type:function size:0x60
|
||||
build__22dLytSystemWindowMain_cFv = .text:0x80150930; // type:function size:0x78
|
||||
calc__22dLytSystemWindowMain_cFv = .text:0x801509B0; // type:function size:0xA0
|
||||
draw__22dLytSystemWindowMain_cFv = .text:0x80150A50; // type:function size:0x60
|
||||
fn_80150AB0 = .text:0x80150AB0; // type:function size:0x1A8
|
||||
fn_80150C60 = .text:0x80150C60; // type:function size:0xC
|
||||
init__22dLytSystemWindowMain_cFv = .text:0x80150C60; // type:function size:0xC
|
||||
fn_80150C70 = .text:0x80150C70; // type:function size:0xC
|
||||
fn_80150C80 = .text:0x80150C80; // type:function size:0x230
|
||||
fn_80150EB0 = .text:0x80150EB0; // type:function size:0x24
|
||||
fn_80150EE0 = .text:0x80150EE0; // type:function size:0x24
|
||||
setProperties__22dLytSystemWindowMain_cFPCcbPCw = .text:0x80150C80; // type:function size:0x230
|
||||
fn_80150EB0__22dLytSystemWindowMain_cFv = .text:0x80150EB0; // type:function size:0x24
|
||||
fn_80150EE0__22dLytSystemWindowMain_cFv = .text:0x80150EE0; // type:function size:0x24
|
||||
fn_80150F10 = .text:0x80150F10; // type:function size:0x14
|
||||
fn_80150F30 = .text:0x80150F30; // type:function size:0x1C
|
||||
fn_80150F50 = .text:0x80150F50; // type:function size:0x5C
|
||||
fn_80150FB0 = .text:0x80150FB0; // type:function size:0x24
|
||||
fn_80150FE0 = .text:0x80150FE0; // type:function size:0xC
|
||||
fn_80150FF0 = .text:0x80150FF0; // type:function size:0xC
|
||||
fn_80151000 = .text:0x80151000; // type:function size:0xC
|
||||
fn_80150F30__22dLytSystemWindowMain_cFl = .text:0x80150F30; // type:function size:0x1C
|
||||
requestABtnOut__22dLytSystemWindowMain_cFv = .text:0x80150F50; // type:function size:0x5C
|
||||
fn_80150FB0__22dLytSystemWindowMain_cFv = .text:0x80150FB0; // type:function size:0x24
|
||||
fn_80150FE0__22dLytSystemWindowMain_cFv = .text:0x80150FE0; // type:function size:0xC
|
||||
fn_80150FF0__22dLytSystemWindowMain_cFv = .text:0x80150FF0; // type:function size:0xC
|
||||
fn_80151000__22dLytSystemWindowMain_cFv = .text:0x80151000; // type:function size:0xC
|
||||
fn_80151010 = .text:0x80151010; // type:function size:0x1C
|
||||
fn_80151030 = .text:0x80151030; // type:function size:0x10
|
||||
isPointerWithinWindow__22dLytSystemWindowMain_cFv = .text:0x80151030; // type:function size:0x10
|
||||
fn_80151040 = .text:0x80151040; // type:function size:0x90
|
||||
fn_801510D0 = .text:0x801510D0; // type:function size:0xA0
|
||||
fn_80151170 = .text:0x80151170; // type:function size:0x1EC
|
||||
@@ -19953,7 +19954,7 @@ enterHelp__15dSndPlayerMgr_cFv = .text:0x8035E540; // type:function size:0x18
|
||||
leaveHelp__15dSndPlayerMgr_cFv = .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_8035E620__15dSndPlayerMgr_cFv = .text:0x8035E620; // type:function size:0xB4
|
||||
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
|
||||
@@ -27845,7 +27846,7 @@ fontMgrIndex = .rodata:0x804DDFF0; // type:object size:0x14 scope:local
|
||||
@LOCAL@createLayoutResHeap__5dHeapFUlPQ23EGG4Heap@name = .rodata:0x804DE114; // type:object size:0x31 scope:local
|
||||
@LOCAL@createFontHeap__5dHeapFUlPQ23EGG4Heap@name = .rodata:0x804DE148; // type:object size:0x22 scope:local
|
||||
@LOCAL@createHBMHeap__5dHeapFUlPQ23EGG4Heap@name = .rodata:0x804DE16C; // type:object size:0x1C scope:local
|
||||
lbl_804DE188 = .rodata:0x804DE188; // type:object size:0x60
|
||||
@LOCAL@executeProc__13dPadManager_cFv@procs = .rodata:0x804DE188; // type:object size:0x60 scope:local
|
||||
@26290 = .rodata:0x804DE1E8; // type:object size:0xA scope:local data:string
|
||||
...rodata.0 = .rodata:0x804DE1E8; // type:label scope:local
|
||||
@26295 = .rodata:0x804DE1F4; // type:object size:0xC scope:local data:string
|
||||
@@ -28239,10 +28240,10 @@ sReplacementSequences = .rodata:0x804E39E0; // type:object size:0x10 scope:local
|
||||
sUpperCaseChars = .rodata:0x804E39F0; // type:object size:0x240 scope:local data:2byte
|
||||
sMsgWindowFlags = .rodata:0x804E3C30; // type:object size:0x1004 scope:local
|
||||
@LOCAL@symbolToFontIdx__15dTagProcessor_cFl@index = .rodata:0x804E4C34; // type:object size:0x1C scope:local data:string
|
||||
lbl_804E4C50 = .rodata:0x804E4C50; // type:object size:0x18
|
||||
lbl_804E4C68 = .rodata:0x804E4C68; // type:object size:0xC data:string
|
||||
lbl_804E4C74 = .rodata:0x804E4C74; // type:object size:0xC data:string
|
||||
lbl_804E4C80 = .rodata:0x804E4C80; // type:object size:0xC data:string
|
||||
@LOCAL@execute__17NandResultTrackerFv@procs = .rodata:0x804E4C50; // type:object size:0x18 scope:local
|
||||
@4322 = .rodata:0x804E4C68; // type:object size:0xC scope:local data:string
|
||||
@4323 = .rodata:0x804E4C74; // type:object size:0xC scope:local data:string
|
||||
@4324 = .rodata:0x804E4C80; // type:object size:0xC scope:local data:string
|
||||
lbl_804E4C90 = .rodata:0x804E4C90; // type:object size:0x18
|
||||
lbl_804E4CA8 = .rodata:0x804E4CA8; // type:object size:0x10 align:4 data:float
|
||||
lbl_804E4CB8 = .rodata:0x804E4CB8; // type:object size:0x10 align:4 data:float
|
||||
@@ -30796,18 +30797,24 @@ special_00__10dFontMng_c = .data:0x8050D40C; // type:object size:0x11 scope:glob
|
||||
@4045 = .data:0x8050D420; // type:object size:0x9 scope:local data:string
|
||||
@4046 = .data:0x8050D42C; // type:object size:0xF scope:local data:string
|
||||
__vt__14dHeapAllocator = .data:0x8050D440; // type:object size:0x14
|
||||
lbl_8050D458 = .data:0x8050D458; // type:object size:0xC data:string
|
||||
lbl_8050D464 = .data:0x8050D464; // type:object size:0x10
|
||||
lbl_8050D474 = .data:0x8050D474; // type:object size:0x10
|
||||
lbl_8050D484 = .data:0x8050D484; // type:object size:0x10
|
||||
lbl_8050D494 = .data:0x8050D494; // type:object size:0xC data:string
|
||||
lbl_8050D4A0 = .data:0x8050D4A0; // type:object size:0xC data:string
|
||||
jumptable_8050D4AC = .data:0x8050D4AC; // type:object size:0x7C scope:local
|
||||
lbl_8050D528 = .data:0x8050D528; // type:object size:0x30
|
||||
jumptable_8050D558 = .data:0x8050D558; // type:object size:0x54 scope:local
|
||||
lbl_8050D5AC = .data:0x8050D5AC; // type:object size:0x24
|
||||
jumptable_8050D5D0 = .data:0x8050D5D0; // type:object size:0x44 scope:local
|
||||
lbl_8050D614 = .data:0x8050D614; // type:object size:0xC
|
||||
@11471 = .data:0x8050D458; // type:object size:0xC scope:local data:string
|
||||
...data.0 = .data:0x8050D458; // type:label scope:local
|
||||
@11472 = .data:0x8050D464; // type:object size:0xE scope:local data:string
|
||||
@11499 = .data:0x8050D474; // type:object size:0xF scope:local data:string
|
||||
@11525 = .data:0x8050D484; // type:object size:0xF scope:local data:string
|
||||
@10312 = .data:0x8050D494; // type:object size:0xC scope:local data:string
|
||||
@10313 = .data:0x8050D4A0; // type:object size:0xC scope:local data:string
|
||||
@11568 = .data:0x8050D4AC; // type:object size:0x7C scope:local
|
||||
@11603 = .data:0x8050D528; // type:object size:0xC scope:local data:string
|
||||
@11682 = .data:0x8050D534; // type:object size:0xC scope:local data:string
|
||||
@11683 = .data:0x8050D540; // type:object size:0xC scope:local data:string
|
||||
@11684 = .data:0x8050D54C; // type:object size:0x9 scope:local data:string
|
||||
@11686 = .data:0x8050D558; // type:object size:0x54 scope:local
|
||||
@11785 = .data:0x8050D5AC; // type:object size:0xC scope:local data:string
|
||||
@11786 = .data:0x8050D5B8; // type:object size:0xC scope:local data:string
|
||||
@11787 = .data:0x8050D5C4; // type:object size:0xC scope:local data:string
|
||||
@11789 = .data:0x8050D5D0; // type:object size:0x44 scope:local
|
||||
__vt__13dPadManager_c = .data:0x8050D614; // type:object size:0xC
|
||||
lbl_8050D620 = .data:0x8050D620; // type:object size:0xC data:string
|
||||
lbl_8050D62C = .data:0x8050D62C; // type:object size:0xC data:string
|
||||
lbl_8050D638 = .data:0x8050D638; // type:object size:0xC data:string
|
||||
@@ -31115,7 +31122,7 @@ __vt__17NandRequestThread = .data:0x80510B30; // type:object size:0x18
|
||||
__vt__16NandRequestWrite = .data:0x80510B48; // type:object size:0xC
|
||||
__vt__17NandRequestCreate = .data:0x80510B54; // type:object size:0xC
|
||||
__vt__16NandRequestCheck = .data:0x80510B60; // type:object size:0xC
|
||||
lbl_80510B70 = .data:0x80510B70; // type:object size:0x18
|
||||
@LOCAL@ModeProc_Error__17NandResultTrackerFv@sMessages = .data:0x80510B70; // type:object size:0x14 scope:local
|
||||
__vt__32MyFlagManager<15ItemflagManager> = .data:0x80510B88; // type:object size:0x3C scope:weak
|
||||
__vt__33MyFlagManager<16StoryflagManager> = .data:0x80510BC4; // type:object size:0x3C scope:weak
|
||||
__vt__33MyFlagManager<16EnemyflagManager> = .data:0x80510C00; // type:object size:0x14 scope:weak
|
||||
@@ -39313,7 +39320,7 @@ lbl_80571C48 = .sdata:0x80571C48; // type:object size:0x8
|
||||
g_CurrentScreenTo4x3WidthScale__6dGfx_c = .sdata:0x80571C50; // type:object size:0x4 align:4 data:float
|
||||
sAssertOnAllocFailure = .sdata:0x80571C58; // type:object size:0x1 scope:local data:byte
|
||||
m_current_ex__Q24dPad4ex_c = .sdata:0x80571C60; // type:object size:0x4 data:4byte
|
||||
lbl_80571C68 = .sdata:0x80571C68; // type:object size:0x8
|
||||
@LOCAL@ModeProc_Calibrating__13dPadManager_cFv@s_messages = .sdata:0x80571C68; // type:object size:0x8 scope:local
|
||||
OBTAINED_ITEM_ID = .sdata:0x80571C70; // type:object size:0x4 data:4byte
|
||||
sCurrentSword__17daPlayerActBase_c = .sdata:0x80571C74; // type:object size:0x1 data:byte
|
||||
lbl_80571C78 = .sdata:0x80571C78; // type:object size:0x8 data:4byte
|
||||
@@ -41420,7 +41427,7 @@ s_ExecuteControlFlags__7dBase_c = .sbss:0x805750C0; // type:object size:0x4 data
|
||||
s_DrawControlFlags__7dBase_c = .sbss:0x805750C4; // type:object size:0x4 data:4byte
|
||||
s_NextExecuteControlFlags__7dBase_c = .sbss:0x805750C8; // type:object size:0x4 data:4byte
|
||||
sInstance__16dDvdDriveError_c = .sbss:0x805750D0; // type:object size:0x4 data:4byte
|
||||
sInstance__Q27dDvdUnk7FontUnk = .sbss:0x805750D8; // type:object size:0x8 data:4byte
|
||||
sInstance__Q27dDvdUnk7FontUnk = .sbss:0x805750D8; // type:object size:0x4 data:4byte
|
||||
pDynamicNameTable = .sbss:0x805750E0; // type:object size:0x4 data:4byte
|
||||
nDynamicNameTable = .sbss:0x805750E4; // type:object size:0x4 data:4byte
|
||||
pDMC__4dDyl = .sbss:0x805750E8; // type:object size:0x4 data:4byte
|
||||
@@ -41479,7 +41486,7 @@ HBMHeap__5dHeap = .sbss:0x805751C8; // type:object size:0x4 data:4byte
|
||||
lbl_805751D0 = .sbss:0x805751D0; // type:object size:0x8 data:4byte
|
||||
dMain__g_InitialTime = .sbss:0x805751D8; // type:object size:0x8 data:4byte
|
||||
m_connected__Q24dPad4ex_c = .sbss:0x805751E0; // type:object size:0x4
|
||||
sInstance__15dPauseManager_c = .sbss:0x805751E8; // type:object size:0x8 data:4byte
|
||||
sInstance__13dPadManager_c = .sbss:0x805751E8; // type:object size:0x8 data:4byte
|
||||
LINK_ROT = .sbss:0x805751F0; // type:object size:0x2 data:2byte
|
||||
LINK_ROT_2 = .sbss:0x805751F4; // type:object size:0x2 data:2byte
|
||||
lbl_805751F6 = .sbss:0x805751F6; // type:object size:0x1 data:byte
|
||||
@@ -41583,7 +41590,7 @@ sInstance__14dTimeAreaMgr_c = .sbss:0x805753C0; // type:object size:0x4 data:4by
|
||||
TIMESHIFT_TRANSITION_BORDER_COLOR = .sbss:0x805753C4; // type:object size:0x1 data:byte
|
||||
CURR_TIMESHIFT_STONE_ACTIVE = .sbss:0x805753C8; // type:object size:0x8 data:4byte
|
||||
sInstance__17NandRequestThread = .sbss:0x805753D0; // type:object size:0x8 data:4byte
|
||||
lbl_805753D8 = .sbss:0x805753D8; // type:object size:0x8 data:4byte
|
||||
sInstance__17NandResultTracker = .sbss:0x805753D8; // type:object size:0x4 data:4byte
|
||||
sInstance__16SceneflagManager = .sbss:0x805753E0; // type:object size:0x4 data:4byte
|
||||
sTempFlags__16SceneflagManager = .sbss:0x805753E8; // type:object size:0x8
|
||||
sInstance__15TBoxflagManager = .sbss:0x805753F0; // type:object size:0x4 data:4byte
|
||||
@@ -43084,7 +43091,7 @@ lbl_80576FF8 = .sdata2:0x80576FF8; // type:object size:0x4 align:4 data:float
|
||||
lbl_80576FFC = .sdata2:0x80576FFC; // type:object size:0x4 align:4 data:float
|
||||
lbl_80577000 = .sdata2:0x80577000; // type:object size:0x4 align:4 data:float
|
||||
lbl_80577004 = .sdata2:0x80577004; // type:object size:0x4 align:4 data:float
|
||||
lbl_80577008 = .sdata2:0x80577008; // type:object size:0x4 align:4 data:float
|
||||
@11566 = .sdata2:0x80577008; // type:object size:0x4 scope:local align:4 data:float
|
||||
lbl_80577010 = .sdata2:0x80577010; // type:object size:0x4 align:4 data:float
|
||||
lbl_80577014 = .sdata2:0x80577014; // type:object size:0x4 align:4 data:float
|
||||
lbl_80577018 = .sdata2:0x80577018; // type:object size:0x4 align:4 data:float
|
||||
|
||||
+3
-3
@@ -423,7 +423,7 @@ config.libs = [
|
||||
Object(Matching, "d/d_cc.cpp"),
|
||||
Object(Matching, "d/d_dvd.cpp"),
|
||||
Object(Matching, "d/d_dvd_drive_error.cpp"),
|
||||
Object(NonMatching, "d/d_dvd_unk.cpp"),
|
||||
Object(Matching, "d/d_dvd_unk.cpp"),
|
||||
Object(NonMatching, "d/d_dylink.cpp"),
|
||||
Object(Matching, "d/d_fader.cpp"),
|
||||
Object(Matching, "d/d_font_manager.cpp"),
|
||||
@@ -433,7 +433,7 @@ config.libs = [
|
||||
Object(NonMatching, "d/d_main.cpp"),
|
||||
Object(NonMatching, "d/d_pad.cpp"),
|
||||
Object(Matching, "d/d_pad_ex.cpp"),
|
||||
Object(NonMatching, "d/d_pause_manager.cpp"),
|
||||
Object(Matching, "d/d_pad_manager.cpp"),
|
||||
Object(NonMatching, "d/d_player_act.cpp"),
|
||||
Object(Matching, "d/d_player_mdl.cpp"),
|
||||
Object(Matching, "d/d_player_guide_colors.cpp"),
|
||||
@@ -482,7 +482,7 @@ config.libs = [
|
||||
Object(Matching, "d/d_tag_processor.cpp"),
|
||||
Object(NonMatching, "toBeSorted/time_area_mgr.cpp"),
|
||||
Object(NonMatching, "toBeSorted/nand_request_thread.cpp"),
|
||||
Object(NonMatching, "toBeSorted/nand_result_tracker.cpp"),
|
||||
Object(Matching, "toBeSorted/nand_result_tracker.cpp"),
|
||||
Object(Matching, "d/flag/flag_managers.cpp"),
|
||||
Object(NonMatching, "toBeSorted/bigboss_model_math_stuff.cpp"),
|
||||
Object(NonMatching, "toBeSorted/actor_event_flow_manager_related.cpp"),
|
||||
|
||||
+16
-10
@@ -22,15 +22,17 @@ public:
|
||||
int update();
|
||||
bool drawDirectly();
|
||||
|
||||
void setField703(bool val) {
|
||||
field_0x703 = val;
|
||||
void setVisible(bool val) {
|
||||
mVisible = val;
|
||||
}
|
||||
|
||||
void setField704(bool val) {
|
||||
field_0x704 = val;
|
||||
void setDrawDirectly(bool val) {
|
||||
mDrawDirectly = val;
|
||||
}
|
||||
void setField705(bool val) {
|
||||
field_0x705 = val;
|
||||
bool getDrawDirectly() const {
|
||||
return mDrawDirectly;
|
||||
}
|
||||
void setCalibrationPointCenterEnabled(bool val) {
|
||||
mCalibrationPointCenterEnabled = val;
|
||||
}
|
||||
|
||||
dCursorHitCheck_c *getHitCheck() {
|
||||
@@ -41,6 +43,10 @@ public:
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
void setCursorStickVisible(bool visible) {
|
||||
mCursorStick.setShouldBeOn(visible);
|
||||
}
|
||||
|
||||
private:
|
||||
static dCsBase_c *sInstance;
|
||||
void setCurrentLyt(int lyt);
|
||||
@@ -54,9 +60,9 @@ private:
|
||||
/* 0x6F8 */ mVec2_c mCsVelocity;
|
||||
/* 0x700 */ mAng field_0x700;
|
||||
/* 0x702 */ u8 mAlpha;
|
||||
/* 0x703 */ u8 field_0x703;
|
||||
/* 0x704 */ u8 field_0x704;
|
||||
/* 0x705 */ u8 field_0x705;
|
||||
/* 0x703 */ bool mVisible;
|
||||
/* 0x704 */ bool mDrawDirectly;
|
||||
/* 0x705 */ bool mCalibrationPointCenterEnabled;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -16,6 +16,10 @@ public:
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
s32 getStatus() const {
|
||||
return mDvdDriveStatus;
|
||||
}
|
||||
|
||||
private:
|
||||
static dDvdDriveError_c *sInstance;
|
||||
|
||||
|
||||
+57
-21
@@ -4,15 +4,29 @@
|
||||
#include "common.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
|
||||
// This file is related to errors that are
|
||||
// displayed on the screen, using a backup font
|
||||
// included in the DOL.
|
||||
// TODO - rename when NSMBW figures out their type;
|
||||
// they too apparently have a type with a ResFont at 0x00,
|
||||
// which will be revealed when NSMBW function 80107090 is cracked
|
||||
|
||||
namespace dDvdUnk {
|
||||
|
||||
class FontUnk {
|
||||
private:
|
||||
enum Error_e {
|
||||
ERROR_NONE,
|
||||
ERROR_DISK,
|
||||
ERROR_PAD,
|
||||
ERROR_NAND,
|
||||
};
|
||||
|
||||
enum Flag_e {
|
||||
FLAG_ERROR_REQUEST = 0x1,
|
||||
FLAG_0x2 = 0x2,
|
||||
FLAG_ERROR_STATE = 0x4,
|
||||
};
|
||||
|
||||
public:
|
||||
FontUnk() : field_0x2D(0) {}
|
||||
FontUnk() : mFlags(0) {}
|
||||
|
||||
static FontUnk *GetInstance() {
|
||||
return sInstance;
|
||||
@@ -20,25 +34,35 @@ public:
|
||||
|
||||
static void create(EGG::Heap *heap);
|
||||
void init();
|
||||
void execute();
|
||||
void drawNonDriveError();
|
||||
void drawDriveError();
|
||||
|
||||
void preExecute();
|
||||
|
||||
bool isAnyError() const;
|
||||
void onError();
|
||||
void clearNandTrackerError();
|
||||
|
||||
void fn_800529B0();
|
||||
void fn_800529E0();
|
||||
void clearNandError();
|
||||
void fn_80052A20();
|
||||
void fn_80052D00(bool);
|
||||
void fn_80052CC0();
|
||||
void setNeedsPad(bool);
|
||||
bool padErrorsAllowed();
|
||||
void fn_80052D50();
|
||||
void fn_80052C90();
|
||||
void fn_80052C60();
|
||||
void fn_80052DD0();
|
||||
|
||||
s32 getField_0x24() const {
|
||||
return field_0x24;
|
||||
s32 getNandError() const {
|
||||
return mNandErrorCode;
|
||||
}
|
||||
|
||||
bool getField_0x28() const {
|
||||
return field_0x28;
|
||||
bool isDiskError() const {
|
||||
return mIsDiskError;
|
||||
}
|
||||
|
||||
u8 getField_0x29() const {
|
||||
return field_0x29;
|
||||
bool isNandError() const {
|
||||
return mIsNandError;
|
||||
}
|
||||
|
||||
void setField_0x2C(u8 val) {
|
||||
@@ -52,16 +76,28 @@ public:
|
||||
private:
|
||||
static FontUnk *sInstance;
|
||||
|
||||
void onFlag(u8 mask) {
|
||||
mFlags |= mask;
|
||||
}
|
||||
|
||||
void offFlag(u8 mask) {
|
||||
mFlags &= ~mask;
|
||||
}
|
||||
|
||||
bool checkFlag(u8 mask) const {
|
||||
return (mFlags & mask) != 0;
|
||||
}
|
||||
|
||||
/* 0x00 */ nw4r::ut::ResFont mFont;
|
||||
/* 0x1C */ s32 field_0x1C;
|
||||
/* 0x20 */ s32 field_0x20;
|
||||
/* 0x24 */ s32 field_0x24;
|
||||
/* 0x28 */ bool field_0x28;
|
||||
/* 0x29 */ u8 field_0x29;
|
||||
/* 0x2A */ u8 field_0x2A;
|
||||
/* 0x1C */ s32 mErrorType;
|
||||
/* 0x20 */ s32 mDiskErrorCode;
|
||||
/* 0x24 */ s32 mNandErrorCode;
|
||||
/* 0x28 */ bool mIsDiskError;
|
||||
/* 0x29 */ bool mIsNandError;
|
||||
/* 0x2A */ bool mIsPadError;
|
||||
/* 0x2B */ u8 field_0x2B;
|
||||
/* 0x2C */ u8 field_0x2C;
|
||||
/* 0x2D */ u8 field_0x2D;
|
||||
/* 0x2D */ u8 mFlags;
|
||||
};
|
||||
|
||||
} // namespace dDvdUnk
|
||||
|
||||
+9
-4
@@ -28,14 +28,19 @@ public:
|
||||
mDrawCallback = cb;
|
||||
}
|
||||
|
||||
void setField0x09(u8 val) {
|
||||
field_0x09 = val;
|
||||
void setLetterboxEnabled(bool val) {
|
||||
mLetterboxEnabled = val;
|
||||
}
|
||||
|
||||
static dGfx_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
static void doDrawCapTexture() {
|
||||
nw4r::ut::Color c(0xFFFFFFFF);
|
||||
sInstance->drawCapTexture(sInstance->mpTextureBuffer, &c);
|
||||
}
|
||||
|
||||
public:
|
||||
// clang-format off
|
||||
static s32 getCurrentScreenWidth() { return g_CurrentScreenWidth_s32; }
|
||||
@@ -137,8 +142,8 @@ private:
|
||||
|
||||
/* 0x00 */ EGG::TextureBuffer *mpTextureBuffer;
|
||||
/* 0x04 */ DrawCallback mDrawCallback;
|
||||
/* 0x08 */ u8 field_0x08;
|
||||
/* 0x09 */ u8 field_0x09;
|
||||
/* 0x08 */ u8 mBufRefcount;
|
||||
/* 0x09 */ bool mLetterboxEnabled;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+7
-3
@@ -137,10 +137,10 @@ public:
|
||||
static void setInfo(s32 chan, const WPADInfo *pInfo);
|
||||
|
||||
static f32 fn_80058F50();
|
||||
static bool fn_80058F60();
|
||||
static bool startCurrentMplsCalibration();
|
||||
static f32 getCurrentCalibrationWork();
|
||||
static void fn_80058FF0();
|
||||
static void fn_80059000();
|
||||
static void stopCurrentMplsCalibration();
|
||||
static void centerCurrentCursor();
|
||||
static bool needMplsCalibration();
|
||||
static void setCalibrateMpls();
|
||||
static bool fn_800590B0();
|
||||
@@ -168,6 +168,10 @@ public:
|
||||
void getUnifiedWpadStatus(s32 chan);
|
||||
void calcFSStickDirMask();
|
||||
|
||||
void setNoCalibrationNeeded() {
|
||||
mNeedMplsCalibration = false;
|
||||
}
|
||||
|
||||
static void setNoSleep();
|
||||
static void setAutoSleepTime();
|
||||
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
#ifndef D_PAD_MANAGER_H
|
||||
#define D_PAD_MANAGER_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/lyt/d_lyt_system_window.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
|
||||
class dPadManager_c {
|
||||
public:
|
||||
dPadManager_c();
|
||||
virtual ~dPadManager_c();
|
||||
|
||||
static bool create(EGG::Heap *pHeap);
|
||||
void init();
|
||||
bool execute();
|
||||
bool draw();
|
||||
|
||||
static void buildWindow();
|
||||
|
||||
static dPadManager_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
bool isCalibrationFinished() const {
|
||||
return mCalibrationFinished;
|
||||
}
|
||||
bool isCalibrationSkipped() const {
|
||||
return mCalibrationSkipped;
|
||||
}
|
||||
bool getField_0x25() const {
|
||||
return field_0x25;
|
||||
}
|
||||
bool isError() const {
|
||||
return mIsError;
|
||||
}
|
||||
|
||||
void setField_0x1F(bool b) {
|
||||
field_0x1F = b;
|
||||
}
|
||||
bool getField_0x1F() const {
|
||||
return field_0x1F;
|
||||
}
|
||||
|
||||
|
||||
void requestMplsCalibration();
|
||||
|
||||
private:
|
||||
typedef void (dPadManager_c::*ModeFunc)();
|
||||
|
||||
void executeProc();
|
||||
static s32 get30SecondsInTicks();
|
||||
static s32 get3Point3SecondsInTicks();
|
||||
/* static */ s32 get1Point5SecondsInTicks();
|
||||
|
||||
enum Mode_e {
|
||||
Normal = 0,
|
||||
ReconnectPad = 1,
|
||||
AttachMplsAndNunchuk = 2,
|
||||
AttachNunchuk = 3,
|
||||
Calibrating = 4,
|
||||
LowBattery = 5,
|
||||
PointCenter = 6,
|
||||
CalibrationFail = 7,
|
||||
};
|
||||
|
||||
enum PadStatus_e {
|
||||
PAD_DISCONNECTED = 0,
|
||||
PAD_NO_MPLS = 1,
|
||||
PAD_NO_NUNCHUK = 2,
|
||||
PAD_NEED_CALIBRATION = 3,
|
||||
PAD_CONFIGURING_MPLS = 4,
|
||||
PAD_NEED_POINT_CENTER = 5,
|
||||
PAD_NORMAL = 6,
|
||||
};
|
||||
|
||||
void ModeRequestNormal();
|
||||
void ModeProc_Normal();
|
||||
|
||||
void ModeRequestReconnectPad();
|
||||
void ModeProc_ReconnectPad();
|
||||
|
||||
void ModeRequestAttachMplsAndNunchuk();
|
||||
void ModeProc_AttachMplsAndNunchuk();
|
||||
|
||||
void ModeRequestAttachNunchuk();
|
||||
void ModeProc_AttachNunchuk();
|
||||
|
||||
void ModeRequestCalibrating();
|
||||
void ModeProc_Calibrating();
|
||||
|
||||
void ModeRequestLowBattery();
|
||||
void ModeProc_LowBattery();
|
||||
|
||||
void ModeRequestPointCenter();
|
||||
void ModeProc_PointCenter();
|
||||
|
||||
void ModeRequestCalibrationFail();
|
||||
void ModeProc_CalibrationFail();
|
||||
|
||||
void ModeRequest(Mode_e mode);
|
||||
void ModeRequestNext(PadStatus_e status);
|
||||
|
||||
PadStatus_e getPadStatus();
|
||||
bool isOutOfBattery();
|
||||
|
||||
/* 0x04 */ dLytSystemWindowMain_c *mpWindow;
|
||||
/* 0x08 */ PadStatus_e mPadStatus;
|
||||
/* 0x0C */ Mode_e mMode;
|
||||
/* 0x10 */ s32 mStep;
|
||||
/* 0x14 */ s32 mCalibrationTimer;
|
||||
/* 0x18 */ s32 mStepTimer;
|
||||
/* 0x1C */ bool mIsError;
|
||||
/* 0x1D */ bool field_0x1D;
|
||||
/* 0x1E */ bool field_0x1E;
|
||||
/* 0x1F */ bool field_0x1F;
|
||||
/* 0x20 */ bool field_0x20;
|
||||
/* 0x21 */ bool mCalibrationFinished;
|
||||
/* 0x22 */ bool mSavedCsDrawDirectly;
|
||||
/* 0x23 */ bool field_0x23;
|
||||
/* 0x24 */ bool mCalibrationSkipped;
|
||||
/* 0x25 */ bool field_0x25;
|
||||
|
||||
static dPadManager_c *sInstance;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,23 +0,0 @@
|
||||
#ifndef D_PAUSE_H
|
||||
#define D_PAUSE_H
|
||||
|
||||
#include "common.h"
|
||||
|
||||
// reference to NSMBW PauseManage_c (im adding back the d)
|
||||
class dPauseManager_c {
|
||||
public:
|
||||
static dPauseManager_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
bool getField_0x25() const {
|
||||
return field_0x25;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x00 */ u8 _00[0x25 - 0x00];
|
||||
/* 0x25 */ bool field_0x25;
|
||||
|
||||
static dPauseManager_c *sInstance;
|
||||
};
|
||||
|
||||
#endif
|
||||
+17
-16
@@ -24,22 +24,22 @@ public:
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
u8 getField_0x5E2() const {
|
||||
bool getField_0x5E2() const {
|
||||
return field_0x5E2;
|
||||
}
|
||||
void setField_0x5E2(u8 val) {
|
||||
void setField_0x5E2(bool val) {
|
||||
field_0x5E2 = val;
|
||||
}
|
||||
u8 getField_0x5E3() const {
|
||||
bool getField_0x5E3() const {
|
||||
return field_0x5E3;
|
||||
}
|
||||
void setField_0x5E3(u8 val) {
|
||||
void setField_0x5E3(bool val) {
|
||||
field_0x5E3 = val;
|
||||
}
|
||||
u8 getField_0x5E4() const {
|
||||
bool getField_0x5E4() const {
|
||||
return field_0x5E4;
|
||||
}
|
||||
void setField_0x5E4(u8 val) {
|
||||
void setField_0x5E4(bool val) {
|
||||
field_0x5E4 = val;
|
||||
}
|
||||
|
||||
@@ -76,6 +76,7 @@ private:
|
||||
virtual void deleteReady() override;
|
||||
|
||||
bool checkDone();
|
||||
bool tryLoadTitleScreen();
|
||||
|
||||
static void drawCallback();
|
||||
|
||||
@@ -99,16 +100,16 @@ private:
|
||||
/* 0x574 */ STATE_MGR_DECLARE(dScBoot_c);
|
||||
/* 0x5B4 */ dFader_c mFader;
|
||||
/* 0x5D4 */ s32 mProgressStage;
|
||||
/* 0x5D8 */ u32 field_0x5D8;
|
||||
/* 0x5DC */ u8 field_0x5DC;
|
||||
/* 0x5DD */ u8 field_0x5DD;
|
||||
/* 0x5DE */ u8 field_0x5DE;
|
||||
/* 0x5DF */ u8 field_0x5DF;
|
||||
/* 0x5E0 */ u8 field_0x5E0;
|
||||
/* 0x5E1 */ u8 field_0x5E1;
|
||||
/* 0x5E2 */ u8 field_0x5E2;
|
||||
/* 0x5E3 */ u8 field_0x5E3;
|
||||
/* 0x5E4 */ u8 field_0x5E4;
|
||||
/* 0x5D8 */ s32 field_0x5D8;
|
||||
/* 0x5DC */ bool mStrapScreenSeen;
|
||||
/* 0x5DD */ bool mCalibrationDone;
|
||||
/* 0x5DE */ bool mAllDataLoaded;
|
||||
/* 0x5DF */ bool mObjectDataLoaded;
|
||||
/* 0x5E0 */ bool field_0x5E0;
|
||||
/* 0x5E1 */ bool mStrapScreenVisible;
|
||||
/* 0x5E2 */ bool field_0x5E2;
|
||||
/* 0x5E3 */ bool field_0x5E3;
|
||||
/* 0x5E4 */ bool field_0x5E4;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef D_VIDEO_H
|
||||
#define D_VIDEO_H
|
||||
|
||||
namespace dVideo {
|
||||
|
||||
void enableDimming(int);
|
||||
|
||||
} // namespace dVideo
|
||||
|
||||
#endif
|
||||
@@ -11,6 +11,10 @@ public:
|
||||
static bool draw();
|
||||
bool dismissManually();
|
||||
|
||||
static dLytBattery_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private:
|
||||
dLytBattery_c() : mStateMgr(*this, sStateID::null) {
|
||||
sInstance = this;
|
||||
|
||||
@@ -3,6 +3,63 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
// TODO - the Main vs not-main split may not make sense here,
|
||||
// but I don't know what the second class here does
|
||||
|
||||
class dLytSystemWindowMain_c {
|
||||
public:
|
||||
dLytSystemWindowMain_c();
|
||||
virtual ~dLytSystemWindowMain_c();
|
||||
|
||||
bool draw();
|
||||
bool build();
|
||||
bool calc();
|
||||
|
||||
void init();
|
||||
|
||||
bool setProperties(const char *label, bool, const wchar_t *);
|
||||
void fn_80150F30(s32 arg);
|
||||
bool requestABtnOut();
|
||||
|
||||
bool fn_80150EB0();
|
||||
bool fn_80150EE0();
|
||||
bool fn_80150FB0();
|
||||
void fn_80150FE0();
|
||||
void fn_80150FF0();
|
||||
void fn_80151000();
|
||||
bool isPointerWithinWindow();
|
||||
|
||||
s32 getField_0xDDC() const {
|
||||
return field_0xDDC;
|
||||
}
|
||||
|
||||
bool getField_0xDF7() const {
|
||||
return field_0xDF7;
|
||||
}
|
||||
|
||||
bool getField_0xDF8() const {
|
||||
return field_0xDF8;
|
||||
}
|
||||
|
||||
void setField_0xE03(bool val) {
|
||||
field_0xE03 = val;
|
||||
}
|
||||
|
||||
void setField_0xE04(bool val) {
|
||||
field_0xE04 = val;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x004 */ u8 _0x004[0xDDC - 0x004];
|
||||
/* 0xDDC */ s32 field_0xDDC;
|
||||
/* 0xDF0 */ u8 _0xDF0[0xDF7 - 0xDE0];
|
||||
/* 0xDF7 */ bool field_0xDF7;
|
||||
/* 0xDF8 */ bool field_0xDF8;
|
||||
/* 0xDF9 */ u8 _0xDF9[0xE03 - 0xDF9];
|
||||
/* 0xE03 */ bool field_0xE03;
|
||||
/* 0xE04 */ bool field_0xE04;
|
||||
};
|
||||
|
||||
class dLytSystemWindow_c {
|
||||
public:
|
||||
virtual ~dLytSystemWindow_c();
|
||||
|
||||
@@ -44,6 +44,7 @@ public:
|
||||
void fn_8035E250(u16);
|
||||
bool fn_8035E2E0();
|
||||
void fn_8035E310();
|
||||
void fn_8035E620();
|
||||
void fn_8035E6E0();
|
||||
|
||||
u32 getFreeSize();
|
||||
|
||||
@@ -2,16 +2,56 @@
|
||||
#define NAND_RESULT_TRACKER_H
|
||||
|
||||
#include "egg/core/eggHeap.h"
|
||||
|
||||
#include "rvl/NAND.h"
|
||||
|
||||
class NandResultTracker {
|
||||
enum Mode_e {
|
||||
Normal = 0,
|
||||
Error = 1,
|
||||
};
|
||||
|
||||
public:
|
||||
enum ErrorCategory_e {
|
||||
// Everything is ok
|
||||
ERR_CAT_NONE = 0,
|
||||
// Error handled by us
|
||||
ERR_CAT_FATAL = 3,
|
||||
// Error handled by save manager
|
||||
ERR_CAT_SAVE_MGR = 4,
|
||||
};
|
||||
static void create(EGG::Heap *heap);
|
||||
static NandResultTracker *GetInstance();
|
||||
bool isFailure(NANDResult status);
|
||||
|
||||
void init();
|
||||
void draw();
|
||||
void execute();
|
||||
|
||||
s32 getErrorCategory() const {
|
||||
return mErrorCategory;
|
||||
}
|
||||
|
||||
bool isError() const {
|
||||
return mIsError;
|
||||
}
|
||||
|
||||
private:
|
||||
NandResultTracker *sInstance;
|
||||
typedef void (NandResultTracker::*ModeFunc)();
|
||||
|
||||
void ModeRequestNormal();
|
||||
void ModeProc_Normal();
|
||||
void ModeRequestError();
|
||||
void ModeProc_Error();
|
||||
|
||||
void ModeRequest(Mode_e mode);
|
||||
|
||||
static NandResultTracker *sInstance;
|
||||
|
||||
/* 0x00 */ s32 mErrorCategory;
|
||||
/* 0x04 */ Mode_e mMode;
|
||||
/* 0x08 */ s32 mStep;
|
||||
/* 0x0C */ bool mIsError;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -153,6 +153,7 @@ public:
|
||||
bool clearSelectedFile();
|
||||
|
||||
private:
|
||||
// TODO - Align with NSMBW ModeInit_ / ModeProc_ naming convention?
|
||||
void initializeCheckForSave();
|
||||
void initializeCheckForFreeSpace();
|
||||
void initializeCreateFiles();
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef SAVE_RELATED_H
|
||||
#define SAVE_RELATED_H
|
||||
|
||||
#include "common.h"
|
||||
|
||||
class SaveRelated {
|
||||
public:
|
||||
static void create();
|
||||
@@ -10,10 +12,20 @@ public:
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
void fn_80015EA0();
|
||||
void fn_80015EC0();
|
||||
void fn_80015F40();
|
||||
|
||||
bool getField_0x09() const {
|
||||
return field_0x09;
|
||||
}
|
||||
|
||||
private:
|
||||
static SaveRelated *sInstance;
|
||||
|
||||
/* 0x00 */ u8 _0x00[0x08 - 0x00];
|
||||
/* 0x08 */ u8 field_0x08;
|
||||
/* 0x09 */ bool field_0x09;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+201
-33
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "common.h"
|
||||
#include "d/d_base.h"
|
||||
#include "d/d_cs_base.h"
|
||||
#include "d/d_d2d.h"
|
||||
#include "d/d_dvd_unk.h"
|
||||
#include "d/d_dylink.h"
|
||||
@@ -10,7 +11,11 @@
|
||||
#include "d/d_hbm.h"
|
||||
#include "d/d_heap.h"
|
||||
#include "d/d_message.h"
|
||||
#include "d/d_pad.h"
|
||||
#include "d/d_pad_manager.h"
|
||||
#include "d/d_pad_nav.h"
|
||||
#include "d/d_reset.h"
|
||||
#include "d/d_sc_title.h"
|
||||
#include "d/d_scene.h"
|
||||
#include "d/d_sys.h"
|
||||
#include "d/lyt/d_lyt_battery.h"
|
||||
@@ -32,6 +37,7 @@
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
#include "toBeSorted/d_particle.h"
|
||||
#include "toBeSorted/fi_context.h"
|
||||
#include "toBeSorted/file_manager.h"
|
||||
#include "toBeSorted/save_manager.h"
|
||||
#include "toBeSorted/save_related.h"
|
||||
#include "toBeSorted/special_item_drop_mgr.h"
|
||||
@@ -243,7 +249,7 @@ sFPhaseBase::sFPhaseState dScBoot_c::cb6() {
|
||||
}
|
||||
|
||||
dDvdUnk::FontUnk::GetInstance()->setField_0x2C(1);
|
||||
field_0x5DF = 1;
|
||||
mObjectDataLoaded = true;
|
||||
return sFPhaseBase::PHASE_NEXT;
|
||||
}
|
||||
|
||||
@@ -293,13 +299,13 @@ sFPhaseBase::sFPhaseState dScBoot_c::cb7() {
|
||||
sFPhaseBase::sFPhaseState dScBoot_c::cb8() {
|
||||
return sFPhaseBase::PHASE_NEXT;
|
||||
}
|
||||
extern "C" void fn_80059E90();
|
||||
|
||||
sFPhaseBase::sFPhaseState dScBoot_c::cb9() {
|
||||
dBase_c::createRoot(fProfile::MESSAGE, 0, dBase_c::OTHER);
|
||||
dBase_c::createRoot(fProfile::C_BASE, 0, dBase_c::OTHER);
|
||||
dLytSystemWindow_c::create();
|
||||
SaveMgr::GetInstance()->createSaveMsgWindow();
|
||||
fn_80059E90();
|
||||
dPadManager_c::buildWindow();
|
||||
dLytBattery_c::create();
|
||||
return sFPhaseBase::PHASE_NEXT;
|
||||
}
|
||||
@@ -400,12 +406,12 @@ void dScBoot_c::strap_c::init() {
|
||||
}
|
||||
|
||||
dScBoot_c::dScBoot_c() : mStateMgr(*this, sStateID::null), mPhases(this, sCallbacks), mpDvdCallback(nullptr) {
|
||||
field_0x5DF = 0;
|
||||
mObjectDataLoaded = false;
|
||||
sInstance = this;
|
||||
field_0x5E1 = 0;
|
||||
field_0x5E2 = 0;
|
||||
field_0x5E3 = 0;
|
||||
field_0x5E4 = 0;
|
||||
mStrapScreenVisible = false;
|
||||
field_0x5E2 = false;
|
||||
field_0x5E3 = false;
|
||||
field_0x5E4 = false;
|
||||
}
|
||||
|
||||
dScBoot_c::~dScBoot_c() {
|
||||
@@ -437,7 +443,7 @@ int dScBoot_c::doDelete() {
|
||||
dBase_c::createRoot(fProfile::LAST, 0, 0);
|
||||
d3d::createLightTextures();
|
||||
SpecialItemDropMgr::create();
|
||||
dHbm::Manage_c::GetInstance()->offFlags(8);
|
||||
dHbm::Manage_c::GetInstance()->offFlags(0x8);
|
||||
dGfx_c::GetInstance()->setDrawCallback(nullptr);
|
||||
dReset::Manage_c::GetInstance()->BootComplete(true);
|
||||
return SUCCEEDED;
|
||||
@@ -447,15 +453,15 @@ int dScBoot_c::execute() {
|
||||
mFader.calc();
|
||||
mStateMgr.executeState();
|
||||
sFPhaseBase::sFPhaseState state = executeLoadPhase();
|
||||
if (field_0x5DE == 0 && state == sFPhaseBase::PHASE_ALL_DONE) {
|
||||
field_0x5DE = 1;
|
||||
if (mAllDataLoaded == false && state == sFPhaseBase::PHASE_ALL_DONE) {
|
||||
mAllDataLoaded = true;
|
||||
}
|
||||
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dScBoot_c::draw() {
|
||||
if (field_0x5E1 == 1) {
|
||||
if (mStrapScreenVisible == true) {
|
||||
mStrapScreen.draw();
|
||||
}
|
||||
|
||||
@@ -463,16 +469,16 @@ int dScBoot_c::draw() {
|
||||
}
|
||||
|
||||
void dScBoot_c::deleteReady() {
|
||||
// TODO
|
||||
// no-op
|
||||
}
|
||||
|
||||
void dScBoot_c::initializeState_Init() {
|
||||
mProgressStage = 0;
|
||||
field_0x5D8 = 0;
|
||||
field_0x5DC = 0;
|
||||
field_0x5DD = 0;
|
||||
field_0x5DE = 0;
|
||||
field_0x5E0 = 0;
|
||||
mStrapScreenSeen = false;
|
||||
mCalibrationDone = false;
|
||||
mAllDataLoaded = false;
|
||||
field_0x5E0 = false;
|
||||
}
|
||||
|
||||
void dScBoot_c::executeState_Init() {
|
||||
@@ -483,7 +489,7 @@ void dScBoot_c::finalizeState_Init() {}
|
||||
|
||||
void dScBoot_c::initializeState_Strap() {
|
||||
mProgressStage = 0;
|
||||
field_0x5E1 = 1;
|
||||
mStrapScreenVisible = true;
|
||||
mFader.fadeIn();
|
||||
mFader.resetFrames();
|
||||
}
|
||||
@@ -504,7 +510,7 @@ void dScBoot_c::executeState_Strap() {
|
||||
}
|
||||
|
||||
if (ok) {
|
||||
field_0x5DC = 1;
|
||||
mStrapScreenSeen = true;
|
||||
if (mFader.fadeOut() == true) {
|
||||
mProgressStage = 2;
|
||||
}
|
||||
@@ -515,7 +521,7 @@ void dScBoot_c::executeState_Strap() {
|
||||
if (!checkDone() && mFader.isNotStatus(mFaderBase_c::FADING_OUT)) {
|
||||
if (mFader.fadeIn() == true) {
|
||||
mProgressStage = 3;
|
||||
field_0x5E1 = 0;
|
||||
mStrapScreenVisible = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -527,9 +533,9 @@ void dScBoot_c::executeState_Strap() {
|
||||
case 4:
|
||||
mFader.setStatus(mFaderBase_c::FADED_OUT);
|
||||
if (mFader.fadeIn() == true) {
|
||||
field_0x5E4 = 1;
|
||||
if (field_0x5DC != 0) {
|
||||
field_0x5E1 = 0;
|
||||
field_0x5E4 = true;
|
||||
if (mStrapScreenSeen != false) {
|
||||
mStrapScreenVisible = false;
|
||||
mStateMgr.changeState(StateID_Connect);
|
||||
} else {
|
||||
mProgressStage = 0;
|
||||
@@ -543,8 +549,7 @@ void dScBoot_c::executeState_Strap() {
|
||||
}
|
||||
|
||||
void dScBoot_c::finalizeState_Strap() {
|
||||
// TODO
|
||||
dGfx_c::GetInstance()->setField0x09(1);
|
||||
dGfx_c::GetInstance()->setLetterboxEnabled(1);
|
||||
}
|
||||
|
||||
void dScBoot_c::initializeState_Connect() {
|
||||
@@ -553,7 +558,91 @@ void dScBoot_c::initializeState_Connect() {
|
||||
}
|
||||
|
||||
void dScBoot_c::executeState_Connect() {
|
||||
// TODO
|
||||
switch (mProgressStage) {
|
||||
case 0:
|
||||
if (field_0x5E3 == true) {
|
||||
field_0x5E3 = false;
|
||||
mProgressStage = 4;
|
||||
} else if (mObjectDataLoaded == true) {
|
||||
mProgressStage = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (field_0x5E3 == true) {
|
||||
field_0x5E3 = false;
|
||||
mProgressStage = 4;
|
||||
} else {
|
||||
dHbm::Manage_c::GetInstance()->offFlags(0x8);
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052CC0();
|
||||
mProgressStage = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (field_0x5E3 == true) {
|
||||
field_0x5E3 = false;
|
||||
mProgressStage = 5;
|
||||
} else {
|
||||
mProgressStage = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (field_0x5E3 == true) {
|
||||
field_0x5E3 = false;
|
||||
mProgressStage = 5;
|
||||
} else if (dPadManager_c::GetInstance()->isCalibrationFinished() ||
|
||||
dPadManager_c::GetInstance()->isCalibrationSkipped()) {
|
||||
mCalibrationDone = true;
|
||||
mStateMgr.changeState(StateID_Save);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
mFader.setStatus(mFaderBase_c::FADED_OUT);
|
||||
if (mFader.fadeIn() == true) {
|
||||
field_0x5E4 = true;
|
||||
if (mObjectDataLoaded == true) {
|
||||
mProgressStage = 1;
|
||||
} else {
|
||||
mProgressStage = 0;
|
||||
}
|
||||
dHbm::Manage_c::GetInstance()->fn_80197560(0);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
mFader.setStatus(mFaderBase_c::FADED_OUT);
|
||||
if (mFader.fadeIn() == true) {
|
||||
field_0x5E4 = true;
|
||||
mProgressStage = 6;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (mFader.isNotStatus(mFaderBase_c::FADING_IN)) {
|
||||
if (dReset::Manage_c::GetInstance()->isSoftReset()) {
|
||||
if (dPadManager_c::GetInstance()->isCalibrationFinished() == true &&
|
||||
dPadManager_c::GetInstance()->getField_0x25() == false) {
|
||||
mCalibrationDone = true;
|
||||
mStateMgr.changeState(StateID_Save);
|
||||
} else {
|
||||
mProgressStage = 2;
|
||||
}
|
||||
} else {
|
||||
dHbm::Manage_c::GetInstance()->fn_80197560(0);
|
||||
if (dPadManager_c::GetInstance()->isCalibrationFinished() == true) {
|
||||
if (dPadManager_c::GetInstance()->getField_0x25() == false) {
|
||||
mCalibrationDone = true;
|
||||
mStateMgr.changeState(StateID_Save);
|
||||
} else {
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052CC0();
|
||||
mProgressStage = 2;
|
||||
}
|
||||
} else {
|
||||
dPad::ex_c::setCalibrateMpls();
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052CC0();
|
||||
mProgressStage = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void dScBoot_c::finalizeState_Connect() {}
|
||||
@@ -565,16 +654,95 @@ void dScBoot_c::initializeState_Save() {
|
||||
}
|
||||
|
||||
void dScBoot_c::executeState_Save() {
|
||||
// TODO
|
||||
switch (mProgressStage) {
|
||||
case 0:
|
||||
if (field_0x5E3 == true) {
|
||||
field_0x5E3 = false;
|
||||
field_0x5D8 = mProgressStage;
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_800529B0();
|
||||
mProgressStage = 3;
|
||||
} else if (field_0x5E2 == true) {
|
||||
field_0x5E2 = false;
|
||||
mProgressStage = 2;
|
||||
} else {
|
||||
SaveRelated *saveRelated = SaveRelated::GetInstance();
|
||||
saveRelated->fn_80015EC0();
|
||||
if (saveRelated->getField_0x09() == true) {
|
||||
mProgressStage = 1;
|
||||
field_0x5E0 = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (field_0x5E3 == true) {
|
||||
field_0x5E3 = false;
|
||||
field_0x5D8 = mProgressStage;
|
||||
mProgressStage = 3;
|
||||
} else if (tryLoadTitleScreen()) {
|
||||
mProgressStage = 100;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (FileManager::GetInstance()->getField_0xA84D() != true) {
|
||||
mFader.setStatus(mFaderBase_c::FADED_OUT);
|
||||
if (mFader.fadeIn() == mFaderBase_c::FADED_IN) {
|
||||
dCsBase_c::GetInstance()->setCursorStickVisible(false);
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_800529B0();
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052A20();
|
||||
dLytSystemWindow_c::GetInstance()->fn_80152F10();
|
||||
SaveMgr::GetInstance()->init();
|
||||
dPadNav::setNavEnabled(false, false);
|
||||
field_0x5E4 = true;
|
||||
dHbm::Manage_c::GetInstance()->fn_80197560(0);
|
||||
SaveRelated::GetInstance()->fn_80015EA0();
|
||||
SaveRelated::GetInstance()->fn_80015F40();
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052CC0();
|
||||
mProgressStage = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
mFader.setStatus(mFaderBase_c::FADED_OUT);
|
||||
if (mFader.fadeIn() == mFaderBase_c::FADED_IN) {
|
||||
field_0x5E4 = true;
|
||||
mProgressStage = field_0x5D8;
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052CC0();
|
||||
dHbm::Manage_c::GetInstance()->fn_80197560(0);
|
||||
}
|
||||
break;
|
||||
case 999999:
|
||||
if (tryLoadTitleScreen()) {
|
||||
mProgressStage = 100;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void dScBoot_c::finalizeState_Save() {}
|
||||
|
||||
bool dScBoot_c::checkDone() {
|
||||
if (field_0x5E3 == 1) {
|
||||
field_0x5E3 = 0;
|
||||
mProgressStage = 4;
|
||||
return 1;
|
||||
bool dScBoot_c::tryLoadTitleScreen() {
|
||||
if (mStrapScreenSeen != true) {
|
||||
return false;
|
||||
}
|
||||
return 0;
|
||||
if (mCalibrationDone != true) {
|
||||
return false;
|
||||
}
|
||||
if (mAllDataLoaded != true) {
|
||||
return false;
|
||||
}
|
||||
if (field_0x5E0 != true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
dScTitle_c::loadTitleScreen(0);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dScBoot_c::checkDone() {
|
||||
if (field_0x5E3 == true) {
|
||||
field_0x5E3 = false;
|
||||
mProgressStage = 4;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
+12
-9
@@ -24,9 +24,9 @@ dCsBase_c::dCsBase_c()
|
||||
mCsVelocity(0.0f, 0.0f),
|
||||
field_0x700(0),
|
||||
mAlpha(0),
|
||||
field_0x703(0),
|
||||
field_0x704(0),
|
||||
field_0x705(0) {
|
||||
mVisible(false),
|
||||
mDrawDirectly(false),
|
||||
mCalibrationPointCenterEnabled(false) {
|
||||
sInstance = this;
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ int dCsBase_c::create() {
|
||||
|
||||
field_0x700 = 0;
|
||||
mAlpha = 0;
|
||||
field_0x703 = 0;
|
||||
mVisible = false;
|
||||
|
||||
return SUCCEEDED;
|
||||
}
|
||||
@@ -74,7 +74,10 @@ int dCsBase_c::execute() {
|
||||
mVec2_c dpdPosScreen = dPad::ex_c::getInstance()->getDpdPosScreen();
|
||||
u8 oldAlpha = mAlpha;
|
||||
bool bIsInBounds = false;
|
||||
if (field_0x705 == 1) {
|
||||
if (mCalibrationPointCenterEnabled == true) {
|
||||
// If we're in the initial "cursor center" process at startup or when manually calibrating,
|
||||
// we need to make sure to only take the raw pointer inputs into account (transforming them
|
||||
// to screen coordinates of course)
|
||||
mVec2_c dpdPos = mPad::getDpdRawPos();
|
||||
dpdPosScreen.x = dGfx_c::getWidth4x3F() * 0.5f * (1.f + dpdPos.x) + dGfx_c::getWidth4x3LeftF();
|
||||
dpdPosScreen.y = dGfx_c::getCurrentScreenHeightF() * -0.5f * (1.f + dpdPos.y) + dGfx_c::getCurrentScreenTopF();
|
||||
@@ -112,11 +115,11 @@ int dCsBase_c::execute() {
|
||||
}
|
||||
|
||||
int dCsBase_c::draw() {
|
||||
if (field_0x704 == 1) {
|
||||
if (mDrawDirectly == true) {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
if (field_0x703 && dPadNav::isPointerVisible() && mAlpha) {
|
||||
if (mVisible && dPadNav::isPointerVisible() && mAlpha != 0) {
|
||||
nw4r::lyt::Pane *p = mpCurrLyt->getLayout()->GetRootPane();
|
||||
nw4r::math::VEC3 pos;
|
||||
pos.x = mCsPosition.x;
|
||||
@@ -140,11 +143,11 @@ int dCsBase_c::update() {
|
||||
}
|
||||
|
||||
bool dCsBase_c::drawDirectly() {
|
||||
if (field_0x704 != 1) {
|
||||
if (mDrawDirectly != true) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (field_0x703 && dPadNav::isPointerVisible() && mAlpha) {
|
||||
if (mVisible && dPadNav::isPointerVisible() && mAlpha != 0) {
|
||||
nw4r::lyt::Pane *p = mpCurrLyt->getLayout()->GetRootPane();
|
||||
nw4r::math::VEC3 pos;
|
||||
pos.x = mCsPosition.x;
|
||||
|
||||
+1
-1
@@ -149,7 +149,7 @@ int dCsGame_c::create() {
|
||||
mCursor.setField0x9A0(0);
|
||||
mCursorIf.setCursorMask(2);
|
||||
dCsMgr_c::GetInstance()->registCursor(&mCursorIf);
|
||||
dCsBase_c::GetInstance()->setField703(false);
|
||||
dCsBase_c::GetInstance()->setVisible(false);
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ void dDvdDriveError_c::execute() {
|
||||
if (!mIsError) {
|
||||
if (mDvdDriveStatus != DVD_STATE_IDLE && mDvdDriveStatus != DVD_STATE_BUSY) {
|
||||
mIsError = true;
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052C60();
|
||||
dDvdUnk::FontUnk::GetInstance()->onError();
|
||||
}
|
||||
} else if (mDvdDriveStatus == DVD_STATE_IDLE) {
|
||||
if (!dReset::Manage_c::GetInstance()->isSoftResetOrSafetyWait()) {
|
||||
|
||||
+218
-3
@@ -1,23 +1,238 @@
|
||||
#include "d/d_dvd_unk.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/d_cs_base.h"
|
||||
#include "d/d_cursor_hit_check.h"
|
||||
#include "d/d_dvd_drive_error.h"
|
||||
#include "d/d_gfx.h"
|
||||
#include "d/d_hbm.h"
|
||||
#include "d/d_pad.h"
|
||||
#include "d/d_pad_manager.h"
|
||||
#include "d/d_s_boot.h"
|
||||
#include "d/d_video.h"
|
||||
#include "d/lyt/d_lyt_system_window.h"
|
||||
#include "d/snd/d_snd_player_mgr.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
#include "egg/gfx/eggTextureBuffer.h"
|
||||
#include "rvl/NAND/nand.h"
|
||||
#include "toBeSorted/nand_result_tracker.h"
|
||||
|
||||
|
||||
// included asset
|
||||
#include "d/dol_backup_error_font.inc"
|
||||
|
||||
namespace dDvdUnk {
|
||||
|
||||
FontUnk *FontUnk::sInstance;
|
||||
extern "C" void fn_80059D10(EGG::Heap *heap);
|
||||
|
||||
void FontUnk::create(EGG::Heap *heap) {
|
||||
sInstance = new (heap, 0x04) FontUnk();
|
||||
sInstance->init();
|
||||
dDvdDriveError_c::create(heap);
|
||||
NandResultTracker::create(heap);
|
||||
fn_80059D10(heap);
|
||||
dPadManager_c::create(heap);
|
||||
sInstance->field_0x2C = 0;
|
||||
}
|
||||
|
||||
void FontUnk::execute() {
|
||||
if (dHbm::Manage_c::GetInstance()->getState() == dHbm::Manage_c::HBM_MANAGE_ACTIVE) {
|
||||
return;
|
||||
}
|
||||
|
||||
dDvdDriveError_c *driveError = dDvdDriveError_c::GetInstance();
|
||||
dPadManager_c *padManager = dPadManager_c::GetInstance();
|
||||
NandResultTracker *nandTracker = NandResultTracker::GetInstance();
|
||||
|
||||
// Errors in decreasing importance
|
||||
switch (mErrorType) {
|
||||
case ERROR_DISK: driveError->execute(); break;
|
||||
case ERROR_PAD:
|
||||
driveError->execute();
|
||||
padManager->execute();
|
||||
break;
|
||||
case ERROR_NAND:
|
||||
driveError->execute();
|
||||
padManager->execute();
|
||||
nandTracker->execute();
|
||||
break;
|
||||
default:
|
||||
driveError->execute();
|
||||
nandTracker->execute();
|
||||
padManager->execute();
|
||||
break;
|
||||
}
|
||||
if (checkFlag(FLAG_ERROR_REQUEST)) {
|
||||
offFlag(FLAG_ERROR_REQUEST);
|
||||
EGG::TextureBuffer *buf = dGfx_c::GetInstance()->getTextureBuffer();
|
||||
if (buf != nullptr) {
|
||||
buf->capture(0, 0, false, -1);
|
||||
}
|
||||
onFlag(FLAG_ERROR_STATE);
|
||||
}
|
||||
}
|
||||
|
||||
void FontUnk::drawNonDriveError() {
|
||||
switch (mErrorType) {
|
||||
case ERROR_PAD: dPadManager_c::GetInstance()->draw(); break;
|
||||
case ERROR_NAND: NandResultTracker::GetInstance()->draw(); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void FontUnk::drawDriveError() {
|
||||
if (mIsDiskError == true) {
|
||||
dDvdDriveError_c::GetInstance()->draw();
|
||||
}
|
||||
}
|
||||
|
||||
void FontUnk::init() {
|
||||
mIsDiskError = false;
|
||||
mIsNandError = false;
|
||||
mIsPadError = false;
|
||||
mFlags = 0;
|
||||
mDiskErrorCode = 0;
|
||||
mNandErrorCode = 0;
|
||||
field_0x2B = false;
|
||||
mErrorType = ERROR_NONE;
|
||||
mFont.SetResource(DOL_BACKUP_FONT);
|
||||
}
|
||||
|
||||
void dDvdUnk::FontUnk::fn_800529B0() {
|
||||
mIsPadError = false;
|
||||
field_0x2B = false;
|
||||
if (dCsBase_c::GetInstance() == nullptr) {
|
||||
return;
|
||||
}
|
||||
dCsBase_c::GetInstance()->setVisible(false);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(false);
|
||||
dCsBase_c::GetInstance()->setCalibrationPointCenterEnabled(false);
|
||||
}
|
||||
|
||||
void dDvdUnk::FontUnk::clearNandError() {
|
||||
clearNandTrackerError();
|
||||
mIsNandError = false;
|
||||
mNandErrorCode = 0;
|
||||
}
|
||||
|
||||
void dDvdUnk::FontUnk::fn_80052A20() {
|
||||
if (dScBoot_c::GetInstance() == nullptr && !dPadManager_c::GetInstance()->isCalibrationFinished()) {
|
||||
dPad::ex_c::setCalibrateMpls();
|
||||
}
|
||||
|
||||
if (checkFlag(FLAG_ERROR_STATE)) {
|
||||
dGfx_c::GetInstance()->releaseTextureBuffer();
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E6E0();
|
||||
}
|
||||
|
||||
if (dLytSystemWindow_c::GetInstance() != nullptr && dLytSystemWindow_c::GetInstance()->fn_80152F80()) {
|
||||
dLytSystemWindow_c::GetInstance()->fn_80152F10();
|
||||
}
|
||||
|
||||
mIsDiskError = false;
|
||||
mIsNandError = false;
|
||||
mIsPadError = false;
|
||||
mFlags = false;
|
||||
mDiskErrorCode = 0;
|
||||
mNandErrorCode = 0;
|
||||
field_0x2B = false;
|
||||
mErrorType = ERROR_NONE;
|
||||
|
||||
dPadManager_c::GetInstance()->init();
|
||||
NandResultTracker::GetInstance()->init();
|
||||
}
|
||||
|
||||
void FontUnk::preExecute() {
|
||||
if (dHbm::Manage_c::GetInstance()->getState() != dHbm::Manage_c::HBM_MANAGE_ACTIVE) {
|
||||
dDvdDriveError_c *drive = dDvdDriveError_c::GetInstance();
|
||||
NandResultTracker *nand = NandResultTracker::GetInstance();
|
||||
dPadManager_c *pad = dPadManager_c::GetInstance();
|
||||
bool prevError = isAnyError();
|
||||
mIsDiskError = drive->isError();
|
||||
mDiskErrorCode = drive->getStatus();
|
||||
mIsNandError = nand->isError();
|
||||
mNandErrorCode = nand->getErrorCategory();
|
||||
|
||||
if (padErrorsAllowed() == true) {
|
||||
mIsPadError = pad->isError();
|
||||
}
|
||||
|
||||
// Errors in decreasing importance
|
||||
if (mIsDiskError == true) {
|
||||
mErrorType = ERROR_DISK;
|
||||
} else if (mIsPadError == true) {
|
||||
mErrorType = ERROR_PAD;
|
||||
} else if (mIsNandError == true) {
|
||||
mErrorType = ERROR_NAND;
|
||||
} else {
|
||||
mErrorType = ERROR_NONE;
|
||||
}
|
||||
|
||||
if (prevError && !isAnyError()) {
|
||||
dGfx_c::GetInstance()->releaseTextureBuffer();
|
||||
offFlag(FLAG_ERROR_STATE);
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E6E0();
|
||||
}
|
||||
|
||||
if (field_0x2C == true && !prevError && isAnyError()) {
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E620();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool FontUnk::isAnyError() const {
|
||||
return mIsDiskError | mIsNandError | mIsPadError;
|
||||
}
|
||||
|
||||
void FontUnk::onError() {
|
||||
if (checkFlag(FLAG_ERROR_STATE)) {
|
||||
return;
|
||||
}
|
||||
onFlag(FLAG_ERROR_REQUEST);
|
||||
dVideo::enableDimming(1);
|
||||
}
|
||||
|
||||
void FontUnk::clearNandTrackerError() {
|
||||
NandResultTracker::GetInstance()->isFailure(NAND_RESULT_OK);
|
||||
}
|
||||
|
||||
void FontUnk::fn_80052CC0() {
|
||||
setNeedsPad(true);
|
||||
field_0x2B = true;
|
||||
}
|
||||
|
||||
void FontUnk::setNeedsPad(bool b) {
|
||||
if (dPadManager_c::GetInstance() != nullptr) {
|
||||
dPadManager_c::GetInstance()->setField_0x1F(b);
|
||||
}
|
||||
}
|
||||
|
||||
bool FontUnk::padErrorsAllowed() {
|
||||
if (field_0x2B != true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (dPadManager_c::GetInstance() != nullptr) {
|
||||
return dPadManager_c::GetInstance()->getField_0x1F();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void FontUnk::fn_80052D50() {
|
||||
if (dPadManager_c::GetInstance()->isError() == true) {
|
||||
if (checkFlag(FLAG_ERROR_STATE)) {
|
||||
dGfx_c::GetInstance()->releaseTextureBuffer();
|
||||
mFlags = 0;
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E6E0();
|
||||
}
|
||||
dPadManager_c::GetInstance()->init();
|
||||
}
|
||||
setNeedsPad(false);
|
||||
dVideo::enableDimming(0);
|
||||
}
|
||||
|
||||
void FontUnk::fn_80052DD0() {
|
||||
setNeedsPad(true);
|
||||
dVideo::enableDimming(1);
|
||||
}
|
||||
|
||||
} // namespace dDvdUnk
|
||||
|
||||
+5
-5
@@ -23,7 +23,7 @@
|
||||
|
||||
dGfx_c *dGfx_c::sInstance;
|
||||
|
||||
dGfx_c::dGfx_c() : mpTextureBuffer(nullptr), field_0x08(0), field_0x09(0) {
|
||||
dGfx_c::dGfx_c() : mpTextureBuffer(nullptr), mBufRefcount(0), mLetterboxEnabled(false) {
|
||||
mDrawCallback = nullptr;
|
||||
|
||||
d3d::create(mHeap::g_gameHeaps[0]);
|
||||
@@ -52,13 +52,13 @@ EGG::TextureBuffer *dGfx_c::getTextureBuffer() {
|
||||
mpTextureBuffer->onCapFlag(0x20); // TODO
|
||||
ret = mpTextureBuffer;
|
||||
}
|
||||
field_0x08++;
|
||||
mBufRefcount++;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void dGfx_c::releaseTextureBuffer() {
|
||||
field_0x08--;
|
||||
if (field_0x08 == 0 && mpTextureBuffer != nullptr) {
|
||||
mBufRefcount--;
|
||||
if (mBufRefcount == 0 && mpTextureBuffer != nullptr) {
|
||||
mpTextureBuffer->free();
|
||||
mpTextureBuffer = nullptr;
|
||||
}
|
||||
@@ -74,7 +74,7 @@ void dGfx_c::drawBefore() {
|
||||
}
|
||||
|
||||
void dGfx_c::drawLetterbox() {
|
||||
if (field_0x09 != 0 && isTvMode4To3()) {
|
||||
if (mLetterboxEnabled && isTvMode4To3()) {
|
||||
EGG::Screen screen(*EGG::Screen::GetRoot());
|
||||
screen.SetNearFar(-1.0f, 1.0f);
|
||||
screen.SetProjectionGX();
|
||||
|
||||
+5
-5
@@ -8,7 +8,7 @@
|
||||
#include "d/d_gfx.h"
|
||||
#include "d/d_hbm.h"
|
||||
#include "d/d_pad_nav.h"
|
||||
#include "d/d_pause.h"
|
||||
#include "d/d_pad_manager.h"
|
||||
#include "d/d_reset.h"
|
||||
#include "d/d_sc_game.h"
|
||||
#include "d/lyt/d_lyt_control_game.h"
|
||||
@@ -228,7 +228,7 @@ void beginPad_BR() {
|
||||
!dAcPy_c::GetLink()->vt_0x1C0() && !dLytMeter_c::GetMain()->getField_0x1377F()) ||
|
||||
ex.field_0x22CF) {
|
||||
if (dLytControlGame_c::getInstance() && dLytControlGame_c::getInstance()->isStateNormal()) {
|
||||
if (!(dPauseManager_c::GetInstance() && dPauseManager_c::GetInstance()->getField_0x25())) {
|
||||
if (!(dPadManager_c::GetInstance() && dPadManager_c::GetInstance()->getField_0x25())) {
|
||||
KPADDisableMplsDpdRevise(0);
|
||||
KPADDisableMplsAccRevise(0);
|
||||
}
|
||||
@@ -1271,7 +1271,7 @@ f32 ex_c::fn_80058F50() {
|
||||
return m_current_ex->mMotion.fn_80058A00();
|
||||
}
|
||||
|
||||
bool ex_c::fn_80058F60() {
|
||||
bool ex_c::startCurrentMplsCalibration() {
|
||||
if (m_current_ex->mIsWPADDeviceTypeMplsStableTimer < 8) {
|
||||
return true;
|
||||
}
|
||||
@@ -1292,11 +1292,11 @@ f32 ex_c::getCurrentCalibrationWork() {
|
||||
return m_current_ex->getCalibrationWork();
|
||||
}
|
||||
|
||||
void ex_c::fn_80058FF0() {
|
||||
void ex_c::stopCurrentMplsCalibration() {
|
||||
m_current_ex->stopMplsCalibration(mPad::getCurrentCoreID());
|
||||
}
|
||||
|
||||
void ex_c::fn_80059000() {
|
||||
void ex_c::centerCurrentCursor() {
|
||||
m_current_ex->centerCursor(mPad::getCurrentCoreID());
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,798 @@
|
||||
#include "d/d_pad_manager.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/d_cs_base.h"
|
||||
#include "d/d_dvd_unk.h"
|
||||
#include "d/d_gfx.h"
|
||||
#include "d/d_pad.h"
|
||||
#include "d/d_pad_nav.h"
|
||||
#include "d/d_sys.h"
|
||||
#include "d/lyt/d_lyt_battery.h"
|
||||
#include "d/snd/d_snd_small_effect_mgr.h"
|
||||
#include "d/snd/d_snd_wzsound.h"
|
||||
#include "m/m_pad.h"
|
||||
|
||||
dPadManager_c::dPadManager_c() {
|
||||
sInstance = this;
|
||||
field_0x20 = true;
|
||||
mpWindow = nullptr;
|
||||
mCalibrationFinished = false;
|
||||
field_0x25 = false;
|
||||
}
|
||||
|
||||
bool dPadManager_c::create(EGG::Heap *pHeap) {
|
||||
new (pHeap) dPadManager_c();
|
||||
sInstance->init();
|
||||
return true;
|
||||
}
|
||||
|
||||
dPadManager_c::~dPadManager_c() {}
|
||||
|
||||
bool dPadManager_c::execute() {
|
||||
executeProc();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dPadManager_c::draw() {
|
||||
dGfx_c::doDrawCapTexture();
|
||||
if (mpWindow != nullptr) {
|
||||
mpWindow->draw();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void dPadManager_c::init() {
|
||||
mSavedCsDrawDirectly = false;
|
||||
field_0x23 = false;
|
||||
ModeRequestNormal();
|
||||
field_0x1E = false;
|
||||
field_0x1F = false;
|
||||
if (mpWindow != nullptr) {
|
||||
mpWindow->init();
|
||||
}
|
||||
mCalibrationSkipped = false;
|
||||
}
|
||||
|
||||
void dPadManager_c::buildWindow() {
|
||||
sInstance->mpWindow = new dLytSystemWindowMain_c();
|
||||
sInstance->mpWindow->build();
|
||||
}
|
||||
|
||||
s32 dPadManager_c::get30SecondsInTicks() {
|
||||
return 1800 / dSys_c::getFrameRate();
|
||||
}
|
||||
|
||||
s32 dPadManager_c::get3Point3SecondsInTicks() {
|
||||
return 200 / dSys_c::getFrameRate();
|
||||
}
|
||||
|
||||
void dPadManager_c::requestMplsCalibration() {
|
||||
mCalibrationFinished = false;
|
||||
dPad::ex_c::setCalibrateMpls();
|
||||
}
|
||||
|
||||
void dPadManager_c::executeProc() {
|
||||
static const ModeFunc procs[] = {
|
||||
&dPadManager_c::ModeProc_Normal,
|
||||
&dPadManager_c::ModeProc_ReconnectPad,
|
||||
&dPadManager_c::ModeProc_AttachMplsAndNunchuk,
|
||||
&dPadManager_c::ModeProc_AttachNunchuk,
|
||||
&dPadManager_c::ModeProc_Calibrating,
|
||||
&dPadManager_c::ModeProc_LowBattery,
|
||||
&dPadManager_c::ModeProc_PointCenter,
|
||||
&dPadManager_c::ModeProc_CalibrationFail,
|
||||
};
|
||||
ModeFunc f = procs[mMode];
|
||||
if (f != nullptr) {
|
||||
(this->*f)();
|
||||
}
|
||||
|
||||
if (mpWindow != nullptr) {
|
||||
mpWindow->calc();
|
||||
}
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeRequestNormal() {
|
||||
ModeRequest(Normal);
|
||||
mIsError = false;
|
||||
field_0x1D = false;
|
||||
if (dCsBase_c::GetInstance() != nullptr) {
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(mSavedCsDrawDirectly);
|
||||
if (field_0x23) {
|
||||
dPadNav::setCursorStickVisible();
|
||||
} else {
|
||||
dPadNav::setCursorStickInvisible();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeProc_Normal() {
|
||||
PadStatus_e status = getPadStatus();
|
||||
if (status == PAD_NORMAL || status == PAD_CONFIGURING_MPLS) {
|
||||
if (isOutOfBattery() == true) {
|
||||
mIsError = true;
|
||||
dDvdUnk::FontUnk::GetInstance()->onError();
|
||||
ModeRequestLowBattery();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Some sort of error occured
|
||||
|
||||
mIsError = true;
|
||||
mPadStatus = status;
|
||||
dCsBase_c *cs = dCsBase_c::GetInstance();
|
||||
mSavedCsDrawDirectly = cs->getDrawDirectly();
|
||||
cs->setDrawDirectly(false);
|
||||
cs->setCursorStickVisible(false);
|
||||
field_0x23 = dPadNav::isCursorStickVisible();
|
||||
dPadNav::setCursorStickInvisible();
|
||||
dDvdUnk::FontUnk::GetInstance()->onError();
|
||||
|
||||
if (status == PAD_DISCONNECTED) {
|
||||
ModeRequestReconnectPad();
|
||||
} else if (status == PAD_NO_MPLS) {
|
||||
ModeRequestAttachMplsAndNunchuk();
|
||||
} else if (status == PAD_NO_NUNCHUK) {
|
||||
ModeRequestAttachNunchuk();
|
||||
} else if (status == PAD_NEED_POINT_CENTER) {
|
||||
ModeRequestPointCenter();
|
||||
} else {
|
||||
ModeRequestCalibrating();
|
||||
}
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeRequestReconnectPad() {
|
||||
ModeRequest(ReconnectPad);
|
||||
field_0x1D = true;
|
||||
mCalibrationFinished = false;
|
||||
}
|
||||
void dPadManager_c::ModeProc_ReconnectPad() {
|
||||
PadStatus_e status = getPadStatus();
|
||||
if (status == PAD_NEED_CALIBRATION || status == PAD_CONFIGURING_MPLS) {
|
||||
status = PAD_NORMAL;
|
||||
}
|
||||
|
||||
switch (mStep) {
|
||||
case 0:
|
||||
// "Communications with the Wii Remote have been interrupted. Reconnect the Wii Remote.
|
||||
// Press (A) without touching the Control Stick."
|
||||
if (mpWindow->setProperties("SYS_CONT_10", true, nullptr) == true) {
|
||||
mStep = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (mPad::getCore()->isConnected() && mpWindow->requestABtnOut() == true) {
|
||||
mPad::getCore()->startPatternRumble("***--***--***", 0, false);
|
||||
mStepTimer = 0;
|
||||
mStep = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (mStepTimer < get3Point3SecondsInTicks()) {
|
||||
mStepTimer++;
|
||||
} else if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep = 4;
|
||||
}
|
||||
break;
|
||||
case 4: ModeRequestNext(status); break;
|
||||
}
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeRequestAttachMplsAndNunchuk() {
|
||||
ModeRequest(AttachMplsAndNunchuk);
|
||||
field_0x1D = true;
|
||||
mCalibrationFinished = false;
|
||||
}
|
||||
void dPadManager_c::ModeProc_AttachMplsAndNunchuk() {
|
||||
PadStatus_e status = getPadStatus();
|
||||
if (status == PAD_NEED_CALIBRATION || status == PAD_CONFIGURING_MPLS) {
|
||||
status = PAD_NORMAL;
|
||||
}
|
||||
|
||||
switch (mStep) {
|
||||
case 0:
|
||||
// "Connect the Wii Remote and Nunchuk to the Wii MotionPlus accessory. Next, wait a few moments without
|
||||
// touching the Control Stick."
|
||||
if (mpWindow->setProperties("SYS_CONT_01_02", false, nullptr) == true) {
|
||||
mpWindow->fn_80150F30(2);
|
||||
mStep = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep++;
|
||||
}
|
||||
// fall-through
|
||||
case 2:
|
||||
if (status == PAD_DISCONNECTED) {
|
||||
if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 4;
|
||||
}
|
||||
} else {
|
||||
if (dPad::ex_c::isMissingMpls() != true) {
|
||||
mStep = 3;
|
||||
mStepTimer = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (mStepTimer < get3Point3SecondsInTicks()) {
|
||||
mStepTimer++;
|
||||
} else if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 4;
|
||||
mStepTimer = 0;
|
||||
dPad::ex_c::fn_800590F0();
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep = 5;
|
||||
}
|
||||
break;
|
||||
case 5: ModeRequestNext(status); break;
|
||||
}
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeRequestAttachNunchuk() {
|
||||
ModeRequest(AttachNunchuk);
|
||||
}
|
||||
void dPadManager_c::ModeProc_AttachNunchuk() {
|
||||
PadStatus_e status = getPadStatus();
|
||||
if (status == PAD_NEED_CALIBRATION || status == PAD_CONFIGURING_MPLS) {
|
||||
status = PAD_NORMAL;
|
||||
}
|
||||
|
||||
switch (mStep) {
|
||||
case 0:
|
||||
// "Connect the Nunchuk to the Wii Remote. Once you have connected the Nunchuk, wait a few moments without
|
||||
// touching the Control Stick."
|
||||
if (mpWindow->setProperties("SYS_CONT_01_01", false, nullptr) == true) {
|
||||
mpWindow->fn_80150F30(1);
|
||||
mStep = 1;
|
||||
mStepTimer = 0;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (status == PAD_DISCONNECTED) {
|
||||
if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 3;
|
||||
}
|
||||
} else if (status == PAD_NO_MPLS) {
|
||||
if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 3;
|
||||
}
|
||||
} else if (mStepTimer < get1Point5SecondsInTicks()) {
|
||||
mStepTimer++;
|
||||
} else if (dPad::ex_c::isMissingNunchuk() != true && mpWindow->fn_80150EB0() == true) {
|
||||
mStep = 3;
|
||||
mStepTimer = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep = 4;
|
||||
}
|
||||
break;
|
||||
case 4: ModeRequestNext(status); break;
|
||||
}
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeRequestCalibrating() {
|
||||
ModeRequest(Calibrating);
|
||||
mCalibrationTimer = 0;
|
||||
field_0x1D = true;
|
||||
mCalibrationFinished = false;
|
||||
mCalibrationSkipped = false;
|
||||
}
|
||||
void dPadManager_c::ModeProc_Calibrating() {
|
||||
PadStatus_e status = getPadStatus();
|
||||
bool empty = false;
|
||||
if (status == PAD_NEED_CALIBRATION) {
|
||||
empty = true;
|
||||
status = PAD_NORMAL;
|
||||
}
|
||||
|
||||
static const char *s_messages[] = {
|
||||
"SYS_MPLS_01", // "Now calibrating the Wii MotionPlus. Place the Wii Remote on a flat surface."
|
||||
"SYS_MPLS_05", // ""
|
||||
};
|
||||
|
||||
switch (mStep) {
|
||||
case 0: {
|
||||
s32 idx = 0;
|
||||
if (empty) {
|
||||
idx = 1;
|
||||
}
|
||||
if (mpWindow->setProperties(s_messages[idx], false, nullptr) == true) {
|
||||
mpWindow->fn_80150F30(3);
|
||||
mpWindow->fn_80150FE0();
|
||||
mpWindow->fn_80151000();
|
||||
mStep = 1;
|
||||
mStepTimer = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (status != PAD_NORMAL && status != PAD_CONFIGURING_MPLS) {
|
||||
mStep = 20;
|
||||
} else if (mStepTimer < get1Point5SecondsInTicks()) {
|
||||
mStepTimer++;
|
||||
} else if (dPad::ex_c::startCurrentMplsCalibration() == false) {
|
||||
mStep = 3;
|
||||
mStepTimer = 0;
|
||||
} else if (mCalibrationTimer >= get30SecondsInTicks() && mpWindow->fn_80150EE0() == true) {
|
||||
mpWindow->fn_80150FF0();
|
||||
mStep = 10;
|
||||
mCalibrationTimer = 0;
|
||||
} else {
|
||||
mCalibrationTimer++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (status != PAD_NORMAL) {
|
||||
dPad::ex_c::stopCurrentMplsCalibration();
|
||||
mStep = 20;
|
||||
} else if (!dPad::ex_c::getCurrentCalibrationWork()) {
|
||||
// okay cool everywhere else we do "== true" and so on
|
||||
// but here the float is simply converted to bool
|
||||
// done calibrating
|
||||
if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 4;
|
||||
}
|
||||
} else if (mCalibrationTimer >= get30SecondsInTicks() && mpWindow->fn_80150EE0() == true) {
|
||||
mpWindow->fn_80150FF0();
|
||||
mStep = 10;
|
||||
mCalibrationTimer = 0;
|
||||
} else {
|
||||
mCalibrationTimer++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
field_0x1D = false;
|
||||
mCalibrationFinished = true;
|
||||
ModeRequestPointCenter();
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
ModeRequestCalibrationFail();
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
mpWindow->fn_80150FF0();
|
||||
if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 21;
|
||||
}
|
||||
break;
|
||||
case 21:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
if (status == PAD_CONFIGURING_MPLS) {
|
||||
mStep = 30;
|
||||
} else {
|
||||
ModeRequestNext(status);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 30: ModeRequestCalibrationFail(); break;
|
||||
}
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeRequestLowBattery() {
|
||||
ModeRequest(LowBattery);
|
||||
mCalibrationTimer = 0;
|
||||
field_0x20 = false;
|
||||
}
|
||||
void dPadManager_c::ModeProc_LowBattery() {
|
||||
PadStatus_e status = getPadStatus();
|
||||
switch (mStep) {
|
||||
case 0:
|
||||
// "The Wii Remote battery charge is running low. Please check the HOME Menu."
|
||||
if (mpWindow->setProperties("SYS_CONT_09", false, nullptr) == true) {
|
||||
mStep = 1;
|
||||
mStepTimer = 0;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (status != PAD_NORMAL) {
|
||||
mStep = 10;
|
||||
} else if (mStepTimer < get1Point5SecondsInTicks()) {
|
||||
mStepTimer++;
|
||||
} else if (mpWindow->fn_80150FB0() == true) {
|
||||
mStep = 3;
|
||||
mStepTimer = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (status != PAD_NORMAL) {
|
||||
mStep = 10;
|
||||
} else if (mPad::getCore()->downTrigger(mPad::BUTTON_A) && mpWindow->fn_80150EB0() == true) {
|
||||
mStep = 4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
dLytBattery_c::GetInstance()->dismissManually();
|
||||
ModeRequestNext(status);
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 11;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
dLytBattery_c::GetInstance()->dismissManually();
|
||||
ModeRequestNext(status);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeRequestPointCenter() {
|
||||
ModeRequest(PointCenter);
|
||||
field_0x25 = true;
|
||||
if (field_0x20 == false && dPad::ex_c::getBatteryLevel() >= 2) {
|
||||
field_0x20 = true;
|
||||
}
|
||||
}
|
||||
void dPadManager_c::ModeProc_PointCenter() {
|
||||
PadStatus_e status = getPadStatus();
|
||||
if (status == PAD_NEED_CALIBRATION || status == PAD_CONFIGURING_MPLS) {
|
||||
status = PAD_NORMAL;
|
||||
}
|
||||
|
||||
switch (mStep) {
|
||||
case 0:
|
||||
// "Point the Wii Remote at the screen, and move <pointer icon> to the center."
|
||||
if (mpWindow->setProperties("SYS_MPLS_02", false, nullptr) == true) {
|
||||
dCsBase_c::GetInstance()->setVisible(true);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(true);
|
||||
dCsBase_c::GetInstance()->setCalibrationPointCenterEnabled(true);
|
||||
mStep = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (status != PAD_NORMAL) {
|
||||
mStep = 10;
|
||||
} else if (mpWindow->isPointerWithinWindow() != false &&
|
||||
// "Press (A)."
|
||||
mpWindow->setProperties("SYS_MPLS_07", false, nullptr) == true) {
|
||||
mpWindow->fn_80150FB0();
|
||||
mPad::getCore()->startPatternRumble("**-*----", 0, false);
|
||||
mStepTimer = 0;
|
||||
mStep++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep = 5;
|
||||
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_POINTER_IN);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (status != PAD_NORMAL) {
|
||||
mStep = 10;
|
||||
} else if (mpWindow->isPointerWithinWindow() == false &&
|
||||
// "Point the Wii Remote at the screen, and move <pointer icon> to the center."
|
||||
mpWindow->setProperties("SYS_MPLS_02", false, nullptr) == true) {
|
||||
mStep = 1;
|
||||
} else if (mStepTimer < 8) {
|
||||
mStepTimer++;
|
||||
} else if (mpWindow->fn_80150FB0() == true) {
|
||||
mStepTimer = 0;
|
||||
mStep++;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (mpWindow->getField_0xDF8() == true) {
|
||||
if (status != PAD_NORMAL) {
|
||||
mStep = 20;
|
||||
} else if (mpWindow->isPointerWithinWindow() == false &&
|
||||
// "Point the Wii Remote at the screen, and move <pointer icon> to the center."
|
||||
mpWindow->setProperties("SYS_MPLS_02", false, nullptr) == true) {
|
||||
mpWindow->setField_0xE03(true);
|
||||
mStep = 1;
|
||||
} else if (mPad::getCore()->downTrigger(mPad::BUTTON_A) != false && mpWindow->fn_80150EB0() == true) {
|
||||
mStepTimer = 0;
|
||||
mStep++;
|
||||
dPad::ex_c::centerCurrentCursor();
|
||||
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_POINTER_OK);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
field_0x1E = true;
|
||||
field_0x25 = false;
|
||||
dCsBase_c::GetInstance()->setVisible(false);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(false);
|
||||
dCsBase_c::GetInstance()->setCalibrationPointCenterEnabled(false);
|
||||
ModeRequestNormal();
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 11;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
ModeRequestNext(status);
|
||||
dCsBase_c::GetInstance()->setVisible(false);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(false);
|
||||
dCsBase_c::GetInstance()->setCalibrationPointCenterEnabled(false);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
if (mpWindow->fn_80150EE0() == true) {
|
||||
mpWindow->setField_0xE03(true);
|
||||
mStep = 11;
|
||||
}
|
||||
break;
|
||||
}
|
||||
dCsBase_c::GetInstance()->update();
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeRequestCalibrationFail() {
|
||||
ModeRequest(CalibrationFail);
|
||||
}
|
||||
void dPadManager_c::ModeProc_CalibrationFail() {
|
||||
PadStatus_e status = getPadStatus();
|
||||
|
||||
switch (mStep) {
|
||||
case 0:
|
||||
// "Could not successfully complete the calibration check. Run the check again? [1]Check [2]Don't check"
|
||||
if (mpWindow->setProperties("SYS_MPLS_03", false, nullptr) == true) {
|
||||
mpWindow->fn_80150F30(4);
|
||||
mStep = 1;
|
||||
mStepTimer = 0;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (status != PAD_NORMAL && status != PAD_CONFIGURING_MPLS && status != PAD_NEED_CALIBRATION) {
|
||||
mStep = 14;
|
||||
} else if (mStepTimer < get1Point5SecondsInTicks()) {
|
||||
mStepTimer++;
|
||||
} else if (mPad::getCore()->downTrigger(mPad::BUTTON_A) != false && mpWindow->getField_0xDDC() != 2 &&
|
||||
mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 2;
|
||||
mStepTimer = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (mpWindow->getField_0xDDC() == 0) {
|
||||
if (
|
||||
// "If you proceed without finishing calibration, game controls may not work properly. Continue without finishing calibration? [1]Continue [2]Retry check"
|
||||
mpWindow->setProperties("SYS_MPLS_04", false, nullptr) == true
|
||||
) {
|
||||
mStep = 4;
|
||||
mpWindow->fn_80150F30(4);
|
||||
}
|
||||
} else {
|
||||
mStep = 6;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (status != PAD_NORMAL && status != PAD_CONFIGURING_MPLS && status != PAD_NEED_CALIBRATION) {
|
||||
mStep = 14;
|
||||
} else if (mPad::getCore()->downTrigger(mPad::BUTTON_A) != false && mpWindow->getField_0xDDC() != 2) {
|
||||
if (mpWindow->getField_0xDDC() == 0) {
|
||||
if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 5;
|
||||
}
|
||||
} else {
|
||||
if (mpWindow->fn_80150EB0() == true) {
|
||||
field_0x1D = false;
|
||||
dPad::ex_c::getInstance()->setNoCalibrationNeeded();
|
||||
mCalibrationSkipped = true;
|
||||
field_0x25 = false;
|
||||
mStep = 16;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep = 6;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
// "Now calibrating the Wii MotionPlus. Place the Wii Remote on a flat surface."
|
||||
if (mpWindow->setProperties("SYS_MPLS_01", false, nullptr) == true) {
|
||||
mpWindow->fn_80150F30(3);
|
||||
mpWindow->fn_80150FE0();
|
||||
mpWindow->fn_80151000();
|
||||
mCalibrationTimer = 0;
|
||||
mStep = 7;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
mStep = 8;
|
||||
mStepTimer = 0;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (status != PAD_NORMAL && status != PAD_NEED_CALIBRATION) {
|
||||
mStep = 12;
|
||||
} else if (mStepTimer < get1Point5SecondsInTicks()) {
|
||||
mStepTimer++;
|
||||
} else if (dPad::ex_c::startCurrentMplsCalibration() == false) {
|
||||
mStep = 9;
|
||||
mStepTimer = 0;
|
||||
mCalibrationTimer = 0;
|
||||
} else if (mCalibrationTimer >= get30SecondsInTicks() && mpWindow->fn_80150EE0() == true) {
|
||||
mpWindow->fn_80150FF0();
|
||||
mStep = 11;
|
||||
mCalibrationTimer = 0;
|
||||
} else {
|
||||
mCalibrationTimer++;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (status != PAD_NORMAL && status != PAD_NEED_CALIBRATION) {
|
||||
dPad::ex_c::stopCurrentMplsCalibration();
|
||||
mStep = 12;
|
||||
} else if (!dPad::ex_c::getCurrentCalibrationWork() && mpWindow->fn_80150EE0() == true) {
|
||||
// okay cool everywhere else we do "== true" and so on
|
||||
// but here the float is simply converted to bool
|
||||
// done calibrating
|
||||
mStep = 10;
|
||||
} else if (mCalibrationTimer >= get30SecondsInTicks() && mpWindow->fn_80150EE0() == true) {
|
||||
mpWindow->fn_80150FF0();
|
||||
mStep = 11;
|
||||
mCalibrationTimer = 0;
|
||||
} else {
|
||||
mCalibrationTimer++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
field_0x1D = false;
|
||||
mCalibrationFinished = true;
|
||||
ModeRequestPointCenter();
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
ModeRequestCalibrationFail();
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
mpWindow->fn_80150FF0();
|
||||
if (mpWindow->fn_80150EE0() == true) {
|
||||
mStep = 13;
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
if (status == PAD_CONFIGURING_MPLS) {
|
||||
ModeRequestCalibrationFail();
|
||||
} else {
|
||||
ModeRequestNext(status);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
if (mpWindow->fn_80150EB0() == true) {
|
||||
mpWindow->setField_0xE04(true);
|
||||
mStep = 15;
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
ModeRequestNext(status);
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
if (mpWindow->getField_0xDF7() == true) {
|
||||
ModeRequestNext(status);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeRequest(Mode_e mode) {
|
||||
mMode = mode;
|
||||
mStep = 0;
|
||||
mStepTimer = 0;
|
||||
mCalibrationTimer = 0;
|
||||
}
|
||||
|
||||
dPadManager_c::PadStatus_e dPadManager_c::getPadStatus() {
|
||||
PadStatus_e ret = PAD_NORMAL;
|
||||
if (dDvdUnk::FontUnk::GetInstance()->padErrorsAllowed() != true) {
|
||||
return PAD_NORMAL;
|
||||
}
|
||||
|
||||
if (!mPad::getCore()->isConnected()) {
|
||||
ret = PAD_DISCONNECTED;
|
||||
} else if (dPad::ex_c::isMissingMpls() == true || dPad::ex_c::fn_800590E0()) {
|
||||
ret = PAD_NO_MPLS;
|
||||
} else if (dPad::ex_c::isMissingNunchuk() == true) {
|
||||
ret = PAD_NO_NUNCHUK;
|
||||
} else {
|
||||
if (mMode == Normal) {
|
||||
if (dPad::ex_c::needMplsCalibration()) {
|
||||
ret = PAD_NEED_CALIBRATION;
|
||||
} else if (field_0x25) {
|
||||
ret = PAD_NEED_POINT_CENTER;
|
||||
}
|
||||
}
|
||||
if (dPad::ex_c::fn_800590B0()) {
|
||||
ret = PAD_CONFIGURING_MPLS;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void dPadManager_c::ModeRequestNext(PadStatus_e status) {
|
||||
if (status == PAD_DISCONNECTED) {
|
||||
ModeRequestReconnectPad();
|
||||
} else if (status == PAD_NO_MPLS) {
|
||||
ModeRequestAttachMplsAndNunchuk();
|
||||
} else if (status == PAD_NO_NUNCHUK) {
|
||||
ModeRequestAttachNunchuk();
|
||||
} else if (status == PAD_NEED_CALIBRATION) {
|
||||
ModeRequestCalibrating();
|
||||
} else if (field_0x1D == true) {
|
||||
ModeRequestCalibrating();
|
||||
} else if (field_0x25 == true) {
|
||||
ModeRequestPointCenter();
|
||||
} else if (isOutOfBattery() == true) {
|
||||
ModeRequestLowBattery();
|
||||
} else {
|
||||
ModeRequestNormal();
|
||||
}
|
||||
}
|
||||
|
||||
s32 dPadManager_c::get1Point5SecondsInTicks() {
|
||||
return 90 / dSys_c::getFrameRate();
|
||||
}
|
||||
|
||||
bool dPadManager_c::isOutOfBattery() {
|
||||
if (dDvdUnk::FontUnk::GetInstance()->padErrorsAllowed() != true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (dPad::ex_c::isOutOfBattery() && field_0x20 == true) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
+17
-15
@@ -26,6 +26,7 @@
|
||||
#include "rvl/OS/OSThread.h"
|
||||
#include "rvl/VI/vi.h"
|
||||
#include "toBeSorted/file_manager.h"
|
||||
#include "toBeSorted/nand_result_tracker.h"
|
||||
#include "toBeSorted/save_manager.h"
|
||||
#include "THPPlayer/THPPlayer.h"
|
||||
|
||||
@@ -328,23 +329,23 @@ 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);
|
||||
dScBoot_c::GetInstance()->setField_0x5E4(false);
|
||||
mpFader->setStatus(EGG::ColorFader::STATUS_PREPARE_OUT);
|
||||
ModeRequest(Normal);
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E310();
|
||||
} else {
|
||||
if (field_0x66) {
|
||||
dScBoot_c::GetInstance()->setField_0x5E3(1);
|
||||
dScBoot_c::GetInstance()->setField_0x5E3(true);
|
||||
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_800529B0();
|
||||
dSndPlayerMgr_c::GetInstance()->fn_8035E6E0();
|
||||
|
||||
if (dDvdUnk::FontUnk::GetInstance()->getField_0x29() ||
|
||||
dDvdUnk::FontUnk::GetInstance()->getField_0x24() ||
|
||||
if (dDvdUnk::FontUnk::GetInstance()->isNandError() ||
|
||||
dDvdUnk::FontUnk::GetInstance()->getNandError() != NandResultTracker::ERR_CAT_NONE ||
|
||||
SaveMgr::GetInstance()->getCheckForFreeSpaceResult()) {
|
||||
dScBoot_c::GetInstance()->setField_0x5E3(0);
|
||||
dScBoot_c::GetInstance()->setField_0x5E2(1);
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_800529E0();
|
||||
dScBoot_c::GetInstance()->setField_0x5E3(false);
|
||||
dScBoot_c::GetInstance()->setField_0x5E2(true);
|
||||
dDvdUnk::FontUnk::GetInstance()->clearNandError();
|
||||
}
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052A20();
|
||||
}
|
||||
@@ -356,9 +357,9 @@ void Manage_c::ModeProc_SoftReset() {
|
||||
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);
|
||||
dCsBase_c::GetInstance()->setVisible(false);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(false);
|
||||
dCsBase_c::GetInstance()->setCalibrationPointCenterEnabled(false);
|
||||
|
||||
field_0x66 = false;
|
||||
}
|
||||
@@ -552,7 +553,8 @@ void Manage_c::CleanUpLC() {
|
||||
|
||||
void Manage_c::MotorCancelOn() {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mPad::g_core[--++i]->stopRumbleMgr();
|
||||
// TODO: Fakematch
|
||||
mPad::getCore(--++i)->stopRumbleMgr();
|
||||
}
|
||||
dRumble_c::stop(-1);
|
||||
}
|
||||
@@ -564,7 +566,7 @@ bool Manage_c::IsFatalError() {
|
||||
}
|
||||
|
||||
bool Manage_c::IsDiskError() {
|
||||
return dDvdUnk::FontUnk::GetInstance()->getField_0x28();
|
||||
return dDvdUnk::FontUnk::GetInstance()->isDiskError();
|
||||
}
|
||||
|
||||
bool Manage_c::FadeOutCalc() {
|
||||
@@ -581,9 +583,9 @@ void Manage_c::FadeOutRequest(bool 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);
|
||||
dCsBase_c::GetInstance()->setVisible(false);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(false);
|
||||
dCsBase_c::GetInstance()->setCalibrationPointCenterEnabled(false);
|
||||
|
||||
field_0x66 = 0;
|
||||
|
||||
|
||||
@@ -42,9 +42,6 @@ static const char *sLayoutArcsToLoad[] = {
|
||||
STATE_VIRTUAL_DEFINE(dScTitle_c, Stanby);
|
||||
STATE_VIRTUAL_DEFINE(dScTitle_c, Action);
|
||||
|
||||
extern "C" void *lbl_805750D8;
|
||||
extern "C" void fn_80052D50(void *);
|
||||
|
||||
dScTitle_c::dScTitle_c() {
|
||||
sInstance = this;
|
||||
mRelCtrl.set(sModulesToLoad, ARRAY_LENGTH(sModulesToLoad));
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
#include "toBeSorted/nand_result_tracker.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/d_dvd_unk.h"
|
||||
#include "d/d_gfx.h"
|
||||
#include "d/lyt/d_lyt_system_window.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
|
||||
NandResultTracker *NandResultTracker::sInstance;
|
||||
|
||||
void NandResultTracker::create(EGG::Heap *heap) {
|
||||
sInstance = new (heap) NandResultTracker();
|
||||
sInstance->init();
|
||||
}
|
||||
|
||||
NandResultTracker *NandResultTracker::GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
bool NandResultTracker::isFailure(NANDResult status) {
|
||||
bool ret = true;
|
||||
|
||||
switch (status) {
|
||||
case NAND_RESULT_OK:
|
||||
case NAND_RESULT_EXISTS:
|
||||
case NAND_RESULT_NOEXISTS: {
|
||||
mErrorCategory = ERR_CAT_NONE;
|
||||
ret = false;
|
||||
break;
|
||||
}
|
||||
case NAND_RESULT_ECC_CRIT:
|
||||
case NAND_RESULT_AUTHENTICATION: {
|
||||
mErrorCategory = ERR_CAT_SAVE_MGR;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
mErrorCategory = ERR_CAT_FATAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void NandResultTracker::draw() {
|
||||
dGfx_c::doDrawCapTexture();
|
||||
}
|
||||
|
||||
void NandResultTracker::execute() {
|
||||
static const ModeFunc procs[] = {
|
||||
&NandResultTracker::ModeProc_Normal,
|
||||
&NandResultTracker::ModeProc_Error,
|
||||
};
|
||||
ModeFunc f = procs[mMode];
|
||||
if (f != nullptr) {
|
||||
(this->*f)();
|
||||
}
|
||||
}
|
||||
|
||||
void NandResultTracker::init() {
|
||||
mErrorCategory = ERR_CAT_NONE;
|
||||
mIsError = false;
|
||||
ModeRequestNormal();
|
||||
}
|
||||
|
||||
void NandResultTracker::ModeRequestNormal() {
|
||||
ModeRequest(Normal);
|
||||
}
|
||||
|
||||
void NandResultTracker::ModeProc_Normal() {
|
||||
if (mErrorCategory != ERR_CAT_NONE && mErrorCategory != ERR_CAT_SAVE_MGR) {
|
||||
mIsError = true;
|
||||
dDvdUnk::FontUnk::GetInstance()->onError();
|
||||
} else {
|
||||
mIsError = false;
|
||||
}
|
||||
|
||||
if (mErrorCategory != ERR_CAT_NONE && mErrorCategory != ERR_CAT_SAVE_MGR) {
|
||||
ModeRequestError();
|
||||
}
|
||||
}
|
||||
|
||||
void NandResultTracker::ModeRequestError() {
|
||||
ModeRequest(Error);
|
||||
}
|
||||
|
||||
void NandResultTracker::ModeProc_Error() {
|
||||
// Note: Only index 3 (SYS_NAND_12) is reachable apparently
|
||||
#pragma push
|
||||
#pragma readonly_strings on
|
||||
static const char *sMessages[] = {
|
||||
// "The Wii system memory has been damaged. Refer to the Wii Operations Manual for details."
|
||||
"SYS_NAND_08",
|
||||
"SYS_NAND_08",
|
||||
// "Could not access Wii system memory. Refer to the Wii Operations Manual for details."
|
||||
"SYS_NAND_11",
|
||||
// "An error occurred while accessing Wii system memory. Refer to the Wii Operations Manual for details."
|
||||
"SYS_NAND_12",
|
||||
"SYS_NAND_12",
|
||||
};
|
||||
#pragma pop
|
||||
dLytSystemWindow_c *window = dLytSystemWindow_c::GetInstance();
|
||||
s32 error = GetInstance()->getErrorCategory();
|
||||
|
||||
switch (mStep) {
|
||||
case 0:
|
||||
if (window->setProperties(sMessages[error], false, nullptr) == true) {
|
||||
mStep = 1;
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void NandResultTracker::ModeRequest(Mode_e mode) {
|
||||
mMode = mode;
|
||||
mStep = 0;
|
||||
}
|
||||
@@ -81,7 +81,7 @@ void SaveMgr::init() {
|
||||
mDelayTimer = 0;
|
||||
FileManager::GetInstance()->setField0xA840(1);
|
||||
if (dCsBase_c::GetInstance() != nullptr) {
|
||||
dCsBase_c::GetInstance()->setField704(false);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(false);
|
||||
}
|
||||
if (mpWindow != nullptr) {
|
||||
mpWindow->reset();
|
||||
@@ -175,7 +175,7 @@ bool SaveMgr::saveAfterCredits() {
|
||||
return false;
|
||||
}
|
||||
field_0x836 = 0;
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052D00(true);
|
||||
dDvdUnk::FontUnk::GetInstance()->setNeedsPad(true);
|
||||
FileManager::GetInstance()->setFileTimes();
|
||||
FileManager::GetInstance()->saveAfterCredits();
|
||||
initializeSave();
|
||||
@@ -218,7 +218,7 @@ void SaveMgr::initializeCheckForSave() {
|
||||
beginState(STATE_CHECK_FOR_SAVE);
|
||||
mCheckIsFileRequest.checkIsFile(sSaveFileName);
|
||||
field_0x839 = 0;
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052D00(false);
|
||||
dDvdUnk::FontUnk::GetInstance()->setNeedsPad(false);
|
||||
}
|
||||
|
||||
void SaveMgr::executeCheckForSave() {
|
||||
@@ -290,7 +290,7 @@ void SaveMgr::executeCheckForSave() {
|
||||
|
||||
void SaveMgr::initializeCheckForFreeSpace() {
|
||||
beginState(STATE_CHECK_FOR_FREE_SPACE);
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052D00(false);
|
||||
dDvdUnk::FontUnk::GetInstance()->setNeedsPad(false);
|
||||
mCheckRequest.check(7, 3);
|
||||
mCheckForFreeSpaceResult = 0;
|
||||
}
|
||||
@@ -327,7 +327,7 @@ void SaveMgr::initializeCreateFiles() {
|
||||
beginState(STATE_CREATE_FILES);
|
||||
field_0x838 = 1;
|
||||
FileManager::GetInstance()->setField0xA84D(1);
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052D00(false);
|
||||
dDvdUnk::FontUnk::GetInstance()->setNeedsPad(false);
|
||||
}
|
||||
|
||||
void SaveMgr::executeCreateFiles() {
|
||||
@@ -510,7 +510,7 @@ void SaveMgr::executeSaveBanner() {
|
||||
}
|
||||
|
||||
if (b == 1) {
|
||||
if (!dDvdUnk::FontUnk::GetInstance()->getField_0x28()) {
|
||||
if (!dDvdUnk::FontUnk::GetInstance()->isDiskError()) {
|
||||
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_SAVE_FINISH);
|
||||
}
|
||||
mDelayTimer = 0;
|
||||
@@ -532,8 +532,8 @@ void SaveMgr::executeSaveBanner() {
|
||||
}
|
||||
case 5: {
|
||||
if (mpWindow->getWillFinishOut() == 1) {
|
||||
if (fontUnk->getField_0x29() == 1) {
|
||||
fontUnk->fn_80052C90();
|
||||
if (fontUnk->isNandError() == 1) {
|
||||
fontUnk->clearNandTrackerError();
|
||||
}
|
||||
field_0x838 = 0;
|
||||
field_0x83A = 0;
|
||||
@@ -721,7 +721,7 @@ void SaveMgr::executeLoadSave() {
|
||||
void SaveMgr::initializeWriteSave() {
|
||||
beginState(STATE_WRITE);
|
||||
mDelayTimer = 0;
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052D00(false);
|
||||
dDvdUnk::FontUnk::GetInstance()->setNeedsPad(false);
|
||||
FileManager::GetInstance()->setField0xA84D(1);
|
||||
field_0x83D = 1;
|
||||
}
|
||||
@@ -1110,7 +1110,7 @@ void SaveMgr::executeClearSelectedFile() {
|
||||
void SaveMgr::initializeSave() {
|
||||
beginState(STATE_SAVE);
|
||||
FileManager::GetInstance()->setField0xA840(0);
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052D00(false);
|
||||
dDvdUnk::FontUnk::GetInstance()->setNeedsPad(false);
|
||||
FileManager::GetInstance()->setField_0xA843(1);
|
||||
}
|
||||
|
||||
@@ -1218,7 +1218,7 @@ void SaveMgr::initializeError() {
|
||||
FileManager::GetInstance()->setField0xA84D(0);
|
||||
field_0x83D = 0;
|
||||
beginState(STATE_ERROR);
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052D00(true);
|
||||
dDvdUnk::FontUnk::GetInstance()->setNeedsPad(true);
|
||||
field_0x83F = 0;
|
||||
}
|
||||
|
||||
@@ -1227,7 +1227,7 @@ void SaveMgr::executeError() {
|
||||
FileManager *fileManager = FileManager::GetInstance();
|
||||
switch (mStep) {
|
||||
case 0: {
|
||||
if (dDvdUnk::FontUnk::GetInstance()->getField_0x24() == 4) {
|
||||
if (dDvdUnk::FontUnk::GetInstance()->getNandError() == NandResultTracker::ERR_CAT_SAVE_MGR) {
|
||||
if (field_0x837 == true) {
|
||||
// "The save data is corrupted. Save data will be restored."
|
||||
if (systemWindow->setProperties("SYS_INIT_05", false, nullptr) == true) {
|
||||
@@ -1239,7 +1239,7 @@ void SaveMgr::executeError() {
|
||||
if (systemWindow->setProperties("SYS_INIT_04", false, nullptr) == true) {
|
||||
systemWindow->showMaybe(4);
|
||||
mStep = 1;
|
||||
dCsBase_c::GetInstance()->setField704(true);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(true);
|
||||
}
|
||||
} else {
|
||||
// "The file cannot be used because nthe data is corrupted. All data saved up to this point will be
|
||||
@@ -1247,7 +1247,7 @@ void SaveMgr::executeError() {
|
||||
if (systemWindow->setProperties("SYS_NAND_07", false, nullptr) == true) {
|
||||
systemWindow->showMaybe(4);
|
||||
mStep = 1;
|
||||
dCsBase_c::GetInstance()->setField704(true);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1274,7 +1274,7 @@ void SaveMgr::executeError() {
|
||||
mStep = 3;
|
||||
} else {
|
||||
initializeDeleteAllData();
|
||||
dCsBase_c::GetInstance()->setField704(false);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(false);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1336,11 +1336,11 @@ void SaveMgr::executeError() {
|
||||
}
|
||||
case 10: {
|
||||
if (systemWindow->fn_80152F70() == true) {
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052C90();
|
||||
dDvdUnk::FontUnk::GetInstance()->clearNandTrackerError();
|
||||
if (field_0x837 != true) {
|
||||
fileManager->setField0xA84C(1);
|
||||
}
|
||||
dCsBase_c::GetInstance()->setField704(false);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(false);
|
||||
endState();
|
||||
}
|
||||
break;
|
||||
@@ -1372,7 +1372,7 @@ void SaveMgr::executeError() {
|
||||
void SaveMgr::initializeNandError() {
|
||||
FileManager::GetInstance()->setField0xA84D(0);
|
||||
field_0x83D = 0;
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052D00(true);
|
||||
dDvdUnk::FontUnk::GetInstance()->setNeedsPad(true);
|
||||
beginState(STATE_NAND_ERROR);
|
||||
}
|
||||
|
||||
@@ -1424,7 +1424,7 @@ void SaveMgr::executeNandError() {
|
||||
// "Do you want to go to the Wii console's Data Management screen to edit data? [1]Yes[2]No"
|
||||
if (systemWindow->setProperties("SYS_NAND_04", false, nullptr) == true) {
|
||||
systemWindow->showMaybe(4);
|
||||
dCsBase_c::GetInstance()->setField704(true);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(true);
|
||||
mStep = 5;
|
||||
}
|
||||
break;
|
||||
@@ -1455,7 +1455,7 @@ void SaveMgr::executeNandError() {
|
||||
if (systemWindow->getField_0xDE0() == 0) {
|
||||
mStep = 9;
|
||||
} else {
|
||||
dCsBase_c::GetInstance()->setField704(false);
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(false);
|
||||
dReset::Manage_c::GetInstance()->SetInteriorReturnDataManager();
|
||||
endState();
|
||||
field_0x836 = 0;
|
||||
@@ -1501,8 +1501,8 @@ void SaveMgr::executeNandError() {
|
||||
}
|
||||
case 13: {
|
||||
if (systemWindow->fn_80152F70() == 1) {
|
||||
dCsBase_c::GetInstance()->setField704(false);
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052C90();
|
||||
dCsBase_c::GetInstance()->setDrawDirectly(false);
|
||||
dDvdUnk::FontUnk::GetInstance()->clearNandTrackerError();
|
||||
fileManager->setField0xA84C(1);
|
||||
endState();
|
||||
}
|
||||
@@ -1522,7 +1522,7 @@ void SaveMgr::endState() {
|
||||
field_0x836 = 1;
|
||||
FileManager::GetInstance()->setField0xA840(1);
|
||||
field_0x83D = 0;
|
||||
dDvdUnk::FontUnk::GetInstance()->fn_80052D00(true);
|
||||
dDvdUnk::FontUnk::GetInstance()->setNeedsPad(true);
|
||||
field_0x83B = 0;
|
||||
field_0x83C = 0;
|
||||
mCurrentState = STATE_MAX;
|
||||
|
||||
Reference in New Issue
Block a user