diff options
| author | 2020-05-16 12:39:58 -0400 | |
|---|---|---|
| committer | 2020-05-16 12:39:58 -0400 | |
| commit | 65010607b7a474e677360a5a465a3169fec41ba0 (patch) | |
| tree | 1e101dc9ecbfcfdf1da6f848e002dc21df0b3a96 /src/core/file_sys | |
| parent | Merge pull request #3945 from ogniK5377/nvflinger-pixformat (diff) | |
| parent | service: fsp_srv: Stub implementation of OpenMultiCommitManager. (diff) | |
| download | yuzu-65010607b7a474e677360a5a465a3169fec41ba0.tar.gz yuzu-65010607b7a474e677360a5a465a3169fec41ba0.tar.xz yuzu-65010607b7a474e677360a5a465a3169fec41ba0.zip | |
Merge pull request #3665 from bunnei/device-save
FS: Improve emulation of device saves
Diffstat (limited to 'src/core/file_sys')
| -rw-r--r-- | src/core/file_sys/control_metadata.cpp | 4 | ||||
| -rw-r--r-- | src/core/file_sys/control_metadata.h | 1 | ||||
| -rw-r--r-- | src/core/file_sys/savedata_factory.cpp | 9 |
3 files changed, 11 insertions, 3 deletions
diff --git a/src/core/file_sys/control_metadata.cpp b/src/core/file_sys/control_metadata.cpp index f155a1341..63cd2eead 100644 --- a/src/core/file_sys/control_metadata.cpp +++ b/src/core/file_sys/control_metadata.cpp | |||
| @@ -95,6 +95,10 @@ u32 NACP::GetSupportedLanguages() const { | |||
| 95 | return raw.supported_languages; | 95 | return raw.supported_languages; |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | u64 NACP::GetDeviceSaveDataSize() const { | ||
| 99 | return raw.device_save_data_size; | ||
| 100 | } | ||
| 101 | |||
| 98 | std::vector<u8> NACP::GetRawBytes() const { | 102 | std::vector<u8> NACP::GetRawBytes() const { |
| 99 | std::vector<u8> out(sizeof(RawNACP)); | 103 | std::vector<u8> out(sizeof(RawNACP)); |
| 100 | std::memcpy(out.data(), &raw, sizeof(RawNACP)); | 104 | std::memcpy(out.data(), &raw, sizeof(RawNACP)); |
diff --git a/src/core/file_sys/control_metadata.h b/src/core/file_sys/control_metadata.h index 2d8c251ac..e37b2fadf 100644 --- a/src/core/file_sys/control_metadata.h +++ b/src/core/file_sys/control_metadata.h | |||
| @@ -113,6 +113,7 @@ public: | |||
| 113 | u32 GetSupportedLanguages() const; | 113 | u32 GetSupportedLanguages() const; |
| 114 | std::vector<u8> GetRawBytes() const; | 114 | std::vector<u8> GetRawBytes() const; |
| 115 | bool GetUserAccountSwitchLock() const; | 115 | bool GetUserAccountSwitchLock() const; |
| 116 | u64 GetDeviceSaveDataSize() const; | ||
| 116 | 117 | ||
| 117 | private: | 118 | private: |
| 118 | RawNACP raw{}; | 119 | RawNACP raw{}; |
diff --git a/src/core/file_sys/savedata_factory.cpp b/src/core/file_sys/savedata_factory.cpp index f3def93ab..adfd2c1a4 100644 --- a/src/core/file_sys/savedata_factory.cpp +++ b/src/core/file_sys/savedata_factory.cpp | |||
| @@ -57,7 +57,8 @@ void PrintSaveDataDescriptorWarnings(SaveDataDescriptor meta) { | |||
| 57 | bool ShouldSaveDataBeAutomaticallyCreated(SaveDataSpaceId space, const SaveDataDescriptor& desc) { | 57 | bool ShouldSaveDataBeAutomaticallyCreated(SaveDataSpaceId space, const SaveDataDescriptor& desc) { |
| 58 | return desc.type == SaveDataType::CacheStorage || desc.type == SaveDataType::TemporaryStorage || | 58 | return desc.type == SaveDataType::CacheStorage || desc.type == SaveDataType::TemporaryStorage || |
| 59 | (space == SaveDataSpaceId::NandUser && ///< Normal Save Data -- Current Title & User | 59 | (space == SaveDataSpaceId::NandUser && ///< Normal Save Data -- Current Title & User |
| 60 | desc.type == SaveDataType::SaveData && desc.title_id == 0 && desc.save_id == 0); | 60 | (desc.type == SaveDataType::SaveData || desc.type == SaveDataType::DeviceSaveData) && |
| 61 | desc.title_id == 0 && desc.save_id == 0); | ||
| 61 | } | 62 | } |
| 62 | 63 | ||
| 63 | } // Anonymous namespace | 64 | } // Anonymous namespace |
| @@ -139,8 +140,10 @@ std::string SaveDataFactory::GetFullPath(SaveDataSpaceId space, SaveDataType typ | |||
| 139 | u128 user_id, u64 save_id) { | 140 | u128 user_id, u64 save_id) { |
| 140 | // According to switchbrew, if a save is of type SaveData and the title id field is 0, it should | 141 | // According to switchbrew, if a save is of type SaveData and the title id field is 0, it should |
| 141 | // be interpreted as the title id of the current process. | 142 | // be interpreted as the title id of the current process. |
| 142 | if (type == SaveDataType::SaveData && title_id == 0) { | 143 | if (type == SaveDataType::SaveData || type == SaveDataType::DeviceSaveData) { |
| 143 | title_id = Core::System::GetInstance().CurrentProcess()->GetTitleID(); | 144 | if (title_id == 0) { |
| 145 | title_id = Core::System::GetInstance().CurrentProcess()->GetTitleID(); | ||
| 146 | } | ||
| 144 | } | 147 | } |
| 145 | 148 | ||
| 146 | std::string out = GetSaveDataSpaceIdPath(space); | 149 | std::string out = GetSaveDataSpaceIdPath(space); |