Other cleanup

This commit is contained in:
robojumper
2025-08-01 11:26:25 +02:00
parent 415873f7b3
commit d153cbc0ed
18 changed files with 569 additions and 130 deletions
+12 -9
View File
@@ -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
View File
@@ -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;
}
+1 -1
View File
@@ -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()) {
+219 -5
View File
@@ -1,23 +1,237 @@
#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"
#include "d/dol_backup_error_font.inc"
namespace dDvdUnk {
#include "d/dol_backup_error_font.inc"
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
+20 -20
View File
@@ -42,7 +42,7 @@ bool dPadManager_c::draw() {
}
void dPadManager_c::init() {
field_0x22 = false;
mSavedCsDrawDirectly = false;
field_0x23 = false;
ModeRequestNormal();
field_0x1E = false;
@@ -94,10 +94,10 @@ void dPadManager_c::executeProc() {
void dPadManager_c::ModeRequestNormal() {
ModeRequest(Normal);
field_0x1C = false;
mIsError = false;
field_0x1D = false;
if (dCsBase_c::GetInstance() != nullptr) {
dCsBase_c::GetInstance()->setField704(field_0x22);
dCsBase_c::GetInstance()->setDrawDirectly(mSavedCsDrawDirectly);
if (field_0x23) {
dPadNav::setCursorStickVisible();
} else {
@@ -110,8 +110,8 @@ void dPadManager_c::ModeProc_Normal() {
PadStatus_e status = getPadStatus();
if (status == PAD_NORMAL || status == PAD_CONFIGURING_MPLS) {
if (isOutOfBattery() == true) {
field_0x1C = true;
dDvdUnk::FontUnk::GetInstance()->fn_80052C60();
mIsError = true;
dDvdUnk::FontUnk::GetInstance()->onError();
ModeRequestLowBattery();
}
return;
@@ -119,15 +119,15 @@ void dPadManager_c::ModeProc_Normal() {
// Some sort of error occured
field_0x1C = true;
mIsError = true;
mPadStatus = status;
dCsBase_c *cs = dCsBase_c::GetInstance();
field_0x22 = cs->getField704();
cs->setField704(false);
mSavedCsDrawDirectly = cs->getDrawDirectly();
cs->setDrawDirectly(false);
cs->setCursorStickVisible(false);
field_0x23 = dPadNav::isCursorStickVisible();
dPadNav::setCursorStickInvisible();
dDvdUnk::FontUnk::GetInstance()->fn_80052C60();
dDvdUnk::FontUnk::GetInstance()->onError();
if (status == PAD_DISCONNECTED) {
ModeRequestReconnectPad();
@@ -468,9 +468,9 @@ void dPadManager_c::ModeProc_PointCenter() {
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()->setField703(true);
dCsBase_c::GetInstance()->setField704(true);
dCsBase_c::GetInstance()->setField705(true);
dCsBase_c::GetInstance()->setVisible(true);
dCsBase_c::GetInstance()->setDrawDirectly(true);
dCsBase_c::GetInstance()->setCalibrationPointCenterEnabled(true);
mStep = 1;
}
break;
@@ -532,9 +532,9 @@ void dPadManager_c::ModeProc_PointCenter() {
if (mpWindow->getField_0xDF7() == true) {
field_0x1E = true;
field_0x25 = false;
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);
ModeRequestNormal();
return;
}
@@ -547,9 +547,9 @@ void dPadManager_c::ModeProc_PointCenter() {
case 11:
if (mpWindow->getField_0xDF7() == true) {
ModeRequestNext(status);
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);
return;
}
break;
@@ -736,7 +736,7 @@ void dPadManager_c::ModeRequest(Mode_e mode) {
dPadManager_c::PadStatus_e dPadManager_c::getPadStatus() {
PadStatus_e ret = PAD_NORMAL;
if (dDvdUnk::FontUnk::GetInstance()->fn_80052D20() != true) {
if (dDvdUnk::FontUnk::GetInstance()->padErrorsAllowed() != true) {
return PAD_NORMAL;
}
@@ -787,7 +787,7 @@ s32 dPadManager_c::get1Point5SecondsInTicks() {
}
bool dPadManager_c::isOutOfBattery() {
if (dDvdUnk::FontUnk::GetInstance()->fn_80052D20() != true) {
if (dDvdUnk::FontUnk::GetInstance()->padErrorsAllowed() != true) {
return false;
}
+11 -10
View File
@@ -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 "rvl/OS.h"
@@ -339,12 +340,12 @@ void Manage_c::ModeProc_SoftReset() {
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();
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;
}
@@ -564,7 +565,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 +582,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;
-3
View File
@@ -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));
+118
View File
@@ -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;
}
+23 -23
View File
@@ -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;