summaryrefslogtreecommitdiffstats
path: root/src/core/loader
diff options
context:
space:
mode:
authorMerryMage <MerryMage@users.noreply.github.com>2016-12-15 10:54:25 +0100
committerMerryMage <MerryMage@users.noreply.github.com>2016-12-15 19:42:38 +0100
commit351b5d23f4b332a36e4b5c7668809deae4de4af1 (patch)
treee0f327f749e3caf50a122caff856789d87ce67ff /src/core/loader
parentarchive_source_sd_savedata: Add static method to get a specific save data path (diff)
downloadyuzu-351b5d23f4b332a36e4b5c7668809deae4de4af1.tar
yuzu-351b5d23f4b332a36e4b5c7668809deae4de4af1.tar.gz
yuzu-351b5d23f4b332a36e4b5c7668809deae4de4af1.tar.bz2
yuzu-351b5d23f4b332a36e4b5c7668809deae4de4af1.tar.lz
yuzu-351b5d23f4b332a36e4b5c7668809deae4de4af1.tar.xz
yuzu-351b5d23f4b332a36e4b5c7668809deae4de4af1.tar.zst
yuzu-351b5d23f4b332a36e4b5c7668809deae4de4af1.zip
Diffstat (limited to 'src/core/loader')
-rw-r--r--src/core/loader/loader.h9
-rw-r--r--src/core/loader/ncch.cpp12
-rw-r--r--src/core/loader/ncch.h7
3 files changed, 28 insertions, 0 deletions
diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h
index 5e3d46638..a6c2a745f 100644
--- a/src/core/loader/loader.h
+++ b/src/core/loader/loader.h
@@ -144,6 +144,15 @@ public:
}
/**
+ * Get the program id of the application
+ * @param out_program_id Reference to store program id into
+ * @return ResultStatus result of function
+ */
+ virtual ResultStatus ReadProgramId(u64& out_program_id) {
+ return ResultStatus::ErrorNotImplemented;
+ }
+
+ /**
* Get the RomFS of the application
* Since the RomFS can be huge, we return a file reference instead of copying to a buffer
* @param romfs_file The file containing the RomFS
diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp
index d4be61e0e..6f2164428 100644
--- a/src/core/loader/ncch.cpp
+++ b/src/core/loader/ncch.cpp
@@ -344,6 +344,18 @@ ResultStatus AppLoader_NCCH::ReadLogo(std::vector<u8>& buffer) {
return LoadSectionExeFS("logo", buffer);
}
+ResultStatus AppLoader_NCCH::ReadProgramId(u64& out_program_id) {
+ if (!file.IsOpen())
+ return ResultStatus::Error;
+
+ ResultStatus result = LoadExeFS();
+ if (result != ResultStatus::Success)
+ return result;
+
+ out_program_id = ncch_header.program_id;
+ return ResultStatus::Success;
+}
+
ResultStatus AppLoader_NCCH::ReadRomFS(std::shared_ptr<FileUtil::IOFile>& romfs_file, u64& offset,
u64& size) {
if (!file.IsOpen())
diff --git a/src/core/loader/ncch.h b/src/core/loader/ncch.h
index bcf3ae6e3..6c93d46d8 100644
--- a/src/core/loader/ncch.h
+++ b/src/core/loader/ncch.h
@@ -220,6 +220,13 @@ public:
ResultStatus ReadLogo(std::vector<u8>& buffer) override;
/**
+ * Get the program id of the application
+ * @param out_program_id Reference to store program id into
+ * @return ResultStatus result of function
+ */
+ ResultStatus ReadProgramId(u64& out_program_id) override;
+
+ /**
* Get the RomFS of the application
* @param romfs_file Reference to buffer to store data
* @param offset Offset in the file to the RomFS