mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
Controllerを手直し
IVSのダウンロード、Unregister、Shop::Connectを行えるように git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@207 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
8dcb999097
commit
2551da56f7
@ -321,7 +321,6 @@ extern "C" void nnMain(void)
|
|||||||
|
|
||||||
|
|
||||||
bool flip = false;
|
bool flip = false;
|
||||||
bool continueRestore = false;
|
|
||||||
|
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
@ -383,7 +382,7 @@ extern "C" void nnMain(void)
|
|||||||
// 進捗確認メッセージを兼ねる?
|
// 進捗確認メッセージを兼ねる?
|
||||||
::std::vector<std::string> operationMessage;
|
::std::vector<std::string> operationMessage;
|
||||||
|
|
||||||
ControlState(operationMessage, nextStep, continueRestore);
|
ControlState(operationMessage, nextStep);
|
||||||
|
|
||||||
nn::util::FloatColor titleColor;
|
nn::util::FloatColor titleColor;
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -31,7 +31,7 @@ typedef enum RestoreMode
|
|||||||
|
|
||||||
const u32 RETRY_MAX = 3;
|
const u32 RETRY_MAX = 3;
|
||||||
|
|
||||||
void ControlState(::std::vector<std::string>& operationMessage, bool& nextStep, bool& continueRestore);
|
void ControlState(::std::vector<std::string>& operationMessage, bool& nextStep);
|
||||||
bool InProgress();
|
bool InProgress();
|
||||||
bool IsRestoreSucceeded();
|
bool IsRestoreSucceeded();
|
||||||
bool IsRestoreFailed();
|
bool IsRestoreFailed();
|
||||||
|
|||||||
@ -264,24 +264,34 @@ nn::Result EqualsDeviceIdFileandDeviceId()
|
|||||||
bit32 sdDeviceId;
|
bit32 sdDeviceId;
|
||||||
common::SdReaderWriter sdReader;
|
common::SdReaderWriter sdReader;
|
||||||
size_t totalSize;
|
size_t totalSize;
|
||||||
result = sdReader.ReadBufWithCmac(common::DEVICE_ID_PATHNAME, &sdDeviceId, sizeof(sdDeviceId), &totalSize);
|
size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize();
|
||||||
s_CheckedEqualsDeviceIdFileandDeviceId = true;
|
void* buf = common::HeapManager::GetHeap()->Allocate(bufSize);
|
||||||
if(result.IsSuccess())
|
if (buf != NULL)
|
||||||
{
|
{
|
||||||
if(GetDeviceId() == sdDeviceId)
|
result = sdReader.ReadBufWithCmac(common::DEVICE_ID_PATHNAME, buf, bufSize, &totalSize);
|
||||||
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
result = nn::ResultSuccess();
|
s_CheckedEqualsDeviceIdFileandDeviceId = true;
|
||||||
|
std::memcpy(&sdDeviceId, buf, sizeof(sdDeviceId));
|
||||||
|
|
||||||
|
if (GetDeviceId() == sdDeviceId)
|
||||||
|
{
|
||||||
|
result = nn::ResultSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
result = nn::Result(nn::Result::LEVEL_STATUS, nn::Result::SUMMARY_INVALID_RESULT_VALUE,
|
||||||
|
nn::Result::MODULE_COMMON, nn::Result::DESCRIPTION_INVALID_RESULT_VALUE);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
common::HeapManager::GetHeap()->Free(buf);
|
||||||
result = nn::Result(nn::Result::LEVEL_STATUS, nn::Result::SUMMARY_INVALID_RESULT_VALUE, nn::Result::MODULE_COMMON,
|
|
||||||
nn::Result::DESCRIPTION_INVALID_RESULT_VALUE);
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return result;
|
result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON,
|
||||||
|
nn::Result::DESCRIPTION_OUT_OF_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
nn::Result EqualsRegionDataandRegion()
|
nn::Result EqualsRegionDataandRegion()
|
||||||
@ -879,6 +889,16 @@ void CreateRtcSyncFinishedFile()
|
|||||||
CreateEmptyFile(common::RTC_SYNC_CHECK_PATHNAME);
|
CreateEmptyFile(common::RTC_SYNC_CHECK_PATHNAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CreateDownloadIvsFinishedFile()
|
||||||
|
{
|
||||||
|
CreateEmptyFile(common::DOWNLOAD_IVS_CHECK_PATHNAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateDeleteAccountFinishedFile()
|
||||||
|
{
|
||||||
|
CreateEmptyFile(common::DELETE_ACCOUNT_CHECK_PATHNAME);
|
||||||
|
}
|
||||||
|
|
||||||
u32 GetImportProgress()
|
u32 GetImportProgress()
|
||||||
{
|
{
|
||||||
return common::GetProgress();
|
return common::GetProgress();
|
||||||
|
|||||||
@ -38,6 +38,8 @@ void CreateWriteFinishedFile();
|
|||||||
void CreateUpdateFinishedFile();
|
void CreateUpdateFinishedFile();
|
||||||
void CreateConsoleInitializedFile();
|
void CreateConsoleInitializedFile();
|
||||||
void CreateRtcSyncFinishedFile();
|
void CreateRtcSyncFinishedFile();
|
||||||
|
void CreateDownloadIvsFinishedFile();
|
||||||
|
void CreateDeleteAccountFinishedFile();
|
||||||
u32 GetImportProgress();
|
u32 GetImportProgress();
|
||||||
|
|
||||||
// NANDのごみを削除する
|
// NANDのごみを削除する
|
||||||
|
|||||||
@ -31,6 +31,8 @@ SOURCES[] =
|
|||||||
Importer.cpp
|
Importer.cpp
|
||||||
Updater.cpp
|
Updater.cpp
|
||||||
Ntpclient.cpp
|
Ntpclient.cpp
|
||||||
|
TitleDownloader.cpp
|
||||||
|
Shop.cpp
|
||||||
../common/HardwareInfo.cpp
|
../common/HardwareInfo.cpp
|
||||||
../common/DrawSystemState.cpp
|
../common/DrawSystemState.cpp
|
||||||
../common/FileTransfer.cpp
|
../common/FileTransfer.cpp
|
||||||
|
|||||||
321
trunk/ConsoleDataMigration/ConsoleRestore/Shop.cpp
Normal file
321
trunk/ConsoleDataMigration/ConsoleRestore/Shop.cpp
Normal file
@ -0,0 +1,321 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: Shop.cpp
|
||||||
|
|
||||||
|
Copyright 2009 Nintendo. All rights reserved.
|
||||||
|
|
||||||
|
These coded instructions, statements, and computer programs contain
|
||||||
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <nn/os.h>
|
||||||
|
#include <nn/Handle.h>
|
||||||
|
#include <nn/dbg.h>
|
||||||
|
#include <nn/nim.h>
|
||||||
|
#include <nn/ac/private/ac.h>
|
||||||
|
#include <nn/ac/CTR/private/ac_InternalApi.h>
|
||||||
|
#include <nn/nim/CTR/private/nim_ShopPrivateApi.h>
|
||||||
|
|
||||||
|
#include "Shop.h"
|
||||||
|
#include "CommonLogger.h"
|
||||||
|
|
||||||
|
using namespace ES_NAMESPACE;
|
||||||
|
using namespace EC_NAMESPACE;
|
||||||
|
|
||||||
|
#define NIM_UNREGISTER_RESULT_CHECK(result) \
|
||||||
|
do { \
|
||||||
|
if (result.IsFailure()) \
|
||||||
|
{ \
|
||||||
|
ECCustomerSupportCode csc; \
|
||||||
|
NN_UTIL_PANIC_IF_FAILED( \
|
||||||
|
nn::nim::Shop::GetCustomerSupportCode(&csc)); \
|
||||||
|
COMMON_LOGGER("CSCode: %d\n", csc); \
|
||||||
|
nn::dbg::PrintResult(result); \
|
||||||
|
s_Result = result; \
|
||||||
|
goto LABEL_FINALIZE; \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
nn::Result s_Result = nn::ResultSuccess();
|
||||||
|
|
||||||
|
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 ecBufferSize = 128 * 1024;
|
||||||
|
static u8 ecBufffer[ecBufferSize];
|
||||||
|
|
||||||
|
#ifndef NN_SWITCH_DISABLE_DEBUG_PRINT
|
||||||
|
// 空文字列と NULL ポインタをそれぞれ <empty> と NULL として返す
|
||||||
|
const char* Cstr(const char* p)
|
||||||
|
{
|
||||||
|
return p ? (p[0] ? p : "<empty>") : "NULL";
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECTicketVersions を出力
|
||||||
|
void PrintECTicketVersions(const ECTicketVersions& ticketVersions)
|
||||||
|
{
|
||||||
|
if (ticketVersions.nTicketVersions == 0)
|
||||||
|
{
|
||||||
|
NN_LOG("No TicketVersions\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
NN_LOG("----- ECTicketVersions -----\n");
|
||||||
|
for (u32 i = 0; i < ticketVersions.nTicketVersions; i++)
|
||||||
|
{
|
||||||
|
ECTicketVersion version = ticketVersions.ticketVersions[i];
|
||||||
|
NN_LOG("%03d: 0x%016llx v%d\n", i, version.ticketId, version.version);
|
||||||
|
}
|
||||||
|
NN_LOG("---------------------------\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECAccountInfo の情報を出力
|
||||||
|
void PrintECAccountInfo(const ECAccountInfo& accountInfo)
|
||||||
|
{
|
||||||
|
NN_LOG("========== ECAccountInfo ==========\n");
|
||||||
|
|
||||||
|
NN_LOG("accountId\n %s\n", Cstr(accountInfo.accountId));
|
||||||
|
|
||||||
|
NN_LOG("accountStatus\n %s\n", Cstr(accountInfo.accountStatus));
|
||||||
|
|
||||||
|
if (accountInfo.accountBalance == NULL)
|
||||||
|
{
|
||||||
|
NN_LOG("accountBalance\n NULL\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NN_LOG("accountBalance->amount\n %s\n",
|
||||||
|
Cstr(accountInfo.accountBalance->amount));
|
||||||
|
NN_LOG("accountBalance->currency\n %s\n",
|
||||||
|
Cstr(accountInfo.accountBalance->currency));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (accountInfo.agreedEULAVersion == NULL)
|
||||||
|
{
|
||||||
|
NN_LOG("agreedEULAVersion\n NULL\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NN_LOG("agreedEULAVersion\n %lld\n",
|
||||||
|
*accountInfo.agreedEULAVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (accountInfo.latestEULAVersion == NULL)
|
||||||
|
{
|
||||||
|
NN_LOG("latestEULAVersion\n NULL\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NN_LOG("latestEULAVersion\n %lld\n",
|
||||||
|
*accountInfo.latestEULAVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
NN_LOG("country\n %s\n", Cstr(accountInfo.country));
|
||||||
|
|
||||||
|
NN_LOG("extAccountId\n %s\n", Cstr(accountInfo.extAccountId));
|
||||||
|
|
||||||
|
NN_LOG("deviceToken\n %s\n", Cstr(accountInfo.deviceToken));
|
||||||
|
|
||||||
|
NN_LOG("weakToken\n %s\n", Cstr(accountInfo.weakToken));
|
||||||
|
|
||||||
|
NN_LOG("isStandbyMode\n %d\n", accountInfo.isStandbyMode);
|
||||||
|
|
||||||
|
if (accountInfo.owned == NULL)
|
||||||
|
{
|
||||||
|
NN_LOG("owned\n NULL\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PrintECTicketVersions(*(accountInfo.owned));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif //NN_SWITCH_DISABLE_DEBUG_PRINT
|
||||||
|
|
||||||
|
nn::Result PrintNetworkSetting()
|
||||||
|
{
|
||||||
|
nn::ac::NetworkSetting networkSetting;
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(nn::ac::LoadNetworkSetting(0, networkSetting));
|
||||||
|
COMMON_LOGGER("SSID: %s\n", networkSetting.wireless.essidSecurity.ssid);
|
||||||
|
COMMON_LOGGER("DNS : %d.%d.%d.%d\n",
|
||||||
|
networkSetting.ip.dns[0][0], networkSetting.ip.dns[0][1],
|
||||||
|
networkSetting.ip.dns[0][2], networkSetting.ip.dns[0][3]);
|
||||||
|
return nn::ResultSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
nn::Result ConnectNetwork()
|
||||||
|
{
|
||||||
|
nn::Result result = nn::ResultSuccess();
|
||||||
|
nn::ac::Config config;
|
||||||
|
|
||||||
|
result = nn::ac::CreateDefaultConfig(&config);
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
|
result = nn::ac::ConnectWithoutEula(config);
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
|
NN_LOG("Success nn::ac::ConnectWithoutEula\n");
|
||||||
|
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(PrintNetworkSetting());
|
||||||
|
|
||||||
|
return nn::ResultSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
nn::Result InitializeInternal()
|
||||||
|
{
|
||||||
|
nn::Result result = nn::ResultSuccess();
|
||||||
|
|
||||||
|
result = nn::ac::InitializeInternal();
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
|
result = ConnectNetwork();
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
|
return nn::ResultSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
nn::Result FinalizeInternal()
|
||||||
|
{
|
||||||
|
nn::Result result = nn::ResultSuccess();
|
||||||
|
|
||||||
|
nn::ac::CloseAll();
|
||||||
|
|
||||||
|
result = nn::ac::FinalizeInternal();
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
|
return nn::ResultSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
namespace ConsoleRestore{
|
||||||
|
|
||||||
|
// メイン関数
|
||||||
|
void ShopOperationSingleThreadFunc(ShopOperation op)
|
||||||
|
{
|
||||||
|
nn::Result result = nn::ResultSuccess();
|
||||||
|
|
||||||
|
NN_LOG("util::ac::Initialize\n");
|
||||||
|
InitializeInternal();
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------
|
||||||
|
Initialize
|
||||||
|
-------------------------------------------------------------------- */
|
||||||
|
NN_LOG("nim::InitializeForShop\n");
|
||||||
|
result = nn::nim::InitializeForShop();
|
||||||
|
NIM_UNREGISTER_RESULT_CHECK(result);
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------
|
||||||
|
SetParameter
|
||||||
|
-------------------------------------------------------------------- */
|
||||||
|
NN_LOG("nim::Shop::SetTIN\n");
|
||||||
|
result = nn::nim::Shop::SetTin(NIM_TIN);
|
||||||
|
NIM_UNREGISTER_RESULT_CHECK(result);
|
||||||
|
|
||||||
|
switch(op)
|
||||||
|
{
|
||||||
|
case SHOP_OPERATION_CONNECT_ONLY:
|
||||||
|
{
|
||||||
|
// Connectするのみ
|
||||||
|
/* -------------------------------------------------------------------
|
||||||
|
Connect
|
||||||
|
-------------------------------------------------------------------- */
|
||||||
|
NN_LOG("nim::Shop::Connect\n");
|
||||||
|
ECAccountInfo* pAccountInfo;
|
||||||
|
result = nn::nim::Shop::Connect(&pAccountInfo, ecBufffer, ecBufferSize);
|
||||||
|
NIM_UNREGISTER_RESULT_CHECK(result);
|
||||||
|
|
||||||
|
#ifndef NN_SWITCH_DISABLE_DEBUG_PRINT
|
||||||
|
PrintECAccountInfo(*pAccountInfo);
|
||||||
|
NN_LOG("\n");
|
||||||
|
#endif //NN_SWITCH_DISABLE_DEBUG_PRINT
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SHOP_OPERATION_GET_IVS:
|
||||||
|
{
|
||||||
|
// IVSを取得する
|
||||||
|
result = nn::nim::Shop::ImportIvsFromInfrastructure();
|
||||||
|
NIM_UNREGISTER_RESULT_CHECK(result);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SHOP_OPERATION_UNREGISTER:
|
||||||
|
{
|
||||||
|
/* -------------------------------------------------------------------
|
||||||
|
Connect
|
||||||
|
-------------------------------------------------------------------- */
|
||||||
|
NN_LOG("nim::Shop::Connect\n");
|
||||||
|
ECAccountInfo* pAccountInfo;
|
||||||
|
result = nn::nim::Shop::Connect(&pAccountInfo, ecBufffer, ecBufferSize);
|
||||||
|
NIM_UNREGISTER_RESULT_CHECK(result);
|
||||||
|
|
||||||
|
#ifndef NN_SWITCH_DISABLE_DEBUG_PRINT
|
||||||
|
PrintECAccountInfo(*pAccountInfo);
|
||||||
|
NN_LOG("\n");
|
||||||
|
#endif //NN_SWITCH_DISABLE_DEBUG_PRINT
|
||||||
|
if (pAccountInfo->accountStatus && pAccountInfo->accountStatus[0] == 'R')
|
||||||
|
{
|
||||||
|
/* ---------------------------------------------------------------
|
||||||
|
Unregister
|
||||||
|
---------------------------------------------------------------- */
|
||||||
|
NN_LOG("nim::Shop::Unregister\n");
|
||||||
|
result = nn::nim::Shop::Unregister();
|
||||||
|
NIM_UNREGISTER_RESULT_CHECK(result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NN_LOG("Not registered.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
LABEL_FINALIZE:
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------
|
||||||
|
Finalize
|
||||||
|
-------------------------------------------------------------------- */
|
||||||
|
NN_LOG("nim::FinalizeForShop\n");
|
||||||
|
result = nn::nim::FinalizeForShop();
|
||||||
|
NIM_UNREGISTER_RESULT_CHECK(result);
|
||||||
|
|
||||||
|
NN_LOG("util::ac::Initialize\n");
|
||||||
|
FinalizeInternal();
|
||||||
|
}
|
||||||
|
|
||||||
|
void StartShopOperationSingle(ShopOperation op)
|
||||||
|
{
|
||||||
|
NN_LOG("Start ShopOperationSingle");
|
||||||
|
s_Result = nn::ResultSuccess();
|
||||||
|
s_UnregisterThread.Start(ShopOperationSingleThreadFunc, op, s_UnregisterThreadStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FinishShopOperationSingle()
|
||||||
|
{
|
||||||
|
NN_LOG("Finalize ShopOperationSingle\n");
|
||||||
|
s_UnregisterThread.Join();
|
||||||
|
s_UnregisterThread.Finalize();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsShopOperationSingleFinished()
|
||||||
|
{
|
||||||
|
return s_UnregisterThread.IsValid() && !s_UnregisterThread.IsAlive();
|
||||||
|
}
|
||||||
|
|
||||||
|
nn::Result GetShopOperationSingleResult()
|
||||||
|
{
|
||||||
|
return s_Result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
40
trunk/ConsoleDataMigration/ConsoleRestore/Shop.h
Normal file
40
trunk/ConsoleDataMigration/ConsoleRestore/Shop.h
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: Shop.h
|
||||||
|
|
||||||
|
Copyright 2009 Nintendo. All rights reserved.
|
||||||
|
|
||||||
|
These coded instructions, statements, and computer programs contain
|
||||||
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef SHOP_H_
|
||||||
|
#define SHOP_H_
|
||||||
|
|
||||||
|
#include <nn.h>
|
||||||
|
|
||||||
|
#define NIM_TIN "56789"
|
||||||
|
|
||||||
|
namespace ConsoleRestore
|
||||||
|
{
|
||||||
|
|
||||||
|
typedef enum SHOP_OPERATION
|
||||||
|
{
|
||||||
|
SHOP_OPERATION_CONNECT_ONLY,
|
||||||
|
SHOP_OPERATION_GET_IVS,
|
||||||
|
SHOP_OPERATION_UNREGISTER
|
||||||
|
} ShopOperation;
|
||||||
|
|
||||||
|
void StartShopOperationSingle(ShopOperation op);
|
||||||
|
void FinishShopOperationSingle();
|
||||||
|
bool IsShopOperationSingleFinished();
|
||||||
|
nn::Result GetShopOperationSingleResult();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* SHOP_H_ */
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: TitleDownloader.cpp
|
||||||
|
|
||||||
|
Copyright 2009 Nintendo. All rights reserved.
|
||||||
|
|
||||||
|
These coded instructions, statements, and computer programs contain
|
||||||
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "TitleDownloader.h"
|
||||||
|
#include <nn/am.h>
|
||||||
|
|
||||||
|
namespace ConsoleRestore
|
||||||
|
{
|
||||||
|
|
||||||
|
TitleDownloader::TitleDownloader() : m_Executing(false)
|
||||||
|
{
|
||||||
|
// TODO 自動生成されたコンストラクター・スタブ
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
TitleDownloader::~TitleDownloader()
|
||||||
|
{
|
||||||
|
// TODO Auto-generated destructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TitleDownloader::Start(nn::ProgramID* programIdList, size_t listNum)
|
||||||
|
{
|
||||||
|
if(m_Executing)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_Executing = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool TitleDownloader::Succeeded()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TitleDownloader::Finished()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
42
trunk/ConsoleDataMigration/ConsoleRestore/TitleDownloader.h
Normal file
42
trunk/ConsoleDataMigration/ConsoleRestore/TitleDownloader.h
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: TitleDownloader.h
|
||||||
|
|
||||||
|
Copyright 2009 Nintendo. All rights reserved.
|
||||||
|
|
||||||
|
These coded instructions, statements, and computer programs contain
|
||||||
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef TITLEDOWNLOADER_H_
|
||||||
|
#define TITLEDOWNLOADER_H_
|
||||||
|
|
||||||
|
#include <nn.h>
|
||||||
|
|
||||||
|
namespace ConsoleRestore
|
||||||
|
{
|
||||||
|
|
||||||
|
class TitleDownloader
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TitleDownloader();
|
||||||
|
virtual ~TitleDownloader();
|
||||||
|
|
||||||
|
void Start(nn::ProgramID* programIdList, size_t listNum);
|
||||||
|
|
||||||
|
static bool Succeeded();
|
||||||
|
static bool Finished();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_Executing;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* TITLEDOWNLOADER_H_ */
|
||||||
@ -82,7 +82,6 @@ bool ExistsIVSFile()
|
|||||||
|
|
||||||
bool ExistsConsoleInitializedFile()
|
bool ExistsConsoleInitializedFile()
|
||||||
{
|
{
|
||||||
// どちらかのファイルがあれば初期化済み
|
|
||||||
return ExistsFile(EXISTS_CONSOLE_INTIALIZED);
|
return ExistsFile(EXISTS_CONSOLE_INTIALIZED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,6 +115,16 @@ bool ExistsRegionData()
|
|||||||
return ExistsFile(EXISTS_REGION_DATA);
|
return ExistsFile(EXISTS_REGION_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ExistsDeleteAccountChecked()
|
||||||
|
{
|
||||||
|
return ExistsFile(EXISTS_DELETE_ACCOUNT);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExistsDownloadIvsCheckedFile()
|
||||||
|
{
|
||||||
|
return ExistsFile(EXISTS_DOWNLOAD_IVS);
|
||||||
|
}
|
||||||
|
|
||||||
void InitializeFileCheck()
|
void InitializeFileCheck()
|
||||||
{
|
{
|
||||||
for(u32 i = 0; i < EXISTS_MAX; i++)
|
for(u32 i = 0; i < EXISTS_MAX; i++)
|
||||||
|
|||||||
@ -33,6 +33,8 @@ typedef enum FILE_EXISTS_CHECK
|
|||||||
EXISTS_COUNTRY_LANGUAGE,
|
EXISTS_COUNTRY_LANGUAGE,
|
||||||
EXISTS_VERSION_DATA,
|
EXISTS_VERSION_DATA,
|
||||||
EXISTS_REGION_DATA,
|
EXISTS_REGION_DATA,
|
||||||
|
EXISTS_DELETE_ACCOUNT,
|
||||||
|
EXISTS_DOWNLOAD_IVS,
|
||||||
EXISTS_MAX
|
EXISTS_MAX
|
||||||
} FileExistsCheck;
|
} FileExistsCheck;
|
||||||
|
|
||||||
@ -47,7 +49,9 @@ const wchar_t* const FILENAME_TABLE[EXISTS_MAX] =
|
|||||||
common::RTC_SYNC_CHECK_PATHNAME,
|
common::RTC_SYNC_CHECK_PATHNAME,
|
||||||
common::COUNTRY_SETTING_PATHNAME,
|
common::COUNTRY_SETTING_PATHNAME,
|
||||||
common::VERSION_DATA_PATHNAME,
|
common::VERSION_DATA_PATHNAME,
|
||||||
common::REGION_DATA_PATHNAME
|
common::REGION_DATA_PATHNAME,
|
||||||
|
common::DELETE_ACCOUNT_CHECK_PATHNAME,
|
||||||
|
common::DOWNLOAD_IVS_CHECK_PATHNAME
|
||||||
};
|
};
|
||||||
|
|
||||||
bool CheckFileExists(const wchar_t* path);
|
bool CheckFileExists(const wchar_t* path);
|
||||||
@ -61,6 +65,8 @@ bool ExistsRtcSyncFinishedFile();
|
|||||||
bool ExistsCountryLanguageFile();
|
bool ExistsCountryLanguageFile();
|
||||||
bool ExistsVersionData();
|
bool ExistsVersionData();
|
||||||
bool ExistsRegionData();
|
bool ExistsRegionData();
|
||||||
|
bool ExistsDeleteAccountChecked();
|
||||||
|
bool ExistsDownloadIvsCheckedFile();
|
||||||
|
|
||||||
void InitializeFileCheck();
|
void InitializeFileCheck();
|
||||||
|
|
||||||
|
|||||||
@ -50,6 +50,8 @@ const wchar_t* const NAND_TWL_DATA_ROOT_PATHNAME_WITHOUT_SLASH = L"twln:/title";
|
|||||||
const wchar_t* const SDMC_ROOT_DIRECTORY_PATH = L"sdmc:/";
|
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 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 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 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 INITIALIZED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/ConsoleInitialized";
|
||||||
const wchar_t* const RTC_SYNC_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/RtcSyncFinished";
|
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_PATHNAME = L"sdmc:/CTR_Console_Repair/playhistory.bin";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user