From 9f0e693e945935f68e2f65d1f98286831af58637 Mon Sep 17 00:00:00 2001 From: N2614 Date: Wed, 16 Feb 2011 09:02:41 +0000 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E4=B8=80=E6=9C=AC=E4=BD=93=E3=81=B8?= =?UTF-8?q?=E3=81=AE=E6=9B=B8=E3=81=8D=E6=88=BB=E3=81=97=E3=82=92=E5=8C=BA?= =?UTF-8?q?=E5=88=A5=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../ConsoleRestore/Controller.cpp | 39 ++++++++++++------- .../ConsoleRestore/Importer.cpp | 5 +++ .../ConsoleRestore/Importer.h | 4 +- .../common/FileChecker.cpp | 9 ++++- .../ConsoleDataMigration/common/FileChecker.h | 5 ++- trunk/ConsoleDataMigration/common/FileName.h | 1 + 6 files changed, 45 insertions(+), 18 deletions(-) diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp index 58000d3..12d4fa4 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp @@ -216,16 +216,6 @@ void ControlState(::std::vector& 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& 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& 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& operationMessage, bool& nextStep, case SHUTDOWN: { + // リストア状態チェックファイルをすべて削除 + DeleteAllCheckFiles(); + // 本体初期化を行う InitializeFileSystem(); diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp index 2b6eeaa..4401b99 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp @@ -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(); diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h index 881175f..a31a346 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h @@ -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(); diff --git a/trunk/ConsoleDataMigration/common/FileChecker.cpp b/trunk/ConsoleDataMigration/common/FileChecker.cpp index 91b590f..50366a7 100644 --- a/trunk/ConsoleDataMigration/common/FileChecker.cpp +++ b/trunk/ConsoleDataMigration/common/FileChecker.cpp @@ -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++) diff --git a/trunk/ConsoleDataMigration/common/FileChecker.h b/trunk/ConsoleDataMigration/common/FileChecker.h index e0b4939..2acabbc 100644 --- a/trunk/ConsoleDataMigration/common/FileChecker.h +++ b/trunk/ConsoleDataMigration/common/FileChecker.h @@ -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(); diff --git a/trunk/ConsoleDataMigration/common/FileName.h b/trunk/ConsoleDataMigration/common/FileName.h index ad1234b..94ba63a 100644 --- a/trunk/ConsoleDataMigration/common/FileName.h +++ b/trunk/ConsoleDataMigration/common/FileName.h @@ -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";