mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
移行元本体の国コード、言語コードを反映するように
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@5 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
b8ffcb4006
commit
6c279d66be
@ -20,6 +20,7 @@
|
|||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <nn/fs/CTR/fs_ArchiveTypesForSystem.h>
|
#include <nn/fs/CTR/fs_ArchiveTypesForSystem.h>
|
||||||
#include <nn/fs/CTR/MPCore/fs_FileSystemBasePrivate.h>
|
#include <nn/fs/CTR/MPCore/fs_FileSystemBasePrivate.h>
|
||||||
|
#include <nn/cfg/CTR/cfg_Api.h>
|
||||||
#include <nn/cfg/CTR/cfg_ApiNor.h> // cfg:norの初期化に必要
|
#include <nn/cfg/CTR/cfg_ApiNor.h> // cfg:norの初期化に必要
|
||||||
#include <nn/cfg/CTR/cfg_NtrSettings.h>
|
#include <nn/cfg/CTR/cfg_NtrSettings.h>
|
||||||
#include <nn/ps/CTR/ps_API.h>
|
#include <nn/ps/CTR/ps_API.h>
|
||||||
@ -45,6 +46,7 @@ namespace
|
|||||||
|
|
||||||
common::SdReaderWriter s_SdWriter;
|
common::SdReaderWriter s_SdWriter;
|
||||||
common::NtrNorData s_NtrNorData;
|
common::NtrNorData s_NtrNorData;
|
||||||
|
common::CfgCountryLanguage s_CountryLanguage;
|
||||||
|
|
||||||
::std::string s_SysSaveRoot;
|
::std::string s_SysSaveRoot;
|
||||||
|
|
||||||
@ -151,6 +153,23 @@ void DeleteTrash()
|
|||||||
common::SdMountManager::Unmount();
|
common::SdMountManager::Unmount();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WriteCountryLanguageData()
|
||||||
|
{
|
||||||
|
COMMON_LOGGER("Export Country and Language Data.\n");
|
||||||
|
|
||||||
|
nn::Result result;
|
||||||
|
|
||||||
|
nn::cfg::nor::CTR::Initialize();
|
||||||
|
|
||||||
|
// 国設定
|
||||||
|
s_CountryLanguage.country = nn::cfg::CTR::GetCountry();
|
||||||
|
|
||||||
|
// 言語設定
|
||||||
|
s_CountryLanguage.language = nn::cfg::CTR::GetLanguage();
|
||||||
|
|
||||||
|
s_SdWriter.WriteBuf(common::COUNTRY_SETTING_PATHNAME, &s_CountryLanguage, sizeof(s_CountryLanguage));
|
||||||
|
}
|
||||||
|
|
||||||
void WriteNorData()
|
void WriteNorData()
|
||||||
{
|
{
|
||||||
COMMON_LOGGER("Export NOR Data.\n");
|
COMMON_LOGGER("Export NOR Data.\n");
|
||||||
@ -358,6 +377,9 @@ void ExportData()
|
|||||||
// 不要なデータを削除する
|
// 不要なデータを削除する
|
||||||
DeleteTrash();
|
DeleteTrash();
|
||||||
|
|
||||||
|
// 国データと言語データをSDに書き込む
|
||||||
|
WriteCountryLanguageData();
|
||||||
|
|
||||||
// NORデータをSDカードに書き込む
|
// NORデータをSDカードに書き込む
|
||||||
WriteNorData();
|
WriteNorData();
|
||||||
|
|
||||||
|
|||||||
@ -317,6 +317,7 @@ void ControlState(::std::vector<std::string>& operationMessage, bool& nextStep,
|
|||||||
// アップデートを行う
|
// アップデートを行う
|
||||||
if(!s_ExecuteFgNup)
|
if(!s_ExecuteFgNup)
|
||||||
{
|
{
|
||||||
|
ImportCountryLanguageData();
|
||||||
StartFGNetworkUpdate();
|
StartFGNetworkUpdate();
|
||||||
s_ExecuteFgNup = true;
|
s_ExecuteFgNup = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,10 +16,14 @@
|
|||||||
#include <nn.h>
|
#include <nn.h>
|
||||||
#include <nn/fs/CTR/fs_ArchiveTypesForSystem.h>
|
#include <nn/fs/CTR/fs_ArchiveTypesForSystem.h>
|
||||||
#include <nn/fs/CTR/MPCore/fs_FileSystemBasePrivate.h>
|
#include <nn/fs/CTR/MPCore/fs_FileSystemBasePrivate.h>
|
||||||
|
#include <nn/cfg/CTR/cfg_ApiInit.h>
|
||||||
#include <nn/cfg/CTR/cfg_ApiNor.h> // cfg:norの初期化に必要
|
#include <nn/cfg/CTR/cfg_ApiNor.h> // cfg:norの初期化に必要
|
||||||
|
#include <nn/cfg/CTR/cfg_Api.h>
|
||||||
#include <nn/am/am_ApiSystemMenu.h>
|
#include <nn/am/am_ApiSystemMenu.h>
|
||||||
#include <nn/cfg/CTR/cfg_NtrSettings.h>
|
#include <nn/cfg/CTR/cfg_NtrSettings.h>
|
||||||
#include <nn/cfg/CTR/cfg_ApiSys.h>
|
#include <nn/cfg/CTR/cfg_ApiSys.h>
|
||||||
|
#include <nn/cfg/CTR/detail/cfg_DataStructures.h>
|
||||||
|
#include <nn/cfg/CTR/detail/cfg_Keys.h>
|
||||||
#include <nn/drivers/aes/CTR/ARM946ES/driverAes_Types.h>
|
#include <nn/drivers/aes/CTR/ARM946ES/driverAes_Types.h>
|
||||||
#include <nn/crypto/crypto_SwAesCtrContext.h>
|
#include <nn/crypto/crypto_SwAesCtrContext.h>
|
||||||
#include <nn/ac/CTR/private/ac_NetworkSetting.h>
|
#include <nn/ac/CTR/private/ac_NetworkSetting.h>
|
||||||
@ -367,6 +371,71 @@ bool ExistsConsoleInitializedFile()
|
|||||||
return ExistsFile(EXISTS_CONSOLE_INTIALIZED);
|
return ExistsFile(EXISTS_CONSOLE_INTIALIZED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetCountry(nn::cfg::CTR::CfgCountryCode countryCode)
|
||||||
|
{
|
||||||
|
using namespace nn::cfg::CTR;
|
||||||
|
using namespace nn::cfg::CTR::detail;
|
||||||
|
|
||||||
|
SimpleAddressIdCfgData simpleAddressId;
|
||||||
|
TwlCountryCodeCfgData countryData;
|
||||||
|
|
||||||
|
nn::cfg::CTR::system::Initialize();
|
||||||
|
|
||||||
|
NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::system::GetConfig(&simpleAddressId, sizeof(SimpleAddressIdCfgData), GET_CFG_KEY(NN_CFG_SIMPLE_ADDRESS, NN_CFG_SIMPLE_ADDRESS_ID)));
|
||||||
|
NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::system::GetConfig(&countryData, sizeof(TwlCountryCodeCfgData), GET_CFG_KEY(NN_CFG_TWL, NN_CFG_TWL_COUNTRY_CODE)));
|
||||||
|
nn::cfg::CTR::system::Finalize();
|
||||||
|
|
||||||
|
simpleAddressId.id = (countryCode << CFG_SIMPLE_ADDRESS_ID_COUNTRY_SHIFT) | (1
|
||||||
|
<< CFG_SIMPLE_ADDRESS_ID_REGION_SHIFT);
|
||||||
|
countryData.country = countryCode;
|
||||||
|
|
||||||
|
nn::cfg::CTR::system::Initialize();
|
||||||
|
NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::system::SetConfig(GET_CFG_KEY(NN_CFG_SIMPLE_ADDRESS, NN_CFG_SIMPLE_ADDRESS_ID), &simpleAddressId, sizeof(SimpleAddressIdCfgData)));
|
||||||
|
NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::system::SetConfig(GET_CFG_KEY(NN_CFG_TWL, NN_CFG_TWL_COUNTRY_CODE), &countryData, sizeof(TwlCountryCodeCfgData)));
|
||||||
|
nn::cfg::CTR::system::FlushConfig();
|
||||||
|
nn::cfg::CTR::system::Finalize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetLanguage(nn::cfg::CTR::CfgLanguageCode languageCode)
|
||||||
|
{
|
||||||
|
NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::init::SetConfig(
|
||||||
|
GET_CFG_KEY(nn::cfg::CTR::detail::NN_CFG_USER_INFO,
|
||||||
|
nn::cfg::CTR::detail::NN_CFG_USER_INFO_LANGUAGE),
|
||||||
|
&languageCode,
|
||||||
|
sizeof(nn::cfg::CTR::detail::LanguageCfgData)));
|
||||||
|
NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::init::FlushConfig());
|
||||||
|
nn::cfg::nor::CTR::Initialize();
|
||||||
|
NN_UTIL_PANIC_IF_FAILED(nn::cfg::nor::CTR::SetLanguage(static_cast<nn::cfg::CTR::CfgLanguageCode>(languageCode)));
|
||||||
|
nn::cfg::nor::CTR::Finalize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImportCountryLanguageData()
|
||||||
|
{
|
||||||
|
nn::Result result;
|
||||||
|
|
||||||
|
size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize();
|
||||||
|
void* buf = common::HeapManager::GetHeap()->Allocate(bufSize);
|
||||||
|
if (buf != NULL)
|
||||||
|
{
|
||||||
|
common::SdReaderWriter sdReader;
|
||||||
|
|
||||||
|
size_t readSize;
|
||||||
|
result = sdReader.ReadBuf(common::COUNTRY_SETTING_PATHNAME, buf, bufSize, &readSize);
|
||||||
|
if(result.IsSuccess())
|
||||||
|
{
|
||||||
|
// SDから読み出し成功
|
||||||
|
SetCountry(reinterpret_cast<common::CfgCountryLanguage*>(buf)->country);
|
||||||
|
|
||||||
|
SetLanguage(reinterpret_cast<common::CfgCountryLanguage*>(buf)->language);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||||
|
}
|
||||||
|
common::HeapManager::GetHeap()->Free(buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ImportIvs()
|
void ImportIvs()
|
||||||
{
|
{
|
||||||
nn::Result result;
|
nn::Result result;
|
||||||
|
|||||||
@ -86,6 +86,7 @@ struct CheckedNetworkSetting
|
|||||||
};
|
};
|
||||||
|
|
||||||
CheckedNetworkSetting* GetTempNetworkSetting();
|
CheckedNetworkSetting* GetTempNetworkSetting();
|
||||||
|
void ImportCountryLanguageData();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -23,6 +23,7 @@ const char* const NAND_ARCHIVE_NAME = "nand:";
|
|||||||
const char* const SD_ARCHIVE_NAME = "sdmc:";
|
const char* const SD_ARCHIVE_NAME = "sdmc:";
|
||||||
|
|
||||||
const wchar_t* const SD_SAVEDATA_ROOT_NAME = L"CTR_ConsoleBackup/";
|
const wchar_t* const SD_SAVEDATA_ROOT_NAME = L"CTR_ConsoleBackup/";
|
||||||
|
const wchar_t* const COUNTRY_SETTING_PATHNAME = L"sdmc:/CountrySetting.bin";
|
||||||
const wchar_t* const AP_SETTING_FILENAME = L"APSetting.txt";
|
const wchar_t* const AP_SETTING_FILENAME = L"APSetting.txt";
|
||||||
const wchar_t* const AP_SETTING_PATHNAME = L"sdmc:/APSetting.txt";
|
const wchar_t* const AP_SETTING_PATHNAME = L"sdmc:/APSetting.txt";
|
||||||
const wchar_t* const NOR_PATHNAME = L"sdmc:/NtrNorSetting.bin";
|
const wchar_t* const NOR_PATHNAME = L"sdmc:/NtrNorSetting.bin";
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
#define COMMON_TYPES_H_
|
#define COMMON_TYPES_H_
|
||||||
|
|
||||||
#include <nn/cfg/CTR/cfg_NtrSettings.h>
|
#include <nn/cfg/CTR/cfg_NtrSettings.h>
|
||||||
|
#include <nn/cfg/CTR/cfg_CountryCode.h>
|
||||||
|
#include <nn/cfg/CTR/cfg_LanguageCode.h>
|
||||||
|
|
||||||
namespace common
|
namespace common
|
||||||
{
|
{
|
||||||
@ -33,6 +35,13 @@ struct NtrNorData
|
|||||||
u8 NtrWiFiSetting[NTR_WIFI_SETTING_SIZE];
|
u8 NtrWiFiSetting[NTR_WIFI_SETTING_SIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct CfgCountryLanguage
|
||||||
|
{
|
||||||
|
enum nn::cfg::CTR::CfgCountryCode country;
|
||||||
|
enum nn::cfg::CTR::CfgLanguageCode language;
|
||||||
|
NN_PADDING1;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user