From 3ea3ce3ff3aaf133504cec9b7a2272b5234cd899 Mon Sep 17 00:00:00 2001 From: N2614 Date: Wed, 30 Apr 2014 01:23:03 +0000 Subject: [PATCH] =?UTF-8?q?Cave-account=E3=81=AE=E3=83=87=E3=83=95?= =?UTF-8?q?=E3=82=A9=E3=83=AB=E3=83=88=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=82=92=E4=BD=BF=E3=81=86=E3=82=88=E3=81=86=E3=81=AB?= 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@794 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../sources/ConsoleRestore/ActCompleter.cpp | 27 ++++++++++++++---- .../common/romfiles/CAVE_ACCOUNT_save_0.bin | Bin 0 -> 143360 bytes 2 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 trunk/ConsoleDataMigration/sources/common/romfiles/CAVE_ACCOUNT_save_0.bin diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp index 2ab8b9c..1a06593 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include "AgeChecker.h" @@ -215,9 +216,11 @@ nn::Result ActCompleter::SaveApprovalId() // Cave-accountのファイル書き込み設定 const char* const SYSTEM_SAVEDATA_ARCHIVE_NAME = "ssave:"; const char* const CAVE_FILE_NAME = "ssave:/s.bin"; - const size_t CAVE_FILE_SIZE = 143360; const u32 APPROVAL_ID_OFFSET = 0x11000; + // Cave-accountのデフォルト値 + const char* const CAVE_DEFAULT_FILE = "rom:/CAVE_ACCOUNT_save_0.bin"; + NN_UTIL_RETURN_IF_FAILED( nn::fs::CreateSystemSaveData(CAVE_ACCOUNT_US_SAVEDATA_ID, MAX_FILES, MAX_DIRECTORIES, SAVE_DATA_SIZE, true)); @@ -227,23 +230,34 @@ nn::Result ActCompleter::SaveApprovalId() { nn::fs::FileOutputStream out(CAVE_FILE_NAME, true); - // ファイルサイズ分のダミーデータを書く - common::HeapManager dummyWriteData(CAVE_FILE_SIZE); - void* buf = dummyWriteData.GetAddr(); + // デフォルトデータを書く + nn::fs::FileInputStream defaultFile; + NN_UTIL_RETURN_IF_FAILED_1( + defaultFile.TryInitialize(CAVE_DEFAULT_FILE), + nn::fs::Unmount(SYSTEM_SAVEDATA_ARCHIVE_NAME)); + + s64 fileSize = defaultFile.GetSize(); + common::HeapManager heap(fileSize, AES_BLOCK_SIZE); + void* buf = heap.GetAddr(); if(buf != NULL) { - std::memset(buf, 0, CAVE_FILE_SIZE); + s32 readSize; + NN_UTIL_RETURN_IF_FAILED_1( + defaultFile.TryRead(&readSize, buf, fileSize), + nn::fs::Unmount(SYSTEM_SAVEDATA_ARCHIVE_NAME)); s32 writeSize; NN_UTIL_RETURN_IF_FAILED_1( - out.TryWrite(&writeSize, buf, CAVE_FILE_SIZE, true), + out.TryWrite(&writeSize, buf, fileSize, true), nn::fs::Unmount(SYSTEM_SAVEDATA_ARCHIVE_NAME)); } else { + nn::fs::Unmount(SYSTEM_SAVEDATA_ARCHIVE_NAME); return nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, nn::Result::DESCRIPTION_OUT_OF_MEMORY); } + // 所定の位置までシークしてApproval IDを書く NN_UTIL_RETURN_IF_FAILED_1( out.TrySeek(APPROVAL_ID_OFFSET, nn::fs::POSITION_BASE_BEGIN), nn::fs::Unmount(SYSTEM_SAVEDATA_ARCHIVE_NAME)); @@ -252,6 +266,7 @@ nn::Result ActCompleter::SaveApprovalId() 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)); diff --git a/trunk/ConsoleDataMigration/sources/common/romfiles/CAVE_ACCOUNT_save_0.bin b/trunk/ConsoleDataMigration/sources/common/romfiles/CAVE_ACCOUNT_save_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..9a7009d4a75c458915ff3ca28a450373e9ca46c4 GIT binary patch literal 143360 zcmeIuu?;{_7=_U%kq{a?hyl!E0+ncJn9n2;2kz@Ky5TYaZUbut132oNAZfB*pk z1PBlyKp?ijd>;F>F59}LF?Ojs0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBoL6S$t{@AeT0 zFOa{5j}%CN009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ;1js3qHOyi abvb7s1PBlyK!5-N0t5&UAV7dXOo12uybekL literal 0 HcmV?d00001