diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 07e3504040..8865b28987 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -51,6 +51,7 @@ add_library(core STATIC file_sys/control_metadata.cpp file_sys/control_metadata.h file_sys/errors.h + file_sys/fs_common.h file_sys/fs_directory.h file_sys/fs_file.h file_sys/fs_filesystem.h @@ -58,17 +59,29 @@ add_library(core STATIC file_sys/fs_operate_range.h file_sys/fs_path.h file_sys/fs_path_utility.h + file_sys/fs_program_index_map_info.h file_sys/fs_save_data_types.h file_sys/fs_string_util.h - file_sys/fs_program_index_map_info.h file_sys/fsa/fs_i_directory.h file_sys/fsa/fs_i_file.h file_sys/fsa/fs_i_filesystem.h file_sys/fsmitm_romfsbuild.cpp file_sys/fsmitm_romfsbuild.h + file_sys/fssrv/fssrv_program_registry_impl.cpp + file_sys/fssrv/fssrv_program_registry_impl.h + file_sys/fssrv/fssrv_program_registry_service.cpp + file_sys/fssrv/fssrv_program_registry_service.h file_sys/fssrv/fssrv_sf_path.h + file_sys/fssrv/impl/fssrv_access_control.cpp + file_sys/fssrv/impl/fssrv_access_control.h + file_sys/fssrv/impl/fssrv_access_control_bits.h + file_sys/fssrv/impl/fssrv_program_index_map_info_manager.h + file_sys/fssrv/impl/fssrv_program_info.cpp + file_sys/fssrv/impl/fssrv_program_info.h + file_sys/fssrv/impl/fssrv_program_registry_manager.cpp + file_sys/fssrv/impl/fssrv_program_registry_manager.h + file_sys/fssrv/impl/fssrv_save_data_properties.h file_sys/fssystem/fs_i_storage.h - file_sys/fssystem/fs_types.h file_sys/fssystem/fssystem_aes_ctr_counter_extended_storage.cpp file_sys/fssystem/fssystem_aes_ctr_counter_extended_storage.h file_sys/fssystem/fssystem_aes_ctr_storage.cpp @@ -110,19 +123,6 @@ add_library(core STATIC file_sys/fssystem/fssystem_switch_storage.h file_sys/fssystem/fssystem_utility.cpp file_sys/fssystem/fssystem_utility.h - file_sys/fssrv/impl/fssrv_program_info.cpp - file_sys/fssrv/impl/fssrv_program_info.h - file_sys/fssrv/impl/fssrv_access_control.h - file_sys/fssrv/impl/fssrv_access_control.cpp - file_sys/fssrv/impl/fssrv_access_control_bits.h - file_sys/fssrv/impl/fssrv_program_registry_manager.cpp - file_sys/fssrv/impl/fssrv_program_registry_manager.h - file_sys/fssrv/impl/fssrv_program_index_map_info_manager.h - file_sys/fssrv/impl/fssrv_save_data_properties.h - file_sys/fssrv/fssrv_program_registry_impl.h - file_sys/fssrv/fssrv_program_registry_impl.cpp - file_sys/fssrv/fssrv_program_registry_service.h - file_sys/fssrv/fssrv_program_registry_service.cpp file_sys/ips_layer.cpp file_sys/ips_layer.h file_sys/kernel_executable.cpp @@ -510,33 +510,33 @@ add_library(core STATIC hle/service/apm/apm_controller.h hle/service/apm/apm_interface.cpp hle/service/apm/apm_interface.h + hle/service/audio/audio.cpp + hle/service/audio/audio.h hle/service/audio/audio_controller.cpp hle/service/audio/audio_controller.h hle/service/audio/audio_device.cpp hle/service/audio/audio_device.h - hle/service/audio/audio_in_manager.cpp - hle/service/audio/audio_in_manager.h hle/service/audio/audio_in.cpp hle/service/audio/audio_in.h - hle/service/audio/audio_out_manager.cpp - hle/service/audio/audio_out_manager.h + hle/service/audio/audio_in_manager.cpp + hle/service/audio/audio_in_manager.h hle/service/audio/audio_out.cpp hle/service/audio/audio_out.h - hle/service/audio/audio_renderer_manager.cpp - hle/service/audio/audio_renderer_manager.h + hle/service/audio/audio_out_manager.cpp + hle/service/audio/audio_out_manager.h hle/service/audio/audio_renderer.cpp hle/service/audio/audio_renderer.h - hle/service/audio/audio.cpp - hle/service/audio/audio.h + hle/service/audio/audio_renderer_manager.cpp + hle/service/audio/audio_renderer_manager.h hle/service/audio/errors.h - hle/service/audio/final_output_recorder_manager_for_applet.cpp - hle/service/audio/final_output_recorder_manager_for_applet.h hle/service/audio/final_output_recorder_manager.cpp hle/service/audio/final_output_recorder_manager.h - hle/service/audio/hardware_opus_decoder_manager.cpp - hle/service/audio/hardware_opus_decoder_manager.h + hle/service/audio/final_output_recorder_manager_for_applet.cpp + hle/service/audio/final_output_recorder_manager_for_applet.h hle/service/audio/hardware_opus_decoder.cpp hle/service/audio/hardware_opus_decoder.h + hle/service/audio/hardware_opus_decoder_manager.cpp + hle/service/audio/hardware_opus_decoder_manager.h hle/service/bcat/backend/backend.cpp hle/service/bcat/backend/backend.h hle/service/bcat/bcat.cpp @@ -628,14 +628,14 @@ add_library(core STATIC hle/service/filesystem/fsp/fs_i_filesystem.h hle/service/filesystem/fsp/fs_i_multi_commit_manager.cpp hle/service/filesystem/fsp/fs_i_multi_commit_manager.h + hle/service/filesystem/fsp/fs_i_program_registry.cpp + hle/service/filesystem/fsp/fs_i_program_registry.h hle/service/filesystem/fsp/fs_i_save_data_info_reader.cpp hle/service/filesystem/fsp/fs_i_save_data_info_reader.h hle/service/filesystem/fsp/fs_i_storage.cpp hle/service/filesystem/fsp/fs_i_storage.h hle/service/filesystem/fsp/fsp_ldr.cpp hle/service/filesystem/fsp/fsp_ldr.h - hle/service/filesystem/fsp/fs_i_program_registry.cpp - hle/service/filesystem/fsp/fs_i_program_registry.h hle/service/filesystem/fsp/fsp_srv.cpp hle/service/filesystem/fsp/fsp_srv.h hle/service/filesystem/fsp/fsp_types.h @@ -901,12 +901,12 @@ add_library(core STATIC hle/service/olsc/daemon_controller.h hle/service/olsc/native_handle_holder.cpp hle/service/olsc/native_handle_holder.h + hle/service/olsc/olsc.cpp + hle/service/olsc/olsc.h hle/service/olsc/olsc_service_for_application.cpp hle/service/olsc/olsc_service_for_application.h hle/service/olsc/olsc_service_for_system_service.cpp hle/service/olsc/olsc_service_for_system_service.h - hle/service/olsc/olsc.cpp - hle/service/olsc/olsc.h hle/service/olsc/remote_storage_controller.cpp hle/service/olsc/remote_storage_controller.h hle/service/olsc/transfer_task_list_controller.cpp @@ -930,10 +930,10 @@ add_library(core STATIC hle/service/os/mutex.h hle/service/pcie/pcie.cpp hle/service/pcie/pcie.h - hle/service/pctl/parental_control_service_factory.cpp - hle/service/pctl/parental_control_service_factory.h hle/service/pctl/parental_control_service.cpp hle/service/pctl/parental_control_service.h + hle/service/pctl/parental_control_service_factory.cpp + hle/service/pctl/parental_control_service_factory.h hle/service/pctl/pctl.cpp hle/service/pctl/pctl.h hle/service/pctl/pctl_results.h @@ -945,14 +945,14 @@ add_library(core STATIC hle/service/prepo/prepo.cpp hle/service/prepo/prepo.h hle/service/psc/ovln/ovln_types.h - hle/service/psc/ovln/receiver_service.cpp - hle/service/psc/ovln/receiver_service.h hle/service/psc/ovln/receiver.cpp hle/service/psc/ovln/receiver.h - hle/service/psc/ovln/sender_service.cpp - hle/service/psc/ovln/sender_service.h + hle/service/psc/ovln/receiver_service.cpp + hle/service/psc/ovln/receiver_service.h hle/service/psc/ovln/sender.cpp hle/service/psc/ovln/sender.h + hle/service/psc/ovln/sender_service.cpp + hle/service/psc/ovln/sender_service.h hle/service/psc/pm_control.cpp hle/service/psc/pm_control.h hle/service/psc/pm_module.cpp diff --git a/src/core/file_sys/fssystem/fs_types.h b/src/core/file_sys/fs_common.h similarity index 83% rename from src/core/file_sys/fssystem/fs_types.h rename to src/core/file_sys/fs_common.h index 43aeaf447b..0649e02476 100644 --- a/src/core/file_sys/fssystem/fs_types.h +++ b/src/core/file_sys/fs_common.h @@ -30,14 +30,6 @@ struct Int64 { } }; -struct HashSalt { - static constexpr size_t Size = 32; - - std::array value; -}; -static_assert(std::is_trivial_v); -static_assert(sizeof(HashSalt) == HashSalt::Size); - constexpr inline size_t IntegrityMinLayerCount = 2; constexpr inline size_t IntegrityMaxLayerCount = 7; constexpr inline size_t IntegrityLayerCountSave = 5; diff --git a/src/core/file_sys/fs_save_data_types.h b/src/core/file_sys/fs_save_data_types.h index 493dba34fb..12e5012bb9 100644 --- a/src/core/file_sys/fs_save_data_types.h +++ b/src/core/file_sys/fs_save_data_types.h @@ -41,6 +41,8 @@ enum class SaveDataRank : u8 { Secondary = 1, }; +enum class SaveDataFormatType : u8 { Normal = 0, NoJournal = 1 }; + struct SaveDataSize { u64 normal; u64 journal; @@ -68,28 +70,13 @@ enum class SaveDataMetaType : u8 { ExtensionContext = 2, }; -struct SaveDataMetaInfo { - u32 size; - SaveDataMetaType type; - INSERT_PADDING_BYTES(0xB); -}; -static_assert(std::is_trivially_copyable_v, - "Data type must be trivially copyable."); -static_assert(sizeof(SaveDataMetaInfo) == 0x10, "SaveDataMetaInfo has invalid size."); +struct HashSalt { + static constexpr size_t Size = 32; -struct SaveDataCreationInfo { - s64 size; - s64 journal_size; - s64 block_size; - u64 owner_id; - u32 flags; - SaveDataSpaceId space_id; - bool pseudo; - INSERT_PADDING_BYTES(0x1A); + std::array value; }; -static_assert(std::is_trivially_copyable_v, - "Data type must be trivially copyable."); -static_assert(sizeof(SaveDataCreationInfo) == 0x40, "SaveDataCreationInfo has invalid size."); +static_assert(std::is_trivially_copyable_v, "Data type must be trivially copyable."); +static_assert(sizeof(HashSalt) == HashSalt::Size); struct SaveDataAttribute { ProgramId program_id; @@ -149,12 +136,73 @@ constexpr inline bool operator!=(const SaveDataAttribute& lhs, const SaveDataAtt return !(lhs == rhs); } +struct SaveDataMetaInfo { + u32 size; + SaveDataMetaType type; + INSERT_PADDING_BYTES(0xB); +}; +static_assert(std::is_trivially_copyable_v, + "Data type must be trivially copyable."); +static_assert(sizeof(SaveDataMetaInfo) == 0x10, "SaveDataMetaInfo has invalid size."); + +struct SaveDataInfo { + u64_le save_id_unknown; + FileSys::SaveDataSpaceId space; + FileSys::SaveDataType type; + INSERT_PADDING_BYTES(0x6); + std::array user_id; + u64_le save_id; + u64_le title_id; + u64_le save_image_size; + u16_le index; + FileSys::SaveDataRank rank; + INSERT_PADDING_BYTES(0x25); +}; +static_assert(sizeof(SaveDataInfo) == 0x60, "SaveDataInfo has incorrect size."); + +struct SaveDataCreationInfo { + s64 size; + s64 journal_size; + s64 block_size; + u64 owner_id; + u32 flags; + SaveDataSpaceId space_id; + bool pseudo; + INSERT_PADDING_BYTES(0x1A); +}; +static_assert(std::is_trivially_copyable_v, + "Data type must be trivially copyable."); +static_assert(sizeof(SaveDataCreationInfo) == 0x40, "SaveDataCreationInfo has invalid size."); + +const u32 SaveDataCreationInfoV2Version = 0x00010000; +struct SaveDataCreationInfoV2 { + u32 version; + SaveDataAttribute attribute; + s64 size; + s64 journal_size; + s64 block_size; + u64 owner_id; + SaveDataFlags flags; + SaveDataSpaceId space_id; + SaveDataFormatType format_type; + INSERT_PADDING_BYTES(0x2); + bool is_hash_salt_enabled; + INSERT_PADDING_BYTES(0x3); + HashSalt hash_salt; + SaveDataMetaType meta_type; + INSERT_PADDING_BYTES(0x3); + s32 meta_size; + INSERT_PADDING_BYTES(0x164); +}; +static_assert(sizeof(SaveDataCreationInfoV2) == 0x200, + "SaveDataCreationInfoV2 has incorrect size."); + struct SaveDataExtraData { SaveDataAttribute attr; u64 owner_id; s64 timestamp; u32 flags; - INSERT_PADDING_BYTES(4); + INSERT_PADDING_BYTES(0x4); s64 available_size; s64 journal_size; s64 commit_id; diff --git a/src/core/file_sys/fssrv/impl/fssrv_program_info.cpp b/src/core/file_sys/fssrv/impl/fssrv_program_info.cpp index 3f38ea40b7..333fc55c9e 100644 --- a/src/core/file_sys/fssrv/impl/fssrv_program_info.cpp +++ b/src/core/file_sys/fssrv/impl/fssrv_program_info.cpp @@ -73,7 +73,7 @@ void InitializeInitialAndCurrentProcessId(Core::System& system) { ASSERT(Svc::GetProcessId(system, std::addressof(g_current_process_id), Svc::PseudoHandle::CurrentProcess) == ResultSuccess); - /* Set initialized. */ + // Set initialized g_initialized = true; } } diff --git a/src/core/file_sys/fssrv/impl/fssrv_save_data_properties.h b/src/core/file_sys/fssrv/impl/fssrv_save_data_properties.h index 4e33632f85..d15319bd01 100644 --- a/src/core/file_sys/fssrv/impl/fssrv_save_data_properties.h +++ b/src/core/file_sys/fssrv/impl/fssrv_save_data_properties.h @@ -7,7 +7,7 @@ #include "common/assert.h" #include "common/common_types.h" -#include "core/file_sys/savedata_factory.h" +#include "core/file_sys/fs_save_data_types.h" namespace FileSys::FsSrv::Impl { @@ -30,13 +30,13 @@ public: static bool IsJournalingSupported(SaveDataType type) { switch (type) { - case SaveDataType::SystemSaveData: - case SaveDataType::SaveData: - case SaveDataType::BcatDeliveryCacheStorage: - case SaveDataType::DeviceSaveData: - case SaveDataType::CacheStorage: + case SaveDataType::System: + case SaveDataType::Account: + case SaveDataType::Bcat: + case SaveDataType::Device: + case SaveDataType::Cache: return true; - case SaveDataType::TemporaryStorage: + case SaveDataType::Temporary: return false; default: UNREACHABLE(); @@ -46,13 +46,13 @@ public: static bool IsMultiCommitSupported(SaveDataType type) { switch (type) { - case SaveDataType::SystemSaveData: - case SaveDataType::SaveData: - case SaveDataType::DeviceSaveData: + case SaveDataType::System: + case SaveDataType::Account: + case SaveDataType::Device: return true; - case SaveDataType::BcatDeliveryCacheStorage: - case SaveDataType::TemporaryStorage: - case SaveDataType::CacheStorage: + case SaveDataType::Bcat: + case SaveDataType::Temporary: + case SaveDataType::Cache: return false; default: UNREACHABLE(); @@ -62,13 +62,13 @@ public: static bool IsSharedOpenNeeded(SaveDataType type) { switch (type) { - case SaveDataType::SystemSaveData: - case SaveDataType::BcatDeliveryCacheStorage: - case SaveDataType::TemporaryStorage: - case SaveDataType::CacheStorage: + case SaveDataType::System: + case SaveDataType::Bcat: + case SaveDataType::Temporary: + case SaveDataType::Cache: return false; - case SaveDataType::SaveData: - case SaveDataType::DeviceSaveData: + case SaveDataType::Account: + case SaveDataType::Device: return true; default: UNREACHABLE(); @@ -78,13 +78,13 @@ public: static bool CanUseIndexerReservedArea(SaveDataType type) { switch (type) { - case SaveDataType::SystemSaveData: + case SaveDataType::System: return true; - case SaveDataType::SaveData: - case SaveDataType::BcatDeliveryCacheStorage: - case SaveDataType::DeviceSaveData: - case SaveDataType::TemporaryStorage: - case SaveDataType::CacheStorage: + case SaveDataType::Account: + case SaveDataType::Bcat: + case SaveDataType::Device: + case SaveDataType::Temporary: + case SaveDataType::Cache: return false; default: UNREACHABLE(); @@ -94,13 +94,13 @@ public: static bool IsSystemSaveData(SaveDataType type) { switch (type) { - case SaveDataType::SystemSaveData: + case SaveDataType::System: return true; - case SaveDataType::SaveData: - case SaveDataType::BcatDeliveryCacheStorage: - case SaveDataType::DeviceSaveData: - case SaveDataType::TemporaryStorage: - case SaveDataType::CacheStorage: + case SaveDataType::Account: + case SaveDataType::Bcat: + case SaveDataType::Device: + case SaveDataType::Temporary: + case SaveDataType::Cache: return false; default: UNREACHABLE(); @@ -117,13 +117,13 @@ public: static bool IsWipingNeededAtCleanUp(const SaveDataInfo& info) { switch (info.type) { - case SaveDataType::SystemSaveData: + case SaveDataType::System: break; - case SaveDataType::SaveData: - case SaveDataType::BcatDeliveryCacheStorage: - case SaveDataType::DeviceSaveData: - case SaveDataType::TemporaryStorage: - case SaveDataType::CacheStorage: + case SaveDataType::Account: + case SaveDataType::Bcat: + case SaveDataType::Device: + case SaveDataType::Temporary: + case SaveDataType::Cache: return true; default: UNREACHABLE(); @@ -146,14 +146,14 @@ public: static bool IsValidSpaceIdForSaveDataMover(SaveDataType type, SaveDataSpaceId space_id) { switch (type) { - case SaveDataType::SystemSaveData: - case SaveDataType::SaveData: - case SaveDataType::BcatDeliveryCacheStorage: - case SaveDataType::DeviceSaveData: - case SaveDataType::TemporaryStorage: + case SaveDataType::System: + case SaveDataType::Account: + case SaveDataType::Bcat: + case SaveDataType::Device: + case SaveDataType::Temporary: return false; - case SaveDataType::CacheStorage: - return space_id == SaveDataSpaceId::NandUser || space_id == SaveDataSpaceId::SdCardUser; + case SaveDataType::Cache: + return space_id == SaveDataSpaceId::User || space_id == SaveDataSpaceId::SdUser; default: UNREACHABLE(); return false; @@ -162,26 +162,26 @@ public: static bool IsReconstructible(SaveDataType type, SaveDataSpaceId space_id) { switch (space_id) { - case SaveDataSpaceId::NandSystem: - case SaveDataSpaceId::NandUser: + case SaveDataSpaceId::System: + case SaveDataSpaceId::User: case SaveDataSpaceId::ProperSystem: case SaveDataSpaceId::SafeMode: switch (type) { - case SaveDataType::SystemSaveData: - case SaveDataType::SaveData: - case SaveDataType::DeviceSaveData: + case SaveDataType::System: + case SaveDataType::Account: + case SaveDataType::Device: return false; - case SaveDataType::BcatDeliveryCacheStorage: - case SaveDataType::TemporaryStorage: - case SaveDataType::CacheStorage: + case SaveDataType::Bcat: + case SaveDataType::Temporary: + case SaveDataType::Cache: return true; default: UNREACHABLE(); return false; } - case SaveDataSpaceId::SdCardSystem: - case SaveDataSpaceId::TemporaryStorage: - case SaveDataSpaceId::SdCardUser: + case SaveDataSpaceId::SdSystem: + case SaveDataSpaceId::Temporary: + case SaveDataSpaceId::SdUser: return true; default: UNREACHABLE(); diff --git a/src/core/file_sys/fssystem/fssystem_hierarchical_integrity_verification_storage.h b/src/core/file_sys/fssystem/fssystem_hierarchical_integrity_verification_storage.h index bd129db47a..cd10fbe5b4 100644 --- a/src/core/file_sys/fssystem/fssystem_hierarchical_integrity_verification_storage.h +++ b/src/core/file_sys/fssystem/fssystem_hierarchical_integrity_verification_storage.h @@ -4,8 +4,9 @@ #pragma once #include "common/alignment.h" +#include "core/file_sys/fs_common.h" +#include "core/file_sys/fs_save_data_types.h" #include "core/file_sys/fssystem/fs_i_storage.h" -#include "core/file_sys/fssystem/fs_types.h" #include "core/file_sys/fssystem/fssystem_alignment_matching_storage.h" #include "core/file_sys/fssystem/fssystem_integrity_verification_storage.h" #include "core/file_sys/vfs/vfs_offset.h" diff --git a/src/core/file_sys/fssystem/fssystem_integrity_verification_storage.h b/src/core/file_sys/fssystem/fssystem_integrity_verification_storage.h index 09f76799db..602083227a 100644 --- a/src/core/file_sys/fssystem/fssystem_integrity_verification_storage.h +++ b/src/core/file_sys/fssystem/fssystem_integrity_verification_storage.h @@ -5,8 +5,8 @@ #include +#include "core/file_sys/fs_common.h" #include "core/file_sys/fssystem/fs_i_storage.h" -#include "core/file_sys/fssystem/fs_types.h" namespace FileSys { diff --git a/src/core/file_sys/fssystem/fssystem_nca_header.h b/src/core/file_sys/fssystem/fssystem_nca_header.h index a02c5d881c..ccafff0c1b 100644 --- a/src/core/file_sys/fssystem/fssystem_nca_header.h +++ b/src/core/file_sys/fssystem/fssystem_nca_header.h @@ -8,7 +8,7 @@ #include "common/literals.h" #include "core/file_sys/errors.h" -#include "core/file_sys/fssystem/fs_types.h" +#include "core/file_sys/fs_common.h" namespace FileSys { diff --git a/src/core/hle/service/filesystem/fsp/fs_i_save_data_info_reader.cpp b/src/core/hle/service/filesystem/fsp/fs_i_save_data_info_reader.cpp index ff823586b3..94e13150a2 100644 --- a/src/core/hle/service/filesystem/fsp/fs_i_save_data_info_reader.cpp +++ b/src/core/hle/service/filesystem/fsp/fs_i_save_data_info_reader.cpp @@ -37,7 +37,7 @@ static u64 stoull_be(std::string_view str) { } Result ISaveDataInfoReader::ReadSaveDataInfo( - Out out_count, OutArray out_entries) { + Out out_count, OutArray out_entries) { LOG_DEBUG(Service_FS, "called"); // Calculate how many entries we can fit in the output buffer @@ -93,7 +93,7 @@ void ISaveDataInfoReader::FindNormalSaves(FileSys::SaveDataSpaceId space, if (save_id_numeric != 0) { // System Save Data - info.emplace_back(SaveDataInfo{ + info.emplace_back(FileSys::SaveDataInfo{ 0, space, FileSys::SaveDataType::System, @@ -112,7 +112,7 @@ void ISaveDataInfoReader::FindNormalSaves(FileSys::SaveDataSpaceId space, for (const auto& title_id : user_id->GetSubdirectories()) { const auto device = std::all_of(user_id_numeric.begin(), user_id_numeric.end(), [](u8 val) { return val == 0; }); - info.emplace_back(SaveDataInfo{ + info.emplace_back(FileSys::SaveDataInfo{ 0, space, device ? FileSys::SaveDataType::Device : FileSys::SaveDataType::Account, @@ -141,7 +141,7 @@ void ISaveDataInfoReader::FindTemporaryStorageSaves(FileSys::SaveDataSpaceId spa auto user_id_numeric = Common::HexStringToArray<0x10>(user_id->GetName()); std::reverse(user_id_numeric.begin(), user_id_numeric.end()); - info.emplace_back(SaveDataInfo{ + info.emplace_back(FileSys::SaveDataInfo{ 0, space, FileSys::SaveDataType::Temporary, diff --git a/src/core/hle/service/filesystem/fsp/fs_i_save_data_info_reader.h b/src/core/hle/service/filesystem/fsp/fs_i_save_data_info_reader.h index e45ad852ba..b80160764b 100644 --- a/src/core/hle/service/filesystem/fsp/fs_i_save_data_info_reader.h +++ b/src/core/hle/service/filesystem/fsp/fs_i_save_data_info_reader.h @@ -5,6 +5,7 @@ #include #include "common/common_types.h" +#include "core/file_sys/fs_save_data_types.h" #include "core/hle/service/cmif_types.h" #include "core/hle/service/service.h" @@ -19,23 +20,8 @@ public: FileSys::SaveDataSpaceId space); ~ISaveDataInfoReader() override; - struct SaveDataInfo { - u64_le save_id_unknown; - FileSys::SaveDataSpaceId space; - FileSys::SaveDataType type; - INSERT_PADDING_BYTES(0x6); - std::array user_id; - u64_le save_id; - u64_le title_id; - u64_le save_image_size; - u16_le index; - FileSys::SaveDataRank rank; - INSERT_PADDING_BYTES(0x25); - }; - static_assert(sizeof(SaveDataInfo) == 0x60, "SaveDataInfo has incorrect size."); - Result ReadSaveDataInfo(Out out_count, - OutArray out_entries); + OutArray out_entries); private: void FindAllSaves(FileSys::SaveDataSpaceId space); @@ -43,7 +29,7 @@ private: void FindTemporaryStorageSaves(FileSys::SaveDataSpaceId space, const FileSys::VirtualDir& type); std::shared_ptr save_data_controller; - std::vector info; + std::vector info; u64 next_entry_index = 0; }; diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp index 2232842554..0a7cf71fc0 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp @@ -225,23 +225,23 @@ Result FSP_SRV::OpenSdCardFileSystem(OutInterface out_interface) { R_SUCCEED(); } -Result FSP_SRV::CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_create_struct, - FileSys::SaveDataAttribute save_struct, u128 uid) { - LOG_DEBUG(Service_FS, "called save_struct = {}, uid = {:016X}{:016X}", save_struct.DebugInfo(), - uid[1], uid[0]); +Result FSP_SRV::CreateSaveDataFileSystem(FileSys::SaveDataMetaInfo meta_info, + FileSys::SaveDataCreationInfo creation_info, + FileSys::SaveDataAttribute attribute) { + LOG_DEBUG(Service_FS, "called save_struct = {}", attribute.DebugInfo()); FileSys::VirtualDir save_data_dir{}; R_RETURN(save_data_controller->CreateSaveData(&save_data_dir, FileSys::SaveDataSpaceId::User, - save_struct)); + attribute)); } Result FSP_SRV::CreateSaveDataFileSystemBySystemSaveDataId( - FileSys::SaveDataAttribute save_struct, FileSys::SaveDataCreationInfo save_create_struct) { - LOG_DEBUG(Service_FS, "called save_struct = {}", save_struct.DebugInfo()); + FileSys::SaveDataAttribute attribute, FileSys::SaveDataCreationInfo save_create_struct) { + LOG_DEBUG(Service_FS, "called save_struct = {}", attribute.DebugInfo()); FileSys::VirtualDir save_data_dir{}; R_RETURN(save_data_controller->CreateSaveData(&save_data_dir, FileSys::SaveDataSpaceId::System, - save_struct)); + attribute)); } Result FSP_SRV::OpenSaveDataFileSystem(OutInterface out_interface, diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.h b/src/core/hle/service/filesystem/fsp/fsp_srv.h index 83d9cb51c7..9924c27fab 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.h +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.h @@ -51,10 +51,11 @@ private: Result OpenFileSystemWithPatch(OutInterface out_interface, FileSystemProxyType type, u64 open_program_id); Result OpenSdCardFileSystem(OutInterface out_interface); - Result CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_create_struct, - FileSys::SaveDataAttribute save_struct, u128 uid); + Result CreateSaveDataFileSystem(FileSys::SaveDataMetaInfo meta_info, + FileSys::SaveDataCreationInfo creation_info, + FileSys::SaveDataAttribute attribute); Result CreateSaveDataFileSystemBySystemSaveDataId( - FileSys::SaveDataAttribute save_struct, FileSys::SaveDataCreationInfo save_create_struct); + FileSys::SaveDataAttribute attribute, FileSys::SaveDataCreationInfo save_create_struct); Result OpenSaveDataFileSystem(OutInterface out_interface, FileSys::SaveDataSpaceId space_id, FileSys::SaveDataAttribute attribute);