From 2f7b3704036c09ee0d2f7b650905b596fa48ce23 Mon Sep 17 00:00:00 2001 From: N2614 Date: Thu, 10 Apr 2014 02:43:06 +0000 Subject: [PATCH] =?UTF-8?q?ApprovalId=E3=82=92CAVE-Account=E3=81=AE?= =?UTF-8?q?=E3=82=B7=E3=82=B9=E3=83=86=E3=83=A0=E3=82=BB=E3=83=BC=E3=83=96?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AB=E6=9B=B8=E3=81=8D=E8=BE=BC?= =?UTF-8?q?=E3=82=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@784 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../sources/ConsoleRestore/ActCompleter.cpp | 51 +++++++++++++++++-- .../sources/ConsoleRestore/ActCompleter.h | 1 + 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp index fb32939..67780a8 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp @@ -21,6 +21,7 @@ #include #include #include +#include namespace ConsoleRestore { @@ -135,11 +136,17 @@ nn::Result ActCompleter::ExecImpl() } } - s_ApprovalId = nn::act::GetSalvagedApprovalId(); - COMMON_LOGGER("ApprovalId = %d\n", s_ApprovalId); - // サルベージ終了をシステムに通知 s_EndEvent.Signal(); + + if(nn::cfg::GetRegion() == nn::cfg::CFG_REGION_AMERICA) + { + s_ApprovalId = nn::act::GetSalvagedApprovalId(); + NN_UTIL_RETURN_IF_FAILED_2( + SaveApprovalId(), + nn::act::FinalizeAdmin(), + common::FinalizeNetwork()); + } } // 移行完了 @@ -158,4 +165,42 @@ nn::Result ActCompleter::ExecImpl() return nn::ResultSuccess(); } +nn::Result ActCompleter::SaveApprovalId() +{ + // Cave-accountのシステムセーブデータ設定 + const u32 CAVE_ACCOUNT_US_SAVEDATA_ID = 0x000202C0; + const u32 MAX_FILES = 5; + const u32 MAX_DIRECTORIES = 1; + const u32 SAVE_DATA_SIZE = 512 * 1024; + + // Cave-accountのファイル書き込み設定 + const char* const SYSTEM_SAVEDATA_ARCHIVE_NAME = "ssave:"; + const char* const CAVE_FILE_NAME = "ssave:/s.bin"; + const u32 APPROVAL_ID_OFFSET = 0x11000; + + NN_UTIL_RETURN_IF_FAILED( + nn::fs::CreateSystemSaveData(CAVE_ACCOUNT_US_SAVEDATA_ID, MAX_FILES, MAX_DIRECTORIES, SAVE_DATA_SIZE, true)); + + NN_UTIL_RETURN_IF_FAILED( + nn::fs::MountSystemSaveData(SYSTEM_SAVEDATA_ARCHIVE_NAME, CAVE_ACCOUNT_US_SAVEDATA_ID)); + + { + nn::fs::FileOutputStream out(CAVE_FILE_NAME, true); + out.SetPosition(APPROVAL_ID_OFFSET); + s32 writeSize; + NN_UTIL_RETURN_IF_FAILED_1( + out.TryWrite(&writeSize, &s_ApprovalId, sizeof(s_ApprovalId), true), + nn::fs::Unmount(SYSTEM_SAVEDATA_ARCHIVE_NAME)); + + NN_UTIL_RETURN_IF_FAILED_1( + nn::fs::CommitSystemSaveData(SYSTEM_SAVEDATA_ARCHIVE_NAME), + nn::fs::Unmount(SYSTEM_SAVEDATA_ARCHIVE_NAME)); + } + + NN_UTIL_RETURN_IF_FAILED( + nn::fs::Unmount(SYSTEM_SAVEDATA_ARCHIVE_NAME)); + + return nn::ResultSuccess(); +} + } /* namespace ConsoleRestore */ diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.h b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.h index cae96bb..8424d33 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.h +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.h @@ -46,6 +46,7 @@ private: static void Exec(); static void UnmountThreadFunc(); static nn::Result ExecImpl(); + static nn::Result SaveApprovalId(); static nn::Result s_Result; static const size_t STACK_SIZE = 0x1000;