From 908a485786f9ee331723a5611a08f327f45681af Mon Sep 17 00:00:00 2001 From: N2614 Date: Thu, 24 Feb 2011 05:52:34 +0000 Subject: [PATCH] =?UTF-8?q?=E3=81=BE=E3=81=9A=E7=84=A1=E7=B7=9A=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=81=AE=E7=A2=BA=E8=AA=8D=E3=82=92=E8=A1=8C=E3=81=86?= =?UTF-8?q?=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@90 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../ConsoleRestore/Controller.cpp | 245 +++++++++--------- 1 file changed, 126 insertions(+), 119 deletions(-) diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp index 9dbd1a6..c1af941 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp @@ -236,134 +236,141 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, { CheckAndReadVersionData(operationMessage); validApSetting = CheckAndReadAPSetting(operationMessage); - - // NUPが必要か? - if (!NeedsNup()) + if (!validApSetting) { - if (s_NupOnlyMode) - { - s_RestoreState = NUP_ONLY_WAIT_SD_EJECT; - - // リストア状態チェックファイルをすべて削除 - DeleteAllCheckFiles(); - - break; - } - - // SDカードに書き込み完了ファイルがあるか? - if (!ExistsWriteFinishedFile()) - { - // IVSを読めるか? - if (CanReadIVS()) - { - // 本体初期化完了ファイルがあるか? - if (ExistsConsoleInitializedFile()) - { - // SDカードにシリアルナンバーがあるか? - if (!ExistsSerialNumberFile()) - { - COMMON_LOGGER("Can't Read Serial Number in SD Card!!\n"); - error = true; - s_RestoreState = SERIAL_IS_NOT_IN_SD; - } - else - { - ::std::string serial(reinterpret_cast (ReadSerialNumber())); - operationMessage.push_back(::std::string("Serial Number in SD : ") + serial); - } - - // SDカードに書き込みできるか? - if (nextStep && !nn::fs::IsSdmcWritable()) - { - error = true; - PlaySound(SOUND_ANNOTATION); - COMMON_LOGGER("Can't Write SD Card!!\n"); - } - - // SDカードにリージョンデータがあるか? - if(ExistsRegionData()) - { - // リージョンデータは一致しているか? - if(!EqualsRegionDataandRegion()) - { - COMMON_LOGGER("Current Region and Region in SD differ!!\n"); - error = true; - s_RestoreState = FAIL; - } - } - else - { - // 移行不能なのでFAIL - COMMON_LOGGER("Can't Read Region in SD Card!!\n"); - error = true; - s_RestoreState = FAIL; - } - - } - else - { - if (!ExistsIVSFile()) - { - // 移行不能なのでFAIL - COMMON_LOGGER("Can't Read IVS in SD Card!!\n"); - error = true; - s_RestoreState = FAIL; - } - else - { - COMMON_LOGGER("Initialize Console\n"); - - // SDカードのIVSと本体のIVSは異なるか? - if (EqualsIVSFileandIVS()) - { - // 同一本体に書き戻そうとしたファイルを作る - COMMON_LOGGER("Restore to the same console. Initialize.\n"); - CreateTryRestoreSameConsoleFile(); - } - else - { - // 本体初期化完了ファイルを作る - CreateConsoleInitializedFile(); - - } - - // ファイルシステムの初期化を行う - InitializeFileSystem(); - error = true; - s_RestoreState = REBOOTING; - } - } - } - else - { - error = true; - operationMessage.push_back(::std::string("Can't Read IVS!!")); - } - } - else - { - if(validApSetting) - { - // 削除処理を行う - needsErase = true; - } - else - { - error = true; - } - } + error = true; } else { - if (validApSetting) + // NUPが必要か? + if (!NeedsNup()) { - // ネットワークアップデートを行う - needsUpdate = true; + if (s_NupOnlyMode) + { + s_RestoreState = NUP_ONLY_WAIT_SD_EJECT; + + // リストア状態チェックファイルをすべて削除 + DeleteAllCheckFiles(); + + break; + } + + // SDカードに書き込み完了ファイルがあるか? + if (!ExistsWriteFinishedFile()) + { + // IVSを読めるか? + if (CanReadIVS()) + { + // 本体初期化完了ファイルがあるか? + if (ExistsConsoleInitializedFile()) + { + // SDカードにシリアルナンバーがあるか? + if (!ExistsSerialNumberFile()) + { + COMMON_LOGGER("Can't Read Serial Number in SD Card!!\n"); + error = true; + s_RestoreState = SERIAL_IS_NOT_IN_SD; + } + else + { + ::std::string serial(reinterpret_cast (ReadSerialNumber())); + operationMessage.push_back(::std::string("Serial Number in SD : ") + serial); + } + + // SDカードに書き込みできるか? + if (nextStep && !nn::fs::IsSdmcWritable()) + { + error = true; + PlaySound(SOUND_ANNOTATION); + COMMON_LOGGER("Can't Write SD Card!!\n"); + } + + // SDカードにリージョンデータがあるか? + if (ExistsRegionData()) + { + // リージョンデータは一致しているか? + if (!EqualsRegionDataandRegion()) + { + COMMON_LOGGER("Current Region and Region in SD differ!!\n"); + error = true; + s_RestoreState = FAIL; + } + } + else + { + // 移行不能なのでFAIL + COMMON_LOGGER("Can't Read Region in SD Card!!\n"); + error = true; + s_RestoreState = FAIL; + } + + } + else + { + if (!ExistsIVSFile()) + { + // 移行不能なのでFAIL + COMMON_LOGGER("Can't Read IVS in SD Card!!\n"); + error = true; + s_RestoreState = FAIL; + } + else + { + COMMON_LOGGER("Initialize Console\n"); + + // SDカードのIVSと本体のIVSは異なるか? + if (EqualsIVSFileandIVS()) + { + // 同一本体に書き戻そうとしたファイルを作る + COMMON_LOGGER("Restore to the same console. Initialize.\n"); + CreateTryRestoreSameConsoleFile(); + } + else + { + // 本体初期化完了ファイルを作る + CreateConsoleInitializedFile(); + + } + + // ファイルシステムの初期化を行う + InitializeFileSystem(); + error = true; + s_RestoreState = REBOOTING; + } + } + } + else + { + error = true; + operationMessage.push_back(::std::string("Can't Read IVS!!")); + } + } + else + { + if (validApSetting) + { + // 削除処理を行う + needsErase = true; + } + else + { + error = true; + } + } } else { - error = true; + if (validApSetting) + { + // ネットワークアップデートを行う + needsUpdate = true; + } + else + { + error = true; + } } + } } else