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が読めるかどうか
bool s_CanReadIvs = false;
// バージョン情報
common::VerDef s_VerData;
nn::Handle s_McuSession;
} // namespace <unnamed>
@ -121,6 +124,11 @@ void GetIvs(void** ivs, size_t* size)
*size = s_SizeofIvs;
}
void GetVersionData(common::VerDef* version)
{
*version = s_VerData;
}
nn::Handle GetMcuHandle()
{
return s_McuSession;
@ -280,13 +288,12 @@ extern "C" void nnMain(void)
u64 friendCode = nn::friends::CTR::FriendKeyToFriendCode(friendKey);
// バージョンの取得
common::VerDef mVerData;
common::GetSystemVersion(&mVerData, region);
common::GetSystemVersion(&s_VerData, region);
// 情報出力
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,
mVerData.nup.majorVersion);
COMMON_LOGGER("System Ver. %d.%d.%d-%d\n", s_VerData.cup.majorVersion, s_VerData.cup.minorVersion, s_VerData.cup.microVersion,
s_VerData.nup.majorVersion);
COMMON_LOGGER("System Region %s\n", nn::cfg::CTR::GetRegionCodeA3(region));
COMMON_LOGGER("Serial Number %s\n", s_SerialNo);
COMMON_LOGGER("Device ID %llu\n", infraDeviceId);
@ -375,7 +382,7 @@ extern "C" void nnMain(void)
flip,
adapterState,
BACKUP_VERSION_NUM,
&mVerData,
&s_VerData,
batteryRemain,
infraDeviceId,
friendCode,

View File

@ -17,6 +17,7 @@
#define NN_CONSOLEBACKUP_H_
#include <nn.h>
#include "VersionDetect.h"
namespace ConsoleBackup
{
@ -28,6 +29,7 @@ bool CanReadSerialNumber();
void GetSerialNumber(u8** serial, size_t* size);
void GetIvs(void** ivs, size_t* size);
nn::Handle GetMcuHandle();
void GetVersionData(common::VerDef* version);
const u32 CONSOLE_WIDTH = 38;
const u32 CONSOLE_HEIGHT = 24;

View File

@ -39,6 +39,7 @@
#include "common_Types.h"
#include "Aes_define.h"
#include "PlayHistoryManager.h"
#include "VersionDetect.h"
namespace ConsoleBackup
{
@ -456,6 +457,16 @@ void FinalizeExportThread()
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()
{
common::PlayHistoryManager historyManager;
@ -511,6 +522,9 @@ void ExportData()
// RTCをSDに書き出す
WriteMcuRtcData();
// バージョン情報をSDに書き出す
WriteVersionData();
// NANDのセーブデータをSDに書き出す
WriteSaveData();

View File

@ -79,6 +79,8 @@ size_t s_SizeofIvs;
// IVSが読めるかどうか
bool s_CanReadIvs = false;
// バージョン情報
common::VerDef s_VerData;
} // namespace <unnamed>
@ -116,6 +118,11 @@ void GetIvs(void** ivs, size_t* size)
*size = s_SizeofIvs;
}
void GetVersionData(common::VerDef* version)
{
*version = s_VerData;
}
void FinalizeAll()
{
common::Logger::GetLoggerInstance()->Finalize();
@ -291,13 +298,12 @@ extern "C" void nnMain(void)
u64 friendCode = nn::friends::CTR::FriendKeyToFriendCode(friendKey);
// バージョンの取得
common::VerDef mVerData;
common::GetSystemVersion(&mVerData, region);
common::GetSystemVersion(&s_VerData, region);
// 情報出力
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,
mVerData.nup.majorVersion);
COMMON_LOGGER("System Ver. %d.%d.%d-%d\n", s_VerData.cup.majorVersion, s_VerData.cup.minorVersion, s_VerData.cup.microVersion,
s_VerData.nup.majorVersion);
COMMON_LOGGER("System Region %s\n", nn::cfg::CTR::GetRegionCodeA3(region));
COMMON_LOGGER("Serial Number %s\n", s_SerialNo);
COMMON_LOGGER("Device ID %llu\n", infraDeviceId);
@ -395,7 +401,7 @@ extern "C" void nnMain(void)
flip,
adapterState,
RESTORE_VERSION_NUM,
&mVerData,
&s_VerData,
batteryRemain,
infraDeviceId,
friendCode,

View File

@ -17,6 +17,7 @@
#define NN_CONSOLERESTORE_H_
#include <nn.h>
#include "VersionDetect.h"
namespace ConsoleRestore
{
@ -28,6 +29,7 @@ bool CanReadSerialNumber();
void GetSerialNumber(u8** serial, size_t* size);
void GetIvs(void** ivs, size_t* size);
nn::Handle GetMcuHandle();
void GetVersionData(common::VerDef* version);
void FinalizeAll();

View File

@ -46,6 +46,7 @@
#include "configLoader.h"
#include "PlayHistoryManager.h"
#include "FileChecker.h"
#include "VersionDetect.h"
#include <string>
#include <cstring>
@ -85,6 +86,9 @@ bit8 s_IvsDecryptIv[AES_BLOCK_SIZE] =
0x7d, 0x06, 0x85, 0xe6, 0xe7, 0xb6, 0x4e, 0xe9
};
// SDカードに保存してあるバージョン情報
common::VerDef s_SDVersionData;
}
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()
{
nn::Result result;

View File

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

View File

@ -112,6 +112,11 @@ bool ExistsTryRestoreSameConsoleFile()
return ExistsFile(EXISTS_TRY_RESTORE_SAME_CONSOLE);
}
bool ExistsVersionData()
{
return ExistsFile(EXISTS_VERSION_DATA);
}
void InitializeFileCheck()
{
for(u32 i = 0; i < EXISTS_MAX; i++)

View File

@ -32,6 +32,7 @@ typedef enum FILE_EXISTS_CHECK
EXISTS_RTC_SYNC_FINISHED,
EXISTS_COUNTRY_LANGUAGE,
EXISTS_TRY_RESTORE_SAME_CONSOLE,
EXISTS_VERSION_DATA,
EXISTS_MAX
} FileExistsCheck;
@ -45,7 +46,8 @@ const wchar_t* const FILENAME_TABLE[EXISTS_MAX] =
common::AP_SETTING_PATHNAME,
common::RTC_SYNC_CHECK_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);
@ -58,6 +60,7 @@ bool ExistsAPSetting();
bool ExistsRtcSyncFinishedFile();
bool ExistsCountryLanguageFile();
bool ExistsTryRestoreSameConsoleFile();
bool ExistsVersionData();
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_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 VERSION_DATA_PATHNAME = L"sdmc:/CTR_Console_Repair/version.bin";
enum TWL_PATH_INDEX
{