diff options
| author | 2018-12-24 16:19:41 -0500 | |
|---|---|---|
| committer | 2018-12-28 15:32:39 -0500 | |
| commit | 4c20a3982807386a2e5fc6f536498b73e6f4f6ce (patch) | |
| tree | 0b26e40304df106c4e0b1ade9fa60bccdd8b240b /src/core | |
| parent | hid: Make Hid service accessible and add GetPressState (diff) | |
| download | yuzu-4c20a3982807386a2e5fc6f536498b73e6f4f6ce.tar.gz yuzu-4c20a3982807386a2e5fc6f536498b73e6f4f6ce.tar.xz yuzu-4c20a3982807386a2e5fc6f536498b73e6f4f6ce.zip | |
loader: Add accessor for Manual RomFS
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/loader/loader.h | 9 | ||||
| -rw-r--r-- | src/core/loader/nsp.cpp | 8 | ||||
| -rw-r--r-- | src/core/loader/nsp.h | 2 | ||||
| -rw-r--r-- | src/core/loader/xci.cpp | 9 | ||||
| -rw-r--r-- | src/core/loader/xci.h | 2 |
5 files changed, 30 insertions, 0 deletions
diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 30eacd803..01f984098 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h | |||
| @@ -259,6 +259,15 @@ public: | |||
| 259 | return ResultStatus::ErrorNotImplemented; | 259 | return ResultStatus::ErrorNotImplemented; |
| 260 | } | 260 | } |
| 261 | 261 | ||
| 262 | /** | ||
| 263 | * Get the RomFS of the manual of the application | ||
| 264 | * @param file The raw manual RomFS of the game | ||
| 265 | * @return ResultStatus result of function | ||
| 266 | */ | ||
| 267 | virtual ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) { | ||
| 268 | return ResultStatus::ErrorNotImplemented; | ||
| 269 | } | ||
| 270 | |||
| 262 | protected: | 271 | protected: |
| 263 | FileSys::VirtualFile file; | 272 | FileSys::VirtualFile file; |
| 264 | bool is_loaded = false; | 273 | bool is_loaded = false; |
diff --git a/src/core/loader/nsp.cpp b/src/core/loader/nsp.cpp index 4d4b44571..7fcb12aa2 100644 --- a/src/core/loader/nsp.cpp +++ b/src/core/loader/nsp.cpp | |||
| @@ -158,4 +158,12 @@ ResultStatus AppLoader_NSP::ReadControlData(FileSys::NACP& nacp) { | |||
| 158 | nacp = *nacp_file; | 158 | nacp = *nacp_file; |
| 159 | return ResultStatus::Success; | 159 | return ResultStatus::Success; |
| 160 | } | 160 | } |
| 161 | |||
| 162 | ResultStatus AppLoader_NSP::ReadManualRomFS(FileSys::VirtualFile& file) { | ||
| 163 | const auto nca = nsp->GetNCA(nsp->GetProgramTitleID(), FileSys::ContentRecordType::Manual); | ||
| 164 | if (nsp->GetStatus() != ResultStatus::Success || nca == nullptr) | ||
| 165 | return ResultStatus::ErrorNoRomFS; | ||
| 166 | file = nca->GetRomFS(); | ||
| 167 | return file == nullptr ? ResultStatus::ErrorNoRomFS : ResultStatus::Success; | ||
| 168 | } | ||
| 161 | } // namespace Loader | 169 | } // namespace Loader |
diff --git a/src/core/loader/nsp.h b/src/core/loader/nsp.h index 32eb0193d..0841578d4 100644 --- a/src/core/loader/nsp.h +++ b/src/core/loader/nsp.h | |||
| @@ -44,6 +44,8 @@ public: | |||
| 44 | ResultStatus ReadIcon(std::vector<u8>& buffer) override; | 44 | ResultStatus ReadIcon(std::vector<u8>& buffer) override; |
| 45 | ResultStatus ReadTitle(std::string& title) override; | 45 | ResultStatus ReadTitle(std::string& title) override; |
| 46 | ResultStatus ReadControlData(FileSys::NACP& nacp) override; | 46 | ResultStatus ReadControlData(FileSys::NACP& nacp) override; |
| 47 | ResultStatus ReadDeveloper(std::string& developer) override; | ||
| 48 | ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override; | ||
| 47 | 49 | ||
| 48 | private: | 50 | private: |
| 49 | std::unique_ptr<FileSys::NSP> nsp; | 51 | std::unique_ptr<FileSys::NSP> nsp; |
diff --git a/src/core/loader/xci.cpp b/src/core/loader/xci.cpp index e67e43c69..ff60a3756 100644 --- a/src/core/loader/xci.cpp +++ b/src/core/loader/xci.cpp | |||
| @@ -128,4 +128,13 @@ ResultStatus AppLoader_XCI::ReadControlData(FileSys::NACP& control) { | |||
| 128 | return ResultStatus::Success; | 128 | return ResultStatus::Success; |
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | ResultStatus AppLoader_XCI::ReadManualRomFS(FileSys::VirtualFile& file) { | ||
| 132 | const auto nca = xci->GetSecurePartitionNSP()->GetNCA(xci->GetProgramTitleID(), | ||
| 133 | FileSys::ContentRecordType::Manual); | ||
| 134 | if (xci->GetStatus() != ResultStatus::Success || nca == nullptr) | ||
| 135 | return ResultStatus::ErrorXCIMissingPartition; | ||
| 136 | file = nca->GetRomFS(); | ||
| 137 | return file == nullptr ? ResultStatus::ErrorNoRomFS : ResultStatus::Success; | ||
| 138 | } | ||
| 139 | |||
| 131 | } // namespace Loader | 140 | } // namespace Loader |
diff --git a/src/core/loader/xci.h b/src/core/loader/xci.h index 9d3923f62..3e6e19a44 100644 --- a/src/core/loader/xci.h +++ b/src/core/loader/xci.h | |||
| @@ -44,6 +44,8 @@ public: | |||
| 44 | ResultStatus ReadIcon(std::vector<u8>& buffer) override; | 44 | ResultStatus ReadIcon(std::vector<u8>& buffer) override; |
| 45 | ResultStatus ReadTitle(std::string& title) override; | 45 | ResultStatus ReadTitle(std::string& title) override; |
| 46 | ResultStatus ReadControlData(FileSys::NACP& control) override; | 46 | ResultStatus ReadControlData(FileSys::NACP& control) override; |
| 47 | ResultStatus ReadDeveloper(std::string& developer) override; | ||
| 48 | ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override; | ||
| 47 | 49 | ||
| 48 | private: | 50 | private: |
| 49 | std::unique_ptr<FileSys::XCI> xci; | 51 | std::unique_ptr<FileSys::XCI> xci; |