mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
Cave-accountのデフォルトファイルを使うように
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
This commit is contained in:
parent
dd108a5a7d
commit
3ea3ce3ff3
@ -24,6 +24,7 @@
|
||||
#include <nn/actslv/actslv_Api.h>
|
||||
#include <nn/fs/fs_ApiSysSaveData.h>
|
||||
#include <nn/cfg/CTR/cfg_ApiSys.h>
|
||||
#include <nn/drivers/aes/CTR/ARM946ES/driverAes_Types.h>
|
||||
|
||||
#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));
|
||||
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user