From 1d7e693f9ff2c80934b24964cfb32b9af03c1a28 Mon Sep 17 00:00:00 2001 From: N2614 Date: Thu, 19 Mar 2015 06:16:50 +0000 Subject: [PATCH] =?UTF-8?q?NNAS=E3=81=A8ECI=E3=81=8B=E3=82=89=E5=9B=BD?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E5=8F=96=E5=BE=97=E3=81=A7?= =?UTF-8?q?=E3=81=8D=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@843 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../sources/ConsoleRestore/ActCompleter.cpp | 13 +++++++++---- .../sources/ConsoleRestore/ActCompleter.h | 2 ++ .../sources/ConsoleRestore/Shop.cpp | 11 +++++++++++ .../sources/ConsoleRestore/Shop.h | 5 +++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp index 1a06593..ef68db7 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp @@ -41,6 +41,7 @@ nn::os::Event ActCompleter::s_EndEvent; u32 ActCompleter::s_ApprovalId; ActCompleter::CompleteMode ActCompleter::s_Mode; ActCompleter::SalvageCheck ActCompleter::s_SalvageCheck; +nn::cfg::CTR::CfgCountryCode ActCompleter::s_CfgCountryCode; ActCompleter::ActCompleter() @@ -70,6 +71,11 @@ void ActCompleter::Start(CompleteMode mode, SalvageCheck check) s_Thread.Start(Exec, s_ThreadStack); } +nn::cfg::CTR::CfgCountryCode ActCompleter::GetCountryCodeFromNna() +{ + return s_CfgCountryCode; +} + bool ActCompleter::IsFinished() { return s_Thread.IsValid() && !s_Thread.IsAlive(); @@ -149,10 +155,9 @@ nn::Result ActCompleter::ExecImpl() // COPPA判定とPIN判定の準備 nn::cfg::CfgRegionCode region = nn::cfg::GetRegion(); u8 age = nn::act::GetAgeAtSalvage(); - nn::cfg::CfgCountryCode country; NN_UTIL_RETURN_IF_FAILED_2( - nn::act::GetCountryCodeAtSalvage(reinterpret_cast(&country)), + nn::act::GetCountryCodeAtSalvage(reinterpret_cast(&s_CfgCountryCode)), nn::act::FinalizeAdmin(), common::FinalizeNetwork()); @@ -161,7 +166,7 @@ nn::Result ActCompleter::ExecImpl() if (region == nn::cfg::CFG_REGION_AMERICA) { - if (ageChecker.IsCoppaRequired(age, region, country)) + if (ageChecker.IsCoppaRequired(age, region, s_CfgCountryCode)) { // COPPA対象の年齢なら復元する s_ApprovalId = nn::act::GetSalvagedApprovalId(); @@ -173,7 +178,7 @@ nn::Result ActCompleter::ExecImpl() } // PIN必須ならフラグを立てる - if (ageChecker.IsPinRestrictionRequired(age, region, country)) + if (ageChecker.IsPinRestrictionRequired(age, region, s_CfgCountryCode)) { NN_UTIL_RETURN_IF_FAILED_2( nn::cfg::CTR::system::SetForceParentalControlFlag(true), diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.h b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.h index ef07c59..93b2852 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.h +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.h @@ -40,6 +40,7 @@ public: static nn::Result GetResult(); static void Start(CompleteMode mode, SalvageCheck check); static bool IsFinished(); + static nn::cfg::CTR::CfgCountryCode GetCountryCodeFromNna(); static void Finish(); private: @@ -59,6 +60,7 @@ private: static u32 s_ApprovalId; static CompleteMode s_Mode; static SalvageCheck s_SalvageCheck; + static nn::cfg::CfgCountryCode s_CfgCountryCode; }; } /* namespace ConsoleRestore */ diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Shop.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Shop.cpp index 6fa251e..5b60b1b 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Shop.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Shop.cpp @@ -60,6 +60,7 @@ nn::os::StackBuffer s_ShopOperationThreadSt const size_t EC_BUFFER_SIZE = 128 * 1024; u8 s_EcBufffer[EC_BUFFER_SIZE]; bool s_IsNimShopInitialized = false; +nn::cfg::CTR::CfgCountryCode s_CfgCountryCode = nn::cfg::CTR::CFG_COUNTRY_UNDEFINED; struct ShopThreadParam { @@ -245,6 +246,12 @@ nn::Result ShopOperationConnect(ECAccountInfo** pAccountInfo) PrintECAccountInfo(**pAccountInfo); COMMON_LOGGER_DETAIL("\n"); + // 国コードを保持 + if((*pAccountInfo)->country) + { + COMMON_LOGGER_RETURN_RESULT_IF_FAILED( + nn::cfg::ConvertIso3166a2ToCountryCode(&s_CfgCountryCode, (*pAccountInfo)->country)); + } return result; } @@ -500,4 +507,8 @@ nn::Result GetShopOperationSingleResult() return s_ShopResult; } +nn::cfg::CTR::CfgCountryCode GetCountryCodeFromEci() +{ + return s_CfgCountryCode; +} } diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Shop.h b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Shop.h index b928134..256b7b9 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Shop.h +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Shop.h @@ -63,6 +63,11 @@ bool IsShopOperationSingleFinished(); // ショップ操作のResultを取得する nn::Result GetShopOperationSingleResult(); +// ECIから国コードを取得する +// 元々ユーザのアカウントが無く修理工程のNUPによりアカウントが生成された場合、 +// ImportCountryLanguageData によりリージョンに応じた適当な国が設定されていることに注意 +nn::cfg::CTR::CfgCountryCode GetCountryCodeFromEci(); + } #endif /* SHOP_H_ */