aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xREADME.md2
-rwxr-xr-xsrc/core/CMakeLists.txt2
-rwxr-xr-xsrc/core/file_sys/fs_save_data_types.h13
-rwxr-xr-xsrc/core/hle/service/filesystem/fsp/fsp_srv.cpp22
-rwxr-xr-xsrc/core/hle/service/filesystem/fsp/fsp_srv.h8
-rwxr-xr-xsrc/core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.cpp13
-rwxr-xr-xsrc/core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.h16
7 files changed, 71 insertions, 5 deletions
diff --git a/README.md b/README.md
index c14f3ad71..bda1e0184 100755
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
1yuzu emulator early access 1yuzu emulator early access
2============= 2=============
3 3
4This is the source code for early-access 4163. 4This is the source code for early-access 4164.
5 5
6## Legal Notice 6## Legal Notice
7 7
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 6a55ec03b..3ecc30637 100755
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -625,6 +625,8 @@ add_library(core STATIC
625 hle/service/filesystem/fsp/fsp_srv.cpp 625 hle/service/filesystem/fsp/fsp_srv.cpp
626 hle/service/filesystem/fsp/fsp_srv.h 626 hle/service/filesystem/fsp/fsp_srv.h
627 hle/service/filesystem/fsp/fsp_types.h 627 hle/service/filesystem/fsp/fsp_types.h
628 hle/service/filesystem/fsp/save_data_transfer_prohibiter.cpp
629 hle/service/filesystem/fsp/save_data_transfer_prohibiter.h
628 hle/service/filesystem/romfs_controller.cpp 630 hle/service/filesystem/romfs_controller.cpp
629 hle/service/filesystem/romfs_controller.h 631 hle/service/filesystem/romfs_controller.h
630 hle/service/filesystem/save_data_controller.cpp 632 hle/service/filesystem/save_data_controller.cpp
diff --git a/src/core/file_sys/fs_save_data_types.h b/src/core/file_sys/fs_save_data_types.h
index 86a83d217..493dba34f 100755
--- a/src/core/file_sys/fs_save_data_types.h
+++ b/src/core/file_sys/fs_save_data_types.h
@@ -164,6 +164,19 @@ static_assert(sizeof(SaveDataExtraData) == 0x200, "SaveDataExtraData has invalid
164static_assert(std::is_trivially_copyable_v<SaveDataExtraData>, 164static_assert(std::is_trivially_copyable_v<SaveDataExtraData>,
165 "Data type must be trivially copyable."); 165 "Data type must be trivially copyable.");
166 166
167struct SaveDataFilter {
168 bool use_program_id;
169 bool use_save_data_type;
170 bool use_user_id;
171 bool use_save_data_id;
172 bool use_index;
173 SaveDataRank rank;
174 SaveDataAttribute attribute;
175};
176static_assert(sizeof(SaveDataFilter) == 0x48, "SaveDataFilter has invalid size.");
177static_assert(std::is_trivially_copyable_v<SaveDataFilter>,
178 "Data type must be trivially copyable.");
179
167struct HashSalt { 180struct HashSalt {
168 static constexpr size_t Size = 32; 181 static constexpr size_t Size = 32;
169 182
diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp
index fc67a4713..223284255 100755
--- a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp
+++ b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp
@@ -34,6 +34,7 @@
34#include "core/hle/service/filesystem/fsp/fs_i_save_data_info_reader.h" 34#include "core/hle/service/filesystem/fsp/fs_i_save_data_info_reader.h"
35#include "core/hle/service/filesystem/fsp/fs_i_storage.h" 35#include "core/hle/service/filesystem/fsp/fs_i_storage.h"
36#include "core/hle/service/filesystem/fsp/fsp_srv.h" 36#include "core/hle/service/filesystem/fsp/fsp_srv.h"
37#include "core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.h"
37#include "core/hle/service/filesystem/romfs_controller.h" 38#include "core/hle/service/filesystem/romfs_controller.h"
38#include "core/hle/service/filesystem/save_data_controller.h" 39#include "core/hle/service/filesystem/save_data_controller.h"
39#include "core/hle/service/hle_ipc.h" 40#include "core/hle/service/hle_ipc.h"
@@ -87,7 +88,7 @@ FSP_SRV::FSP_SRV(Core::System& system_)
87 {64, nullptr, "OpenSaveDataInternalStorageFileSystem"}, 88 {64, nullptr, "OpenSaveDataInternalStorageFileSystem"},
88 {65, nullptr, "UpdateSaveDataMacForDebug"}, 89 {65, nullptr, "UpdateSaveDataMacForDebug"},
89 {66, nullptr, "WriteSaveDataFileSystemExtraData2"}, 90 {66, nullptr, "WriteSaveDataFileSystemExtraData2"},
90 {67, nullptr, "FindSaveDataWithFilter"}, 91 {67, D<&FSP_SRV::FindSaveDataWithFilter>, "FindSaveDataWithFilter"},
91 {68, nullptr, "OpenSaveDataInfoReaderBySaveDataFilter"}, 92 {68, nullptr, "OpenSaveDataInfoReaderBySaveDataFilter"},
92 {69, nullptr, "ReadSaveDataFileSystemExtraDataBySaveDataAttribute"}, 93 {69, nullptr, "ReadSaveDataFileSystemExtraDataBySaveDataAttribute"},
93 {70, D<&FSP_SRV::WriteSaveDataFileSystemExtraDataBySaveDataAttribute>, "WriteSaveDataFileSystemExtraDataBySaveDataAttribute"}, 94 {70, D<&FSP_SRV::WriteSaveDataFileSystemExtraDataBySaveDataAttribute>, "WriteSaveDataFileSystemExtraDataBySaveDataAttribute"},
@@ -95,7 +96,7 @@ FSP_SRV::FSP_SRV(Core::System& system_)
95 {80, nullptr, "OpenSaveDataMetaFile"}, 96 {80, nullptr, "OpenSaveDataMetaFile"},
96 {81, nullptr, "OpenSaveDataTransferManager"}, 97 {81, nullptr, "OpenSaveDataTransferManager"},
97 {82, nullptr, "OpenSaveDataTransferManagerVersion2"}, 98 {82, nullptr, "OpenSaveDataTransferManagerVersion2"},
98 {83, nullptr, "OpenSaveDataTransferProhibiterForCloudBackUp"}, 99 {83, D<&FSP_SRV::OpenSaveDataTransferProhibiter>, "OpenSaveDataTransferProhibiter"},
99 {84, nullptr, "ListApplicationAccessibleSaveDataOwnerId"}, 100 {84, nullptr, "ListApplicationAccessibleSaveDataOwnerId"},
100 {85, nullptr, "OpenSaveDataTransferManagerForSaveDataRepair"}, 101 {85, nullptr, "OpenSaveDataTransferManagerForSaveDataRepair"},
101 {86, nullptr, "OpenSaveDataMover"}, 102 {86, nullptr, "OpenSaveDataMover"},
@@ -235,7 +236,7 @@ Result FSP_SRV::CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_crea
235} 236}
236 237
237Result FSP_SRV::CreateSaveDataFileSystemBySystemSaveDataId( 238Result FSP_SRV::CreateSaveDataFileSystemBySystemSaveDataId(
238 FileSys::SaveDataCreationInfo save_create_struct, FileSys::SaveDataAttribute save_struct) { 239 FileSys::SaveDataAttribute save_struct, FileSys::SaveDataCreationInfo save_create_struct) {
239 LOG_DEBUG(Service_FS, "called save_struct = {}", save_struct.DebugInfo()); 240 LOG_DEBUG(Service_FS, "called save_struct = {}", save_struct.DebugInfo());
240 241
241 FileSys::VirtualDir save_data_dir{}; 242 FileSys::VirtualDir save_data_dir{};
@@ -308,6 +309,14 @@ Result FSP_SRV::OpenSaveDataInfoReaderOnlyCacheStorage(
308 R_SUCCEED(); 309 R_SUCCEED();
309} 310}
310 311
312Result FSP_SRV::FindSaveDataWithFilter(Out<s64> out_count,
313 OutBuffer<BufferAttr_HipcMapAlias> out_buffer,
314 FileSys::SaveDataSpaceId space_id,
315 FileSys::SaveDataFilter filter) {
316 LOG_WARNING(Service_FS, "(STUBBED) called");
317 R_THROW(FileSys::ResultTargetNotFound);
318}
319
311Result FSP_SRV::WriteSaveDataFileSystemExtraDataBySaveDataAttribute() { 320Result FSP_SRV::WriteSaveDataFileSystemExtraDataBySaveDataAttribute() {
312 LOG_WARNING(Service_FS, "(STUBBED) called."); 321 LOG_WARNING(Service_FS, "(STUBBED) called.");
313 322
@@ -332,6 +341,13 @@ Result FSP_SRV::ReadSaveDataFileSystemExtraDataWithMaskBySaveDataAttribute(
332 R_SUCCEED(); 341 R_SUCCEED();
333} 342}
334 343
344Result FSP_SRV::OpenSaveDataTransferProhibiter(
345 OutInterface<ISaveDataTransferProhibiter> out_prohibiter, u64 id) {
346 LOG_WARNING(Service_FS, "(STUBBED) called, id={:016X}", id);
347 *out_prohibiter = std::make_shared<ISaveDataTransferProhibiter>(system);
348 R_SUCCEED();
349}
350
335Result FSP_SRV::OpenDataStorageByCurrentProcess(OutInterface<IStorage> out_interface) { 351Result FSP_SRV::OpenDataStorageByCurrentProcess(OutInterface<IStorage> out_interface) {
336 LOG_DEBUG(Service_FS, "called"); 352 LOG_DEBUG(Service_FS, "called");
337 353
diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.h b/src/core/hle/service/filesystem/fsp/fsp_srv.h
index ee67f6bc1..83d9cb51c 100755
--- a/src/core/hle/service/filesystem/fsp/fsp_srv.h
+++ b/src/core/hle/service/filesystem/fsp/fsp_srv.h
@@ -25,6 +25,7 @@ class SaveDataController;
25 25
26class IFileSystem; 26class IFileSystem;
27class ISaveDataInfoReader; 27class ISaveDataInfoReader;
28class ISaveDataTransferProhibiter;
28class IStorage; 29class IStorage;
29class IMultiCommitManager; 30class IMultiCommitManager;
30 31
@@ -53,7 +54,7 @@ private:
53 Result CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_create_struct, 54 Result CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_create_struct,
54 FileSys::SaveDataAttribute save_struct, u128 uid); 55 FileSys::SaveDataAttribute save_struct, u128 uid);
55 Result CreateSaveDataFileSystemBySystemSaveDataId( 56 Result CreateSaveDataFileSystemBySystemSaveDataId(
56 FileSys::SaveDataCreationInfo save_create_struct, FileSys::SaveDataAttribute save_struct); 57 FileSys::SaveDataAttribute save_struct, FileSys::SaveDataCreationInfo save_create_struct);
57 Result OpenSaveDataFileSystem(OutInterface<IFileSystem> out_interface, 58 Result OpenSaveDataFileSystem(OutInterface<IFileSystem> out_interface,
58 FileSys::SaveDataSpaceId space_id, 59 FileSys::SaveDataSpaceId space_id,
59 FileSys::SaveDataAttribute attribute); 60 FileSys::SaveDataAttribute attribute);
@@ -66,11 +67,16 @@ private:
66 Result OpenSaveDataInfoReaderBySaveDataSpaceId(OutInterface<ISaveDataInfoReader> out_interface, 67 Result OpenSaveDataInfoReaderBySaveDataSpaceId(OutInterface<ISaveDataInfoReader> out_interface,
67 FileSys::SaveDataSpaceId space); 68 FileSys::SaveDataSpaceId space);
68 Result OpenSaveDataInfoReaderOnlyCacheStorage(OutInterface<ISaveDataInfoReader> out_interface); 69 Result OpenSaveDataInfoReaderOnlyCacheStorage(OutInterface<ISaveDataInfoReader> out_interface);
70 Result FindSaveDataWithFilter(Out<s64> out_count, OutBuffer<BufferAttr_HipcMapAlias> out_buffer,
71 FileSys::SaveDataSpaceId space_id,
72 FileSys::SaveDataFilter filter);
69 Result WriteSaveDataFileSystemExtraDataBySaveDataAttribute(); 73 Result WriteSaveDataFileSystemExtraDataBySaveDataAttribute();
70 Result ReadSaveDataFileSystemExtraDataWithMaskBySaveDataAttribute( 74 Result ReadSaveDataFileSystemExtraDataWithMaskBySaveDataAttribute(
71 FileSys::SaveDataSpaceId space_id, FileSys::SaveDataAttribute attribute, 75 FileSys::SaveDataSpaceId space_id, FileSys::SaveDataAttribute attribute,
72 InBuffer<BufferAttr_HipcMapAlias> mask_buffer, 76 InBuffer<BufferAttr_HipcMapAlias> mask_buffer,
73 OutBuffer<BufferAttr_HipcMapAlias> out_buffer); 77 OutBuffer<BufferAttr_HipcMapAlias> out_buffer);
78 Result OpenSaveDataTransferProhibiter(OutInterface<ISaveDataTransferProhibiter> out_prohibiter,
79 u64 id);
74 Result OpenDataStorageByCurrentProcess(OutInterface<IStorage> out_interface); 80 Result OpenDataStorageByCurrentProcess(OutInterface<IStorage> out_interface);
75 Result OpenDataStorageByDataId(OutInterface<IStorage> out_interface, 81 Result OpenDataStorageByDataId(OutInterface<IStorage> out_interface,
76 FileSys::StorageId storage_id, u32 unknown, u64 title_id); 82 FileSys::StorageId storage_id, u32 unknown, u64 title_id);
diff --git a/src/core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.cpp b/src/core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.cpp
new file mode 100755
index 000000000..d8d6289fe
--- /dev/null
+++ b/src/core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.cpp
@@ -0,0 +1,13 @@
1// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#include "core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.h"
5
6namespace Service::FileSystem {
7
8ISaveDataTransferProhibiter::ISaveDataTransferProhibiter(Core::System& system_)
9 : ServiceFramework{system_, "ISaveDataTransferProhibiter"} {}
10
11ISaveDataTransferProhibiter::~ISaveDataTransferProhibiter() = default;
12
13} // namespace Service::FileSystem
diff --git a/src/core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.h b/src/core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.h
new file mode 100755
index 000000000..d206e1dea
--- /dev/null
+++ b/src/core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.h
@@ -0,0 +1,16 @@
1// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#pragma once
5
6#include "core/hle/service/service.h"
7
8namespace Service::FileSystem {
9
10class ISaveDataTransferProhibiter : public ServiceFramework<ISaveDataTransferProhibiter> {
11public:
12 explicit ISaveDataTransferProhibiter(Core::System& system_);
13 ~ISaveDataTransferProhibiter() override;
14};
15
16} // namespace Service::FileSystem