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:
N2614 2011-02-22 02:03:16 +00:00
parent 00fc32c49e
commit 8b951b7e97
10 changed files with 88 additions and 11 deletions

View File

@ -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,

View File

@ -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;

View File

@ -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();

View File

@ -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,

View File

@ -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();

View File

@ -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;

View File

@ -85,6 +85,9 @@ void ImportPlayHistory();
// cfgのハードウェア固有領域をcal値で初期化します // cfgのハードウェア固有領域をcal値で初期化します
void InitializeHardwareDependentSetting(); void InitializeHardwareDependentSetting();
// SDカード上のバージョン情報を読みます
void ReadVersionData();
} }
#endif /* IMPORTER_H_ */ #endif /* IMPORTER_H_ */

View File

@ -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++)

View File

@ -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();

View File

@ -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
{ {