同一本体への書き戻しを区別するように

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@62 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2011-02-16 09:02:41 +00:00
parent 5f340c6736
commit 9f0e693e94
6 changed files with 45 additions and 18 deletions

View File

@ -216,16 +216,6 @@ void ControlState(::std::vector<std::string>& operationMessage, bool& nextStep,
}
else
{
// SDカードのIVSと本体のIVSは異なるか
if (EqualsIVSFileandIVS())
{
COMMON_LOGGER("Restore data to the same Console. Initialize.\n");
// 本体初期化を行う
InitializeFileSystem();
error = true;
s_RestoreState = REBOOTING;
}
// SDカードに書き込みできるか
if (nextStep && !nn::fs::IsSdmcWritable())
{
@ -238,10 +228,22 @@ void ControlState(::std::vector<std::string>& operationMessage, bool& nextStep,
else
{
COMMON_LOGGER("Initialize Console\n");
// 本体初期化完了ファイルを作る
CreateConsoleInitializedFile();
// 本体初期化を行う
// SDカードのIVSと本体のIVSは異なるか
if (EqualsIVSFileandIVS())
{
// 同一本体に書き戻そうとしたファイルを作る
COMMON_LOGGER("Restore to the same console. Initialize.\n");
CreateTryRestoreSameConsoleFile();
}
else
{
// 本体初期化完了ファイルを作る
CreateConsoleInitializedFile();
}
// ファイルシステムの初期化を行う
InitializeFileSystem();
error = true;
s_RestoreState = REBOOTING;
@ -612,8 +614,12 @@ void ControlState(::std::vector<std::string>& operationMessage, bool& nextStep,
// ptmのセーブデータ移行後に時計を無効化する
nn::ptm::CTR::InvalidateSystemTime();
// cfgのハードウェア固有情報をcal値で初期化する
InitializeHardwareDependentSetting();
// 同じ本体に書き戻す場合は初期化しない
if (!ExistsTryRestoreSameConsoleFile())
{
// cfgのハードウェア固有情報をcal値で初期化する
InitializeHardwareDependentSetting();
}
init = false;
}
@ -697,6 +703,9 @@ void ControlState(::std::vector<std::string>& operationMessage, bool& nextStep,
case SHUTDOWN:
{
// リストア状態チェックファイルをすべて削除
DeleteAllCheckFiles();
// 本体初期化を行う
InitializeFileSystem();

View File

@ -769,6 +769,11 @@ void CreateRtcSyncFinishedFile()
CreateEmptyFile(common::RTC_SYNC_CHECK_PATHNAME);
}
void CreateTryRestoreSameConsoleFile()
{
CreateEmptyFile(common::TRY_RESTORE_SAME_CONSOLE_PATHNAME);
}
u32 GetImportProgress()
{
return common::GetProgress();

View File

@ -35,6 +35,7 @@ void CreateWriteFinishedFile();
void CreateUpdateFinishedFile();
void CreateConsoleInitializedFile();
void CreateRtcSyncFinishedFile();
void CreateTryRestoreSameConsoleFile();
u32 GetImportProgress();
// NANDのごみを削除する
@ -45,7 +46,8 @@ const wchar_t* const CHECK_FILENAME_TABLE[] =
common::UPDATE_CHECK_PATHNAME,
common::INITIALIZED_CHECK_PATHNAME,
common::WRITE_FINISHED_CHECK_PATHNAME,
common::RTC_SYNC_CHECK_PATHNAME
common::RTC_SYNC_CHECK_PATHNAME,
common::TRY_RESTORE_SAME_CONSOLE_PATHNAME
};
void DeleteAllCheckFiles();

View File

@ -82,7 +82,9 @@ bool ExistsIVSFile()
bool ExistsConsoleInitializedFile()
{
return ExistsFile(EXISTS_CONSOLE_INTIALIZED);
// どちらかのファイルがあれば初期化済み
return ExistsFile(EXISTS_CONSOLE_INTIALIZED) ||
ExistsFile(EXISTS_TRY_RESTORE_SAME_CONSOLE);
}
bool ExistsWriteFinishedFile()
@ -105,6 +107,11 @@ bool ExistsCountryLanguageFile()
return ExistsFile(EXISTS_COUNTRY_LANGUAGE);
}
bool ExistsTryRestoreSameConsoleFile()
{
return ExistsFile(EXISTS_TRY_RESTORE_SAME_CONSOLE);
}
void InitializeFileCheck()
{
for(u32 i = 0; i < EXISTS_MAX; i++)

View File

@ -31,6 +31,7 @@ typedef enum FILE_EXISTS_CHECK
EXISTS_AP_SETTING,
EXISTS_RTC_SYNC_FINISHED,
EXISTS_COUNTRY_LANGUAGE,
EXISTS_TRY_RESTORE_SAME_CONSOLE,
EXISTS_MAX
} FileExistsCheck;
@ -43,7 +44,8 @@ const wchar_t* const FILENAME_TABLE[EXISTS_MAX] =
common::WRITE_FINISHED_CHECK_PATHNAME,
common::AP_SETTING_PATHNAME,
common::RTC_SYNC_CHECK_PATHNAME,
common::COUNTRY_SETTING_PATHNAME
common::COUNTRY_SETTING_PATHNAME,
common::TRY_RESTORE_SAME_CONSOLE_PATHNAME
};
@ -55,6 +57,7 @@ bool ExistsWriteFinishedFile();
bool ExistsAPSetting();
bool ExistsRtcSyncFinishedFile();
bool ExistsCountryLanguageFile();
bool ExistsTryRestoreSameConsoleFile();
void InitializeFileCheck();

View File

@ -48,6 +48,7 @@ const wchar_t* const SDMC_ROOT_DIRECTORY_PATH = L"sdmc:/";
const wchar_t* const WRITE_FINISHED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/WriteFinished";
const wchar_t* const UPDATE_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/UpdateFinished";
const wchar_t* const INITIALIZED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/ConsoleInitialized";
const wchar_t* const TRY_RESTORE_SAME_CONSOLE_PATHNAME = L"sdmc:/CTR_Console_Repair/TryRestoreSameConsole";
const wchar_t* const RTC_SYNC_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/RtcSyncFinished";
const wchar_t* const PLAYHISTORY_PATHNAME = L"sdmc:/CTR_Console_Repair/playhistory.bin";
const wchar_t* const PLAYHISTORY_COUNT_PATHNAME = L"sdmc:/CTR_Console_Repair/playhistoryCount.bin";