mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
CUP、NUPバージョンを出力して読み込めるように
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@73 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
00fc32c49e
commit
8b951b7e97
@ -83,6 +83,9 @@ size_t s_SizeofIvs;
|
|||||||
// IVSが読めるかどうか
|
// IVSが読めるかどうか
|
||||||
bool s_CanReadIvs = false;
|
bool s_CanReadIvs = false;
|
||||||
|
|
||||||
|
// バージョン情報
|
||||||
|
common::VerDef s_VerData;
|
||||||
|
|
||||||
nn::Handle s_McuSession;
|
nn::Handle s_McuSession;
|
||||||
|
|
||||||
} // namespace <unnamed>
|
} // namespace <unnamed>
|
||||||
@ -121,6 +124,11 @@ void GetIvs(void** ivs, size_t* size)
|
|||||||
*size = s_SizeofIvs;
|
*size = s_SizeofIvs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GetVersionData(common::VerDef* version)
|
||||||
|
{
|
||||||
|
*version = s_VerData;
|
||||||
|
}
|
||||||
|
|
||||||
nn::Handle GetMcuHandle()
|
nn::Handle GetMcuHandle()
|
||||||
{
|
{
|
||||||
return s_McuSession;
|
return s_McuSession;
|
||||||
@ -280,13 +288,12 @@ extern "C" void nnMain(void)
|
|||||||
u64 friendCode = nn::friends::CTR::FriendKeyToFriendCode(friendKey);
|
u64 friendCode = nn::friends::CTR::FriendKeyToFriendCode(friendKey);
|
||||||
|
|
||||||
// バージョンの取得
|
// バージョンの取得
|
||||||
common::VerDef mVerData;
|
common::GetSystemVersion(&s_VerData, region);
|
||||||
common::GetSystemVersion(&mVerData, region);
|
|
||||||
|
|
||||||
// 情報出力
|
// 情報出力
|
||||||
COMMON_LOGGER("CTR Console Backup %s Rev.%s\n", __DATE__, BACKUP_VERSION_NUM);
|
COMMON_LOGGER("CTR Console Backup %s Rev.%s\n", __DATE__, BACKUP_VERSION_NUM);
|
||||||
COMMON_LOGGER("System Ver. %d.%d.%d-%d\n", mVerData.cup.majorVersion, mVerData.cup.minorVersion, mVerData.cup.microVersion,
|
COMMON_LOGGER("System Ver. %d.%d.%d-%d\n", s_VerData.cup.majorVersion, s_VerData.cup.minorVersion, s_VerData.cup.microVersion,
|
||||||
mVerData.nup.majorVersion);
|
s_VerData.nup.majorVersion);
|
||||||
COMMON_LOGGER("System Region %s\n", nn::cfg::CTR::GetRegionCodeA3(region));
|
COMMON_LOGGER("System Region %s\n", nn::cfg::CTR::GetRegionCodeA3(region));
|
||||||
COMMON_LOGGER("Serial Number %s\n", s_SerialNo);
|
COMMON_LOGGER("Serial Number %s\n", s_SerialNo);
|
||||||
COMMON_LOGGER("Device ID %llu\n", infraDeviceId);
|
COMMON_LOGGER("Device ID %llu\n", infraDeviceId);
|
||||||
@ -375,7 +382,7 @@ extern "C" void nnMain(void)
|
|||||||
flip,
|
flip,
|
||||||
adapterState,
|
adapterState,
|
||||||
BACKUP_VERSION_NUM,
|
BACKUP_VERSION_NUM,
|
||||||
&mVerData,
|
&s_VerData,
|
||||||
batteryRemain,
|
batteryRemain,
|
||||||
infraDeviceId,
|
infraDeviceId,
|
||||||
friendCode,
|
friendCode,
|
||||||
|
|||||||
@ -17,6 +17,7 @@
|
|||||||
#define NN_CONSOLEBACKUP_H_
|
#define NN_CONSOLEBACKUP_H_
|
||||||
|
|
||||||
#include <nn.h>
|
#include <nn.h>
|
||||||
|
#include "VersionDetect.h"
|
||||||
|
|
||||||
namespace ConsoleBackup
|
namespace ConsoleBackup
|
||||||
{
|
{
|
||||||
@ -28,6 +29,7 @@ bool CanReadSerialNumber();
|
|||||||
void GetSerialNumber(u8** serial, size_t* size);
|
void GetSerialNumber(u8** serial, size_t* size);
|
||||||
void GetIvs(void** ivs, size_t* size);
|
void GetIvs(void** ivs, size_t* size);
|
||||||
nn::Handle GetMcuHandle();
|
nn::Handle GetMcuHandle();
|
||||||
|
void GetVersionData(common::VerDef* version);
|
||||||
|
|
||||||
const u32 CONSOLE_WIDTH = 38;
|
const u32 CONSOLE_WIDTH = 38;
|
||||||
const u32 CONSOLE_HEIGHT = 24;
|
const u32 CONSOLE_HEIGHT = 24;
|
||||||
|
|||||||
@ -39,6 +39,7 @@
|
|||||||
#include "common_Types.h"
|
#include "common_Types.h"
|
||||||
#include "Aes_define.h"
|
#include "Aes_define.h"
|
||||||
#include "PlayHistoryManager.h"
|
#include "PlayHistoryManager.h"
|
||||||
|
#include "VersionDetect.h"
|
||||||
|
|
||||||
namespace ConsoleBackup
|
namespace ConsoleBackup
|
||||||
{
|
{
|
||||||
@ -456,6 +457,16 @@ void FinalizeExportThread()
|
|||||||
s_ExportThread.Finalize();
|
s_ExportThread.Finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WriteVersionData()
|
||||||
|
{
|
||||||
|
COMMON_LOGGER("Export Version Data.\n");
|
||||||
|
|
||||||
|
common::VerDef versionData;
|
||||||
|
GetVersionData(&versionData);
|
||||||
|
|
||||||
|
s_SdWriter.WriteBuf(common::VERSION_DATA_PATHNAME, &versionData, sizeof(common::VerDef));
|
||||||
|
}
|
||||||
|
|
||||||
void WritePlayHistory()
|
void WritePlayHistory()
|
||||||
{
|
{
|
||||||
common::PlayHistoryManager historyManager;
|
common::PlayHistoryManager historyManager;
|
||||||
@ -511,6 +522,9 @@ void ExportData()
|
|||||||
// RTCをSDに書き出す
|
// RTCをSDに書き出す
|
||||||
WriteMcuRtcData();
|
WriteMcuRtcData();
|
||||||
|
|
||||||
|
// バージョン情報をSDに書き出す
|
||||||
|
WriteVersionData();
|
||||||
|
|
||||||
// NANDのセーブデータをSDに書き出す
|
// NANDのセーブデータをSDに書き出す
|
||||||
WriteSaveData();
|
WriteSaveData();
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ size_t s_SizeofIvs;
|
|||||||
// IVSが読めるかどうか
|
// IVSが読めるかどうか
|
||||||
bool s_CanReadIvs = false;
|
bool s_CanReadIvs = false;
|
||||||
|
|
||||||
|
// バージョン情報
|
||||||
|
common::VerDef s_VerData;
|
||||||
|
|
||||||
} // namespace <unnamed>
|
} // namespace <unnamed>
|
||||||
|
|
||||||
@ -116,6 +118,11 @@ void GetIvs(void** ivs, size_t* size)
|
|||||||
*size = s_SizeofIvs;
|
*size = s_SizeofIvs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GetVersionData(common::VerDef* version)
|
||||||
|
{
|
||||||
|
*version = s_VerData;
|
||||||
|
}
|
||||||
|
|
||||||
void FinalizeAll()
|
void FinalizeAll()
|
||||||
{
|
{
|
||||||
common::Logger::GetLoggerInstance()->Finalize();
|
common::Logger::GetLoggerInstance()->Finalize();
|
||||||
@ -291,13 +298,12 @@ extern "C" void nnMain(void)
|
|||||||
u64 friendCode = nn::friends::CTR::FriendKeyToFriendCode(friendKey);
|
u64 friendCode = nn::friends::CTR::FriendKeyToFriendCode(friendKey);
|
||||||
|
|
||||||
// バージョンの取得
|
// バージョンの取得
|
||||||
common::VerDef mVerData;
|
common::GetSystemVersion(&s_VerData, region);
|
||||||
common::GetSystemVersion(&mVerData, region);
|
|
||||||
|
|
||||||
// 情報出力
|
// 情報出力
|
||||||
COMMON_LOGGER("CTR Console Restore %s Rev.%s\n", __DATE__, RESTORE_VERSION_NUM);
|
COMMON_LOGGER("CTR Console Restore %s Rev.%s\n", __DATE__, RESTORE_VERSION_NUM);
|
||||||
COMMON_LOGGER("System Ver. %d.%d.%d-%d\n", mVerData.cup.majorVersion, mVerData.cup.minorVersion, mVerData.cup.microVersion,
|
COMMON_LOGGER("System Ver. %d.%d.%d-%d\n", s_VerData.cup.majorVersion, s_VerData.cup.minorVersion, s_VerData.cup.microVersion,
|
||||||
mVerData.nup.majorVersion);
|
s_VerData.nup.majorVersion);
|
||||||
COMMON_LOGGER("System Region %s\n", nn::cfg::CTR::GetRegionCodeA3(region));
|
COMMON_LOGGER("System Region %s\n", nn::cfg::CTR::GetRegionCodeA3(region));
|
||||||
COMMON_LOGGER("Serial Number %s\n", s_SerialNo);
|
COMMON_LOGGER("Serial Number %s\n", s_SerialNo);
|
||||||
COMMON_LOGGER("Device ID %llu\n", infraDeviceId);
|
COMMON_LOGGER("Device ID %llu\n", infraDeviceId);
|
||||||
@ -395,7 +401,7 @@ extern "C" void nnMain(void)
|
|||||||
flip,
|
flip,
|
||||||
adapterState,
|
adapterState,
|
||||||
RESTORE_VERSION_NUM,
|
RESTORE_VERSION_NUM,
|
||||||
&mVerData,
|
&s_VerData,
|
||||||
batteryRemain,
|
batteryRemain,
|
||||||
infraDeviceId,
|
infraDeviceId,
|
||||||
friendCode,
|
friendCode,
|
||||||
|
|||||||
@ -17,6 +17,7 @@
|
|||||||
#define NN_CONSOLERESTORE_H_
|
#define NN_CONSOLERESTORE_H_
|
||||||
|
|
||||||
#include <nn.h>
|
#include <nn.h>
|
||||||
|
#include "VersionDetect.h"
|
||||||
|
|
||||||
namespace ConsoleRestore
|
namespace ConsoleRestore
|
||||||
{
|
{
|
||||||
@ -28,6 +29,7 @@ bool CanReadSerialNumber();
|
|||||||
void GetSerialNumber(u8** serial, size_t* size);
|
void GetSerialNumber(u8** serial, size_t* size);
|
||||||
void GetIvs(void** ivs, size_t* size);
|
void GetIvs(void** ivs, size_t* size);
|
||||||
nn::Handle GetMcuHandle();
|
nn::Handle GetMcuHandle();
|
||||||
|
void GetVersionData(common::VerDef* version);
|
||||||
|
|
||||||
void FinalizeAll();
|
void FinalizeAll();
|
||||||
|
|
||||||
|
|||||||
@ -46,6 +46,7 @@
|
|||||||
#include "configLoader.h"
|
#include "configLoader.h"
|
||||||
#include "PlayHistoryManager.h"
|
#include "PlayHistoryManager.h"
|
||||||
#include "FileChecker.h"
|
#include "FileChecker.h"
|
||||||
|
#include "VersionDetect.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
@ -85,6 +86,9 @@ bit8 s_IvsDecryptIv[AES_BLOCK_SIZE] =
|
|||||||
0x7d, 0x06, 0x85, 0xe6, 0xe7, 0xb6, 0x4e, 0xe9
|
0x7d, 0x06, 0x85, 0xe6, 0xe7, 0xb6, 0x4e, 0xe9
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// SDカードに保存してあるバージョン情報
|
||||||
|
common::VerDef s_SDVersionData;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckedNetworkSetting s_CurrentNetowrkSetting1;
|
CheckedNetworkSetting s_CurrentNetowrkSetting1;
|
||||||
@ -706,9 +710,39 @@ void ImportNorData()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ReadVersionData()
|
||||||
|
{
|
||||||
|
nn::Result result;
|
||||||
|
|
||||||
|
size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize();
|
||||||
|
NN_LOG("AllocatableSize = %d\n", bufSize);
|
||||||
|
|
||||||
|
void* buf = common::HeapManager::GetHeap()->Allocate(bufSize);
|
||||||
|
if (buf != NULL)
|
||||||
|
{
|
||||||
|
common::SdReaderWriter sdReader;
|
||||||
|
|
||||||
|
size_t readSize;
|
||||||
|
result = sdReader.ReadBuf(common::VERSION_DATA_PATHNAME, buf, bufSize, &readSize);
|
||||||
|
if(result.IsSuccess())
|
||||||
|
{
|
||||||
|
// バージョン情報を保持する
|
||||||
|
std::memcpy(&s_SDVersionData, buf, readSize);
|
||||||
|
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||||
|
|
||||||
|
}
|
||||||
|
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||||
|
|
||||||
|
common::HeapManager::GetHeap()->Free(buf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
COMMON_LOGGER("Failed Allocate Heap!!\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
void Cleanup()
|
void Cleanup()
|
||||||
{
|
{
|
||||||
nn::Result result;
|
nn::Result result;
|
||||||
|
|||||||
@ -85,6 +85,9 @@ void ImportPlayHistory();
|
|||||||
|
|
||||||
// cfgのハードウェア固有領域をcal値で初期化します
|
// cfgのハードウェア固有領域をcal値で初期化します
|
||||||
void InitializeHardwareDependentSetting();
|
void InitializeHardwareDependentSetting();
|
||||||
|
|
||||||
|
// SDカード上のバージョン情報を読みます
|
||||||
|
void ReadVersionData();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* IMPORTER_H_ */
|
#endif /* IMPORTER_H_ */
|
||||||
|
|||||||
@ -112,6 +112,11 @@ bool ExistsTryRestoreSameConsoleFile()
|
|||||||
return ExistsFile(EXISTS_TRY_RESTORE_SAME_CONSOLE);
|
return ExistsFile(EXISTS_TRY_RESTORE_SAME_CONSOLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ExistsVersionData()
|
||||||
|
{
|
||||||
|
return ExistsFile(EXISTS_VERSION_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
void InitializeFileCheck()
|
void InitializeFileCheck()
|
||||||
{
|
{
|
||||||
for(u32 i = 0; i < EXISTS_MAX; i++)
|
for(u32 i = 0; i < EXISTS_MAX; i++)
|
||||||
|
|||||||
@ -32,6 +32,7 @@ typedef enum FILE_EXISTS_CHECK
|
|||||||
EXISTS_RTC_SYNC_FINISHED,
|
EXISTS_RTC_SYNC_FINISHED,
|
||||||
EXISTS_COUNTRY_LANGUAGE,
|
EXISTS_COUNTRY_LANGUAGE,
|
||||||
EXISTS_TRY_RESTORE_SAME_CONSOLE,
|
EXISTS_TRY_RESTORE_SAME_CONSOLE,
|
||||||
|
EXISTS_VERSION_DATA,
|
||||||
EXISTS_MAX
|
EXISTS_MAX
|
||||||
} FileExistsCheck;
|
} FileExistsCheck;
|
||||||
|
|
||||||
@ -45,7 +46,8 @@ const wchar_t* const FILENAME_TABLE[EXISTS_MAX] =
|
|||||||
common::AP_SETTING_PATHNAME,
|
common::AP_SETTING_PATHNAME,
|
||||||
common::RTC_SYNC_CHECK_PATHNAME,
|
common::RTC_SYNC_CHECK_PATHNAME,
|
||||||
common::COUNTRY_SETTING_PATHNAME,
|
common::COUNTRY_SETTING_PATHNAME,
|
||||||
common::TRY_RESTORE_SAME_CONSOLE_PATHNAME
|
common::TRY_RESTORE_SAME_CONSOLE_PATHNAME,
|
||||||
|
common::VERSION_DATA_PATHNAME
|
||||||
};
|
};
|
||||||
|
|
||||||
bool CheckFileExists(const wchar_t* path);
|
bool CheckFileExists(const wchar_t* path);
|
||||||
@ -58,6 +60,7 @@ bool ExistsAPSetting();
|
|||||||
bool ExistsRtcSyncFinishedFile();
|
bool ExistsRtcSyncFinishedFile();
|
||||||
bool ExistsCountryLanguageFile();
|
bool ExistsCountryLanguageFile();
|
||||||
bool ExistsTryRestoreSameConsoleFile();
|
bool ExistsTryRestoreSameConsoleFile();
|
||||||
|
bool ExistsVersionData();
|
||||||
|
|
||||||
void InitializeFileCheck();
|
void InitializeFileCheck();
|
||||||
|
|
||||||
|
|||||||
@ -53,6 +53,7 @@ const wchar_t* const RTC_SYNC_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/RtcSyn
|
|||||||
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";
|
||||||
const wchar_t* const PLAYHISTORY_COUNT_PATHNAME = L"sdmc:/CTR_Console_Repair/playhistoryCount.bin";
|
const wchar_t* const PLAYHISTORY_COUNT_PATHNAME = L"sdmc:/CTR_Console_Repair/playhistoryCount.bin";
|
||||||
const wchar_t* const TOUCH_PANEL_CALIBRATION_PATHNAME = L"sdmc:/CTR_Console_Repair/tpCalibration.bin";
|
const wchar_t* const TOUCH_PANEL_CALIBRATION_PATHNAME = L"sdmc:/CTR_Console_Repair/tpCalibration.bin";
|
||||||
|
const wchar_t* const VERSION_DATA_PATHNAME = L"sdmc:/CTR_Console_Repair/version.bin";
|
||||||
|
|
||||||
enum TWL_PATH_INDEX
|
enum TWL_PATH_INDEX
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user