mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
アカウント移行のためのStateを追加
IVSを正しく取得できるように git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@239 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
56a51449b4
commit
878819630c
@ -106,6 +106,8 @@ typedef enum RestoreState
|
||||
UPDATE_DONE, // アップデート完了
|
||||
NUP_ONLY_WAIT_SD_EJECT, // NUP_ONLYモードでSDカード抜き待ち
|
||||
NUP_ONLY_WAIT_NEXT, // NUP_ONLYモードでキー入力待ち
|
||||
TRANSFER_ACCOUNT, // アカウント転送を完了させる
|
||||
TRANSFER_ACCOUNT_DONE, // アカウント転送完了
|
||||
DOWNLOAD_IVS, // インフラからIVSを取得する
|
||||
DOWNLOAD_IVS_DONE, // インフラからIVSを取得完了
|
||||
CHECK_IVS, // IVSとSDカードのセーブデータディレクトリの一致を確認
|
||||
@ -148,6 +150,7 @@ void CheckApSetting(common::HardwareStateManager& manager, ::std::vector<std::st
|
||||
void CheckNupExecuted(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||
void CheckDownloadIvs(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||
void CheckAccountDeleted(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||
void CheckAccountTransfered(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||
void CheckWriteFinished(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||
void CheckReadIvs(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||
void CheckConsoleInitialized(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||
@ -284,6 +287,7 @@ void CheckDownloadIvs(common::HardwareStateManager& manager, ::std::vector<std::
|
||||
}
|
||||
else
|
||||
{
|
||||
COMMON_LOGGER("Download IVS\n");
|
||||
s_RestoreState = DOWNLOAD_IVS;
|
||||
}
|
||||
|
||||
@ -295,7 +299,7 @@ void CheckAccountDeleted(common::HardwareStateManager& manager, ::std::vector<st
|
||||
// アカウント削除確認ファイルがあるか?
|
||||
if (common::ExistsDeleteAccountChecked())
|
||||
{
|
||||
CheckDownloadIvs(manager, message, goNextStep);
|
||||
CheckAccountTransfered(manager, message, goNextStep);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -303,15 +307,31 @@ void CheckAccountDeleted(common::HardwareStateManager& manager, ::std::vector<st
|
||||
if(EqualsDeviceIdFileandDeviceId(manager).IsSuccess())
|
||||
{
|
||||
CreateDeleteAccountFinishedFile();
|
||||
CheckDownloadIvs(manager, message, goNextStep);
|
||||
CheckAccountTransfered(manager, message, goNextStep);
|
||||
}
|
||||
else
|
||||
{
|
||||
COMMON_LOGGER("Delete Account\n");
|
||||
s_RestoreState = DELETE_ACCOUNT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// アカウント移行済みかチェック
|
||||
void CheckAccountTransfered(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep)
|
||||
{
|
||||
// アカウント移行確認ファイルがあるか?
|
||||
if (common::ExistsTransferAccountChecked())
|
||||
{
|
||||
CheckDownloadIvs(manager, message, goNextStep);
|
||||
}
|
||||
else
|
||||
{
|
||||
COMMON_LOGGER("Transfer Account\n");
|
||||
s_RestoreState = TRANSFER_ACCOUNT;
|
||||
}
|
||||
}
|
||||
|
||||
// 書き込み完了かどうかチェック
|
||||
void CheckWriteFinished(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep)
|
||||
{
|
||||
@ -524,6 +544,13 @@ void ShopOperationSingleTemplate(
|
||||
{
|
||||
ShopOperationSuccess(op, logMessage, nextState);
|
||||
}
|
||||
else if(op == SHOP_OPERATION_CONNECT && nextState == TRANSFER_ACCOUNT_DONE &&
|
||||
GetShopOperationSingleResult() == nn::nim::ResultNeedGetIvs())
|
||||
|
||||
{
|
||||
NN_LOG("ResultNeedGetIvs\n");
|
||||
ShopOperationSuccess(op, logMessage, nextState);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (s_ShopOperationRetryCount[op]++ < RETRY_MAX)
|
||||
@ -942,6 +969,20 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
||||
}
|
||||
break;
|
||||
|
||||
case TRANSFER_ACCOUNT:
|
||||
{
|
||||
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_CONNECT, "Transfer Account",
|
||||
"Transfer Account Finished.\n", "Transfer Account Failed. Retrying...", TRANSFER_ACCOUNT_DONE);
|
||||
}
|
||||
break;
|
||||
|
||||
case TRANSFER_ACCOUNT_DONE:
|
||||
{
|
||||
CreateTransferAccountFinishedFile();
|
||||
s_RestoreState = STARTUP;
|
||||
}
|
||||
break;
|
||||
|
||||
case DELETE_ACCOUNT:
|
||||
{
|
||||
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_UNREGISTER, "Deleting Account",
|
||||
@ -1151,7 +1192,7 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
||||
|
||||
case SYNC_TICKET:
|
||||
{
|
||||
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_CONNECT_ONLY, "Shop Connect",
|
||||
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_CONNECT, "Shop Connect",
|
||||
"Shop Connect Finished.\n", "Shop Connect Failed. Retrying...", UPLOAD_IVS);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -916,32 +916,45 @@ bool IsImportFinished()
|
||||
|
||||
void CreateWriteFinishedFile()
|
||||
{
|
||||
CreateEmptyFile(common::WRITE_FINISHED_CHECK_PATHNAME);
|
||||
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_WRITE_FINISHED]);
|
||||
common::ClearFileCheck(common::EXISTS_WRITE_FINISHED);
|
||||
}
|
||||
|
||||
void CreateConsoleInitializedFile()
|
||||
{
|
||||
CreateEmptyFile(common::INITIALIZED_CHECK_PATHNAME);
|
||||
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_CONSOLE_INTIALIZED]);
|
||||
common::ClearFileCheck(common::EXISTS_CONSOLE_INTIALIZED);
|
||||
}
|
||||
|
||||
void CreateUpdateFinishedFile()
|
||||
{
|
||||
CreateEmptyFile(common::UPDATE_CHECK_PATHNAME);
|
||||
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_UPDATE_FINISHED]);
|
||||
common::ClearFileCheck(common::EXISTS_UPDATE_FINISHED);
|
||||
}
|
||||
|
||||
void CreateRtcSyncFinishedFile()
|
||||
{
|
||||
CreateEmptyFile(common::RTC_SYNC_CHECK_PATHNAME);
|
||||
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_RTC_SYNC_FINISHED]);
|
||||
common::ClearFileCheck(common::EXISTS_RTC_SYNC_FINISHED);
|
||||
}
|
||||
|
||||
void CreateDownloadIvsFinishedFile()
|
||||
{
|
||||
CreateEmptyFile(common::DOWNLOAD_IVS_CHECK_PATHNAME);
|
||||
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_DOWNLOAD_IVS]);
|
||||
common::ClearFileCheck(common::EXISTS_DOWNLOAD_IVS);
|
||||
}
|
||||
|
||||
void CreateDeleteAccountFinishedFile()
|
||||
{
|
||||
CreateEmptyFile(common::DELETE_ACCOUNT_CHECK_PATHNAME);
|
||||
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_DELETE_ACCOUNT]);
|
||||
common::ClearFileCheck(common::EXISTS_DELETE_ACCOUNT);
|
||||
|
||||
}
|
||||
|
||||
void CreateTransferAccountFinishedFile()
|
||||
{
|
||||
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_TRANSFER_ACCOUNT]);
|
||||
common::ClearFileCheck(common::EXISTS_TRANSFER_ACCOUNT);
|
||||
}
|
||||
|
||||
u32 GetImportProgress()
|
||||
|
||||
@ -42,6 +42,7 @@ void CreateConsoleInitializedFile();
|
||||
void CreateRtcSyncFinishedFile();
|
||||
void CreateDownloadIvsFinishedFile();
|
||||
void CreateDeleteAccountFinishedFile();
|
||||
void CreateTransferAccountFinishedFile();
|
||||
u32 GetImportProgress();
|
||||
|
||||
// NANDのごみを削除する
|
||||
@ -54,7 +55,8 @@ const wchar_t* const CHECK_FILENAME_TABLE[] =
|
||||
common::WRITE_FINISHED_CHECK_PATHNAME,
|
||||
common::RTC_SYNC_CHECK_PATHNAME,
|
||||
common::DOWNLOAD_IVS_CHECK_PATHNAME,
|
||||
common::DELETE_ACCOUNT_CHECK_PATHNAME
|
||||
common::DELETE_ACCOUNT_CHECK_PATHNAME,
|
||||
common::TRANSFER_ACCOUNT_CHECK_PATHNAME
|
||||
};
|
||||
|
||||
void DeleteAllCheckFiles();
|
||||
|
||||
@ -50,8 +50,9 @@ const size_t UNREGISTER_THREAD_STACK_SIZE = 0x1000;
|
||||
nn::os::Thread s_UnregisterThread;
|
||||
nn::os::StackBuffer<UNREGISTER_THREAD_STACK_SIZE> s_UnregisterThreadStack;
|
||||
|
||||
static const size_t EC_BUFFER_SIZE = 128 * 1024;
|
||||
static u8 s_EcBufffer[EC_BUFFER_SIZE];
|
||||
const size_t EC_BUFFER_SIZE = 128 * 1024;
|
||||
u8 s_EcBufffer[EC_BUFFER_SIZE];
|
||||
bool s_IsNimShopInitialized = false;
|
||||
|
||||
struct ShopThreadParam
|
||||
{
|
||||
@ -251,11 +252,11 @@ nn::Result FinalizeInternal()
|
||||
|
||||
namespace ConsoleRestore{
|
||||
|
||||
void ShopOperationConnect();
|
||||
void ShopOperationFinalize();
|
||||
nn::Result ShopOperationConnect();
|
||||
nn::Result ShopOperationFinalize();
|
||||
|
||||
|
||||
void ShopOperationConnect(ECAccountInfo** pAccountInfo)
|
||||
nn::Result ShopOperationConnect(ECAccountInfo** pAccountInfo)
|
||||
{
|
||||
nn::Result result = nn::ResultSuccess();
|
||||
|
||||
@ -264,22 +265,28 @@ void ShopOperationConnect(ECAccountInfo** pAccountInfo)
|
||||
-------------------------------------------------------------------- */
|
||||
NN_LOG("nim::Shop::Connect\n");
|
||||
result = nn::nim::Shop::Connect(pAccountInfo, s_EcBufffer, EC_BUFFER_SIZE);
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
NN_UTIL_RETURN_IF_FAILED(result);
|
||||
|
||||
PrintECAccountInfo(**pAccountInfo);
|
||||
NN_LOG("\n");
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void ShopOperationInitialize()
|
||||
nn::Result ShopOperationInitialize()
|
||||
{
|
||||
nn::Result result = nn::ResultSuccess();
|
||||
|
||||
/* -------------------------------------------------------------------
|
||||
Initialize
|
||||
-------------------------------------------------------------------- */
|
||||
NN_LOG("nim::InitializeForShop\n");
|
||||
result = nn::nim::InitializeForShop();
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
if (!s_IsNimShopInitialized)
|
||||
{
|
||||
NN_LOG("nim::InitializeForShop\n");
|
||||
result = nn::nim::InitializeForShop();
|
||||
NN_UTIL_RETURN_IF_FAILED(result);
|
||||
s_IsNimShopInitialized = true;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------
|
||||
SetParameter
|
||||
@ -287,25 +294,32 @@ void ShopOperationInitialize()
|
||||
NN_LOG("nim::Shop::SetApplication Id\n");
|
||||
|
||||
nn::nim::Shop::SetApplicationId();
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
NN_UTIL_RETURN_IF_FAILED(result);
|
||||
|
||||
NN_LOG("nim::Shop::SetTIN\n");
|
||||
result = nn::nim::Shop::SetTin(CONSOLE_RESTORE_TIN);
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
NN_UTIL_RETURN_IF_FAILED(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void ShopOperationConnect()
|
||||
nn::Result ShopOperationConnect()
|
||||
{
|
||||
ShopOperationInitialize();
|
||||
nn::Result result;
|
||||
result = ShopOperationInitialize();
|
||||
NN_UTIL_RETURN_IF_FAILED(result);
|
||||
|
||||
/* -------------------------------------------------------------------
|
||||
Connect
|
||||
-------------------------------------------------------------------- */
|
||||
ECAccountInfo* pAccountInfo;
|
||||
ShopOperationConnect(&pAccountInfo);
|
||||
result = ShopOperationConnect(&pAccountInfo);
|
||||
NN_UTIL_RETURN_IF_FAILED(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void ShopOperationFinalize()
|
||||
nn::Result ShopOperationFinalize()
|
||||
{
|
||||
nn::Result result = nn::ResultSuccess();
|
||||
|
||||
@ -314,11 +328,14 @@ void ShopOperationFinalize()
|
||||
-------------------------------------------------------------------- */
|
||||
NN_LOG("nim::FinalizeForShop\n");
|
||||
result = nn::nim::FinalizeForShop();
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
NN_UTIL_RETURN_IF_FAILED(result);
|
||||
s_IsNimShopInitialized = false;
|
||||
|
||||
NN_LOG("util::ac::Finalize\n");
|
||||
result = FinalizeInternal();
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
NN_UTIL_RETURN_IF_FAILED(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
namespace
|
||||
@ -329,34 +346,31 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
||||
{
|
||||
s_ShopResult = nn::ResultSuccess();
|
||||
|
||||
if(param.op == SHOP_OPERATION_CLOSE_WITHOUT_CONNECT)
|
||||
{
|
||||
ShopOperationFinalize();
|
||||
return;
|
||||
}
|
||||
|
||||
NN_LOG("util::ac::Initialize\n");
|
||||
InitializeInternal();
|
||||
|
||||
nn::Result result = nn::ResultSuccess();
|
||||
nn::Result result = InitializeInternal();
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
|
||||
switch(param.op)
|
||||
{
|
||||
case SHOP_OPERATION_CONNECT_WITHOUT_CLOSE:
|
||||
case SHOP_OPERATION_CONNECT:
|
||||
{
|
||||
ShopOperationConnect();
|
||||
return;
|
||||
}
|
||||
|
||||
case SHOP_OPERATION_CONNECT_ONLY:
|
||||
{
|
||||
ShopOperationConnect();
|
||||
result = ShopOperationConnect();
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
}
|
||||
break;
|
||||
|
||||
case SHOP_OPERATION_GET_IVS:
|
||||
{
|
||||
ShopOperationConnect();
|
||||
result = ShopOperationConnect();
|
||||
if(result.IsFailure())
|
||||
{
|
||||
// ResultNeedGetIvsは発生するのでエラーとしない
|
||||
if(result != nn::nim::ResultNeedGetIvs())
|
||||
{
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
}
|
||||
|
||||
}
|
||||
// IVSを取得する
|
||||
result = nn::nim::Shop::ImportIvsFromInfrastructure();
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
@ -365,9 +379,11 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
||||
|
||||
case SHOP_OPERATION_UNREGISTER:
|
||||
{
|
||||
ShopOperationInitialize();
|
||||
result = ShopOperationInitialize();
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
ECAccountInfo* pAccountInfo;
|
||||
ShopOperationConnect(&pAccountInfo);
|
||||
result = ShopOperationConnect(&pAccountInfo);
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
if (pAccountInfo->accountStatus && pAccountInfo->accountStatus[0] == 'R')
|
||||
{
|
||||
/* ---------------------------------------------------------------
|
||||
@ -386,6 +402,8 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
||||
|
||||
case SHOP_OPERATION_DOWNLOAD_TITLE:
|
||||
{
|
||||
result = ShopOperationConnect();
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
NN_LOG("Try Download %016llx\n", param.config.titleId);
|
||||
result = nn::nim::Shop::StartDownload(param.config);
|
||||
|
||||
@ -447,7 +465,8 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
||||
break;
|
||||
}
|
||||
|
||||
ShopOperationFinalize();
|
||||
result = ShopOperationFinalize();
|
||||
NIM_SHOP_RESULT_CHECK(result);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -26,11 +26,9 @@ namespace ConsoleRestore
|
||||
|
||||
typedef enum SHOP_OPERATION
|
||||
{
|
||||
SHOP_OPERATION_CONNECT_ONLY, // Shop::ConnectしてCloseするだけ
|
||||
SHOP_OPERATION_CONNECT, // Shop::ConnectしてCloseするだけ
|
||||
SHOP_OPERATION_GET_IVS, // Shop::ImportIvsFromInfrastructureを実行
|
||||
SHOP_OPERATION_UNREGISTER, // Shop::Unregisterを実行
|
||||
SHOP_OPERATION_CONNECT_WITHOUT_CLOSE, // Shop::ConnectしてCloseしない
|
||||
SHOP_OPERATION_CLOSE_WITHOUT_CONNECT, // Shop::ConnectせずいきなりCloseする
|
||||
SHOP_OPERATION_DOWNLOAD_TITLE, // Titleをダウンロードする
|
||||
SHOP_OPERATION_NUM_MAX
|
||||
|
||||
|
||||
@ -180,7 +180,6 @@ void TitleDownloader::Start()
|
||||
|
||||
for(u8 i = 0; i < m_TwlTiteNum; i++)
|
||||
{
|
||||
StartShopOperationSingle(SHOP_OPERATION_CONNECT_WITHOUT_CLOSE);
|
||||
WaitShopOperationAndFinalize();
|
||||
|
||||
nn::nim::TitleConfig config;
|
||||
|
||||
@ -65,6 +65,17 @@ bool ExistsFile(FileExistsCheck index)
|
||||
return s_FileExistsCheckeResult[index];
|
||||
}
|
||||
|
||||
void ClearFileCheck(FileExistsCheck index)
|
||||
{
|
||||
if(index > EXISTS_MAX)
|
||||
{
|
||||
NN_LOG("Invalid File index!!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
s_FileExistsChecked[index] = false;
|
||||
}
|
||||
|
||||
bool ExistsUpdateCheckedFile()
|
||||
{
|
||||
return ExistsFile(EXISTS_UPDATE_FINISHED);
|
||||
@ -120,6 +131,11 @@ bool ExistsDeleteAccountChecked()
|
||||
return ExistsFile(EXISTS_DELETE_ACCOUNT);
|
||||
}
|
||||
|
||||
bool ExistsTransferAccountChecked()
|
||||
{
|
||||
return ExistsFile(EXISTS_TRANSFER_ACCOUNT);
|
||||
}
|
||||
|
||||
bool ExistsDownloadIvsCheckedFile()
|
||||
{
|
||||
return ExistsFile(EXISTS_DOWNLOAD_IVS);
|
||||
|
||||
@ -34,6 +34,7 @@ typedef enum FILE_EXISTS_CHECK
|
||||
EXISTS_VERSION_DATA,
|
||||
EXISTS_REGION_DATA,
|
||||
EXISTS_DELETE_ACCOUNT,
|
||||
EXISTS_TRANSFER_ACCOUNT,
|
||||
EXISTS_DOWNLOAD_IVS,
|
||||
EXISTS_MAX
|
||||
} FileExistsCheck;
|
||||
@ -51,6 +52,7 @@ const wchar_t* const FILENAME_TABLE[EXISTS_MAX] =
|
||||
common::VERSION_DATA_PATHNAME,
|
||||
common::REGION_DATA_PATHNAME,
|
||||
common::DELETE_ACCOUNT_CHECK_PATHNAME,
|
||||
common::TRANSFER_ACCOUNT_CHECK_PATHNAME,
|
||||
common::DOWNLOAD_IVS_CHECK_PATHNAME
|
||||
};
|
||||
|
||||
@ -66,8 +68,11 @@ bool ExistsCountryLanguageFile();
|
||||
bool ExistsVersionData();
|
||||
bool ExistsRegionData();
|
||||
bool ExistsDeleteAccountChecked();
|
||||
bool ExistsTransferAccountChecked();
|
||||
bool ExistsDownloadIvsCheckedFile();
|
||||
|
||||
void ClearFileCheck(FileExistsCheck index);
|
||||
|
||||
void InitializeFileCheck();
|
||||
|
||||
}
|
||||
|
||||
@ -51,6 +51,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 DELETE_ACCOUNT_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/AccountDeletedChecked";
|
||||
const wchar_t* const TRANSFER_ACCOUNT_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/AccountTransferedChecked";
|
||||
const wchar_t* const DOWNLOAD_IVS_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/DownloadIvsFinished";
|
||||
const wchar_t* const INITIALIZED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/ConsoleInitialized";
|
||||
const wchar_t* const RTC_SYNC_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/RtcSyncFinished";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user