summaryrefslogtreecommitdiff
path: root/src/core/loader
diff options
context:
space:
mode:
authorGravatar bunnei2019-01-20 13:26:27 -0500
committerGravatar GitHub2019-01-20 13:26:27 -0500
commitf9e69faf4a729819a7a807b84af81514ccab49c0 (patch)
tree78526786b052254ff8dc437842888df6190cb568 /src/core/loader
parentMerge pull request #2031 from lioncash/priv (diff)
parentloader: Propagate NCA logo section to ReadBanner and ReadLogo (diff)
downloadyuzu-f9e69faf4a729819a7a807b84af81514ccab49c0.tar.gz
yuzu-f9e69faf4a729819a7a807b84af81514ccab49c0.tar.xz
yuzu-f9e69faf4a729819a7a807b84af81514ccab49c0.zip
Merge pull request #2025 from DarkLordZach/loader-banner-logo
loader: Add getters for application banner and logo
Diffstat (limited to 'src/core/loader')
-rw-r--r--src/core/loader/loader.h4
-rw-r--r--src/core/loader/nax.cpp9
-rw-r--r--src/core/loader/nax.h3
-rw-r--r--src/core/loader/nca.cpp19
-rw-r--r--src/core/loader/nca.h3
-rw-r--r--src/core/loader/nsp.cpp9
-rw-r--r--src/core/loader/nsp.h3
-rw-r--r--src/core/loader/xci.cpp8
-rw-r--r--src/core/loader/xci.h3
9 files changed, 61 insertions, 0 deletions
diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h
index 01f984098..bb925f4a6 100644
--- a/src/core/loader/loader.h
+++ b/src/core/loader/loader.h
@@ -178,6 +178,8 @@ public:
178 178
179 /** 179 /**
180 * Get the banner (typically banner section) of the application 180 * Get the banner (typically banner section) of the application
181 * In the context of NX, this is the animation that displays in the bottom right of the screen
182 * when a game boots. Stored in GIF format.
181 * @param buffer Reference to buffer to store data 183 * @param buffer Reference to buffer to store data
182 * @return ResultStatus result of function 184 * @return ResultStatus result of function
183 */ 185 */
@@ -187,6 +189,8 @@ public:
187 189
188 /** 190 /**
189 * Get the logo (typically logo section) of the application 191 * Get the logo (typically logo section) of the application
192 * In the context of NX, this is the static image that displays in the top left of the screen
193 * when a game boots. Stored in JPEG format.
190 * @param buffer Reference to buffer to store data 194 * @param buffer Reference to buffer to store data
191 * @return ResultStatus result of function 195 * @return ResultStatus result of function
192 */ 196 */
diff --git a/src/core/loader/nax.cpp b/src/core/loader/nax.cpp
index a093e3d36..93a970d10 100644
--- a/src/core/loader/nax.cpp
+++ b/src/core/loader/nax.cpp
@@ -79,4 +79,13 @@ u64 AppLoader_NAX::ReadRomFSIVFCOffset() const {
79ResultStatus AppLoader_NAX::ReadProgramId(u64& out_program_id) { 79ResultStatus AppLoader_NAX::ReadProgramId(u64& out_program_id) {
80 return nca_loader->ReadProgramId(out_program_id); 80 return nca_loader->ReadProgramId(out_program_id);
81} 81}
82
83ResultStatus AppLoader_NAX::ReadBanner(std::vector<u8>& buffer) {
84 return nca_loader->ReadBanner(buffer);
85}
86
87ResultStatus AppLoader_NAX::ReadLogo(std::vector<u8>& buffer) {
88 return nca_loader->ReadLogo(buffer);
89}
90
82} // namespace Loader 91} // namespace Loader
diff --git a/src/core/loader/nax.h b/src/core/loader/nax.h
index 0a97511b8..f40079574 100644
--- a/src/core/loader/nax.h
+++ b/src/core/loader/nax.h
@@ -39,6 +39,9 @@ public:
39 u64 ReadRomFSIVFCOffset() const override; 39 u64 ReadRomFSIVFCOffset() const override;
40 ResultStatus ReadProgramId(u64& out_program_id) override; 40 ResultStatus ReadProgramId(u64& out_program_id) override;
41 41
42 ResultStatus ReadBanner(std::vector<u8>& buffer) override;
43 ResultStatus ReadLogo(std::vector<u8>& buffer) override;
44
42private: 45private:
43 std::unique_ptr<FileSys::NAX> nax; 46 std::unique_ptr<FileSys::NAX> nax;
44 std::unique_ptr<AppLoader_NCA> nca_loader; 47 std::unique_ptr<AppLoader_NCA> nca_loader;
diff --git a/src/core/loader/nca.cpp b/src/core/loader/nca.cpp
index 7e1b0d84f..ce8196fcf 100644
--- a/src/core/loader/nca.cpp
+++ b/src/core/loader/nca.cpp
@@ -84,4 +84,23 @@ ResultStatus AppLoader_NCA::ReadProgramId(u64& out_program_id) {
84 return ResultStatus::Success; 84 return ResultStatus::Success;
85} 85}
86 86
87ResultStatus AppLoader_NCA::ReadBanner(std::vector<u8>& buffer) {
88 if (nca == nullptr || nca->GetStatus() != ResultStatus::Success)
89 return ResultStatus::ErrorNotInitialized;
90 const auto logo = nca->GetLogoPartition();
91 if (logo == nullptr)
92 return ResultStatus::ErrorNoIcon;
93 buffer = logo->GetFile("StartupMovie.gif")->ReadAllBytes();
94 return ResultStatus::Success;
95}
96
97ResultStatus AppLoader_NCA::ReadLogo(std::vector<u8>& buffer) {
98 if (nca == nullptr || nca->GetStatus() != ResultStatus::Success)
99 return ResultStatus::ErrorNotInitialized;
100 const auto logo = nca->GetLogoPartition();
101 if (logo == nullptr)
102 return ResultStatus::ErrorNoIcon;
103 buffer = logo->GetFile("NintendoLogo.png")->ReadAllBytes();
104 return ResultStatus::Success;
105}
87} // namespace Loader 106} // namespace Loader
diff --git a/src/core/loader/nca.h b/src/core/loader/nca.h
index cbbe701d2..b9f077468 100644
--- a/src/core/loader/nca.h
+++ b/src/core/loader/nca.h
@@ -39,6 +39,9 @@ public:
39 u64 ReadRomFSIVFCOffset() const override; 39 u64 ReadRomFSIVFCOffset() const override;
40 ResultStatus ReadProgramId(u64& out_program_id) override; 40 ResultStatus ReadProgramId(u64& out_program_id) override;
41 41
42 ResultStatus ReadBanner(std::vector<u8>& buffer) override;
43 ResultStatus ReadLogo(std::vector<u8>& buffer) override;
44
42private: 45private:
43 std::unique_ptr<FileSys::NCA> nca; 46 std::unique_ptr<FileSys::NCA> nca;
44 std::unique_ptr<AppLoader_DeconstructedRomDirectory> directory_loader; 47 std::unique_ptr<AppLoader_DeconstructedRomDirectory> directory_loader;
diff --git a/src/core/loader/nsp.cpp b/src/core/loader/nsp.cpp
index 7fcb12aa2..7da1f8960 100644
--- a/src/core/loader/nsp.cpp
+++ b/src/core/loader/nsp.cpp
@@ -166,4 +166,13 @@ ResultStatus AppLoader_NSP::ReadManualRomFS(FileSys::VirtualFile& file) {
166 file = nca->GetRomFS(); 166 file = nca->GetRomFS();
167 return file == nullptr ? ResultStatus::ErrorNoRomFS : ResultStatus::Success; 167 return file == nullptr ? ResultStatus::ErrorNoRomFS : ResultStatus::Success;
168} 168}
169
170ResultStatus AppLoader_NSP::ReadBanner(std::vector<u8>& buffer) {
171 return secondary_loader->ReadBanner(buffer);
172}
173
174ResultStatus AppLoader_NSP::ReadLogo(std::vector<u8>& buffer) {
175 return secondary_loader->ReadLogo(buffer);
176}
177
169} // namespace Loader 178} // namespace Loader
diff --git a/src/core/loader/nsp.h b/src/core/loader/nsp.h
index b6b309400..953a1b508 100644
--- a/src/core/loader/nsp.h
+++ b/src/core/loader/nsp.h
@@ -46,6 +46,9 @@ public:
46 ResultStatus ReadControlData(FileSys::NACP& nacp) override; 46 ResultStatus ReadControlData(FileSys::NACP& nacp) override;
47 ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override; 47 ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override;
48 48
49 ResultStatus ReadBanner(std::vector<u8>& buffer) override;
50 ResultStatus ReadLogo(std::vector<u8>& buffer) override;
51
49private: 52private:
50 std::unique_ptr<FileSys::NSP> nsp; 53 std::unique_ptr<FileSys::NSP> nsp;
51 std::unique_ptr<AppLoader> secondary_loader; 54 std::unique_ptr<AppLoader> secondary_loader;
diff --git a/src/core/loader/xci.cpp b/src/core/loader/xci.cpp
index ff60a3756..89f7bbf77 100644
--- a/src/core/loader/xci.cpp
+++ b/src/core/loader/xci.cpp
@@ -137,4 +137,12 @@ ResultStatus AppLoader_XCI::ReadManualRomFS(FileSys::VirtualFile& file) {
137 return file == nullptr ? ResultStatus::ErrorNoRomFS : ResultStatus::Success; 137 return file == nullptr ? ResultStatus::ErrorNoRomFS : ResultStatus::Success;
138} 138}
139 139
140ResultStatus AppLoader_XCI::ReadBanner(std::vector<u8>& buffer) {
141 return nca_loader->ReadBanner(buffer);
142}
143
144ResultStatus AppLoader_XCI::ReadLogo(std::vector<u8>& buffer) {
145 return nca_loader->ReadLogo(buffer);
146}
147
140} // namespace Loader 148} // namespace Loader
diff --git a/src/core/loader/xci.h b/src/core/loader/xci.h
index e18531c93..d6995b61e 100644
--- a/src/core/loader/xci.h
+++ b/src/core/loader/xci.h
@@ -46,6 +46,9 @@ public:
46 ResultStatus ReadControlData(FileSys::NACP& control) override; 46 ResultStatus ReadControlData(FileSys::NACP& control) override;
47 ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override; 47 ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override;
48 48
49 ResultStatus ReadBanner(std::vector<u8>& buffer) override;
50 ResultStatus ReadLogo(std::vector<u8>& buffer) override;
51
49private: 52private:
50 std::unique_ptr<FileSys::XCI> xci; 53 std::unique_ptr<FileSys::XCI> xci;
51 std::unique_ptr<AppLoader_NCA> nca_loader; 54 std::unique_ptr<AppLoader_NCA> nca_loader;