セーブデータが存在して、Personalized eTicketの存在するDSiWareのみダウンロードするように

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@827 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2014-11-14 07:38:28 +00:00
parent 62f1cab8b7
commit e693f4b3d9
2 changed files with 23 additions and 6 deletions

View File

@ -39,6 +39,10 @@ bit8 s_buffer1[400 * 1024];
size_t s_ProgramIdNum = 0;
// ダウンロードするタイトルのProgramIdの配列
nn::ProgramId s_ProgramIdList[256];
// SDカードに吸い出されたDSiWareのタイトルの個数
size_t s_SdDSiWareProgramIdNum = 0;
// SDカードに吸い出されたDSiWareのProgramIdの配列
nn::ProgramId s_SdDSiWareList[32];
// ダウンロード済みのタイトルの個数
size_t s_FinishedTitleNum = 0;
@ -133,13 +137,17 @@ void TwlTitleDownloaderThreadFunc()
PreinstallImporter importer;
s_Progress = 0;
TitleDownloader::m_Result = ListUpTwlTitles(s_SdDSiWareList, &s_SdDSiWareProgramIdNum);
COMMON_LOGGER_RETURN_VOID_IF_FAILED(TitleDownloader::m_Result);
TitleDownloader::m_Result = nn::am::InitializeForNetworkImporter();
COMMON_LOGGER_RETURN_VOID_IF_FAILED(TitleDownloader::m_Result);
TwlTitleDownloader.m_Result = importer.ListTitlesBasedOnTickets(s_ProgramIdList, &s_ProgramIdNum);
COMMON_LOGGER_RETURN_VOID_IF_FAILED(TwlTitleDownloader.m_Result);
TwlTitleDownloader.SetupTitleListForTWL(s_ProgramIdList, s_ProgramIdNum, s_FinishedTitleNum);
TwlTitleDownloader.SetupTitleListForTWL(s_ProgramIdList, s_ProgramIdNum, s_FinishedTitleNum, s_SdDSiWareList, s_SdDSiWareProgramIdNum);
TwlTitleDownloader.Start();
nn::am::FinalizeForNetworkImporter();
@ -422,15 +430,24 @@ void TitleDownloader::SetupTitleList(nn::ProgramId* list, size_t num, u32 index)
m_FinishedTitleNum = index;
}
void TitleDownloader::SetupTitleListForTWL(nn::ProgramId* list, size_t num, u32 index)
void TitleDownloader::SetupTitleListForTWL(nn::ProgramId* eTicketList, size_t eTicketNum, u32 index, nn::ProgramId* sdDSiWareList, size_t sdDSiWareNum)
{
const size_t listNum = nn::math::Min(num, IMPORTABLE_TITLE_MAX);
const size_t listNum = nn::math::Min(eTicketNum, IMPORTABLE_TITLE_MAX);
u32 twlAppNum = 0;
// 8thNUPからのショップアカウント削除後もセーブデータが削除されない仕様と、MSETでのSDカードへのDSiWareのバックアップ機能があるため、
// eTicketが存在する、かつセーブデータが存在するタイトルのみダウンロードする
for(u32 i = 0; i < listNum; i++)
{
if(nn::CTR::IsTwlApp(list[i]))
if(nn::CTR::IsTwlApp(eTicketList[i]))
{
m_ProgramIdList[twlAppNum++] = list[i];
for(u32 j = 0; j < sdDSiWareNum; j++)
{
if(eTicketList[i] == sdDSiWareList[j])
{
m_ProgramIdList[twlAppNum++] = eTicketList[i];
}
}
}
}
m_TiteNum = twlAppNum;

View File

@ -70,7 +70,7 @@ public:
void SetupTitleList(nn::ProgramId* list, size_t num, u32 index);
//! @brief TWLタイトルリストを設定する
void SetupTitleListForTWL(nn::ProgramId* list, size_t num, u32 index);
void SetupTitleListForTWL(nn::ProgramId* eTicketList, size_t eTicketNum, u32 index, nn::ProgramId* sdDSiWareList, size_t sdDSiWareNum);
//! @brief タイトルをダウンロードするのに必要なサイズを計算します
void CalculateRequiredSize(s64* requiredSize);