diff options
author | pineappleEA <pineaea@gmail.com> | 2024-02-23 23:57:29 +0100 |
---|---|---|
committer | pineappleEA <pineaea@gmail.com> | 2024-02-23 23:57:29 +0100 |
commit | 8448fd17327af4142e23c9d02963e9df1e7b8eb4 (patch) | |
tree | e9f1dbd951ae83daebe645cb1b2daedff5253f3f | |
parent | 7c89b1e372adcfd75eae1e454ec9457ec6b0c3d0 (diff) |
early-access version 4164EA-4164
-rwxr-xr-x | README.md | 2 | ||||
-rwxr-xr-x | src/core/CMakeLists.txt | 2 | ||||
-rwxr-xr-x | src/core/file_sys/fs_save_data_types.h | 13 | ||||
-rwxr-xr-x | src/core/hle/service/filesystem/fsp/fsp_srv.cpp | 22 | ||||
-rwxr-xr-x | src/core/hle/service/filesystem/fsp/fsp_srv.h | 8 | ||||
-rwxr-xr-x | src/core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.cpp | 13 | ||||
-rwxr-xr-x | src/core/hle/service/filesystem/fsp/save_data_transfer_prohibiter.h | 16 |
7 files changed, 71 insertions, 5 deletions
@@ -1,7 +1,7 @@ | |||
1 | yuzu emulator early access | 1 | yuzu emulator early access |
2 | ============= | 2 | ============= |
3 | 3 | ||
4 | This is the source code for early-access 4163. | 4 | This 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 | |||
164 | static_assert(std::is_trivially_copyable_v<SaveDataExtraData>, | 164 | static_assert(std::is_trivially_copyable_v<SaveDataExtraData>, |
165 | "Data type must be trivially copyable."); | 165 | "Data type must be trivially copyable."); |
166 | 166 | ||
167 | struct 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 | }; | ||
176 | static_assert(sizeof(SaveDataFilter) == 0x48, "SaveDataFilter has invalid size."); | ||
177 | static_assert(std::is_trivially_copyable_v<SaveDataFilter>, | ||
178 | "Data type must be trivially copyable."); | ||
179 | |||
167 | struct HashSalt { | 180 | struct 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 | ||
237 | Result FSP_SRV::CreateSaveDataFileSystemBySystemSaveDataId( | 238 | Result 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 | ||
312 | Result 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 | |||
311 | Result FSP_SRV::WriteSaveDataFileSystemExtraDataBySaveDataAttribute() { | 320 | Result 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 | ||
344 | Result 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 | |||
335 | Result FSP_SRV::OpenDataStorageByCurrentProcess(OutInterface<IStorage> out_interface) { | 351 | Result 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 | ||
26 | class IFileSystem; | 26 | class IFileSystem; |
27 | class ISaveDataInfoReader; | 27 | class ISaveDataInfoReader; |
28 | class ISaveDataTransferProhibiter; | ||
28 | class IStorage; | 29 | class IStorage; |
29 | class IMultiCommitManager; | 30 | class 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 | |||
6 | namespace Service::FileSystem { | ||
7 | |||
8 | ISaveDataTransferProhibiter::ISaveDataTransferProhibiter(Core::System& system_) | ||
9 | : ServiceFramework{system_, "ISaveDataTransferProhibiter"} {} | ||
10 | |||
11 | ISaveDataTransferProhibiter::~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 | |||
8 | namespace Service::FileSystem { | ||
9 | |||
10 | class ISaveDataTransferProhibiter : public ServiceFramework<ISaveDataTransferProhibiter> { | ||
11 | public: | ||
12 | explicit ISaveDataTransferProhibiter(Core::System& system_); | ||
13 | ~ISaveDataTransferProhibiter() override; | ||
14 | }; | ||
15 | |||
16 | } // namespace Service::FileSystem | ||