summaryrefslogtreecommitdiff
path: root/src/core/loader
diff options
context:
space:
mode:
authorGravatar Zach Hilman2018-12-24 16:19:41 -0500
committerGravatar Zach Hilman2018-12-28 15:32:39 -0500
commit4c20a3982807386a2e5fc6f536498b73e6f4f6ce (patch)
tree0b26e40304df106c4e0b1ade9fa60bccdd8b240b /src/core/loader
parenthid: Make Hid service accessible and add GetPressState (diff)
downloadyuzu-4c20a3982807386a2e5fc6f536498b73e6f4f6ce.tar.gz
yuzu-4c20a3982807386a2e5fc6f536498b73e6f4f6ce.tar.xz
yuzu-4c20a3982807386a2e5fc6f536498b73e6f4f6ce.zip
loader: Add accessor for Manual RomFS
Diffstat (limited to 'src/core/loader')
-rw-r--r--src/core/loader/loader.h9
-rw-r--r--src/core/loader/nsp.cpp8
-rw-r--r--src/core/loader/nsp.h2
-rw-r--r--src/core/loader/xci.cpp9
-rw-r--r--src/core/loader/xci.h2
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
262protected: 271protected:
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
162ResultStatus 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
48private: 50private:
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
131ResultStatus 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
48private: 50private:
49 std::unique_ptr<FileSys::XCI> xci; 51 std::unique_ptr<FileSys::XCI> xci;