loader: Propagate NCA logo section to ReadBanner and ReadLogo
This commit is contained in:
parent
318bf7c8e3
commit
b273b19576
|
@ -178,6 +178,8 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the banner (typically banner section) of the application
|
* Get the banner (typically banner section) of the application
|
||||||
|
* In the context of NX, this is the animation that displays in the bottom right of the screen
|
||||||
|
* when a game boots. Stored in GIF format.
|
||||||
* @param buffer Reference to buffer to store data
|
* @param buffer Reference to buffer to store data
|
||||||
* @return ResultStatus result of function
|
* @return ResultStatus result of function
|
||||||
*/
|
*/
|
||||||
|
@ -187,6 +189,8 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the logo (typically logo section) of the application
|
* Get the logo (typically logo section) of the application
|
||||||
|
* In the context of NX, this is the static image that displays in the top left of the screen
|
||||||
|
* when a game boots. Stored in JPEG format.
|
||||||
* @param buffer Reference to buffer to store data
|
* @param buffer Reference to buffer to store data
|
||||||
* @return ResultStatus result of function
|
* @return ResultStatus result of function
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -79,4 +79,13 @@ u64 AppLoader_NAX::ReadRomFSIVFCOffset() const {
|
||||||
ResultStatus AppLoader_NAX::ReadProgramId(u64& out_program_id) {
|
ResultStatus AppLoader_NAX::ReadProgramId(u64& out_program_id) {
|
||||||
return nca_loader->ReadProgramId(out_program_id);
|
return nca_loader->ReadProgramId(out_program_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ResultStatus AppLoader_NAX::ReadBanner(std::vector<u8>& buffer) {
|
||||||
|
return nca_loader->ReadBanner(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
ResultStatus AppLoader_NAX::ReadLogo(std::vector<u8>& buffer) {
|
||||||
|
return nca_loader->ReadLogo(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Loader
|
} // namespace Loader
|
||||||
|
|
|
@ -39,6 +39,9 @@ public:
|
||||||
u64 ReadRomFSIVFCOffset() const override;
|
u64 ReadRomFSIVFCOffset() const override;
|
||||||
ResultStatus ReadProgramId(u64& out_program_id) override;
|
ResultStatus ReadProgramId(u64& out_program_id) override;
|
||||||
|
|
||||||
|
ResultStatus ReadBanner(std::vector<u8>& buffer) override;
|
||||||
|
ResultStatus ReadLogo(std::vector<u8>& buffer) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<FileSys::NAX> nax;
|
std::unique_ptr<FileSys::NAX> nax;
|
||||||
std::unique_ptr<AppLoader_NCA> nca_loader;
|
std::unique_ptr<AppLoader_NCA> nca_loader;
|
||||||
|
|
|
@ -84,4 +84,23 @@ ResultStatus AppLoader_NCA::ReadProgramId(u64& out_program_id) {
|
||||||
return ResultStatus::Success;
|
return ResultStatus::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ResultStatus AppLoader_NCA::ReadBanner(std::vector<u8>& buffer) {
|
||||||
|
if (nca == nullptr || nca->GetStatus() != ResultStatus::Success)
|
||||||
|
return ResultStatus::ErrorNotInitialized;
|
||||||
|
const auto logo = nca->GetLogoPartition();
|
||||||
|
if (logo == nullptr)
|
||||||
|
return ResultStatus::ErrorNoIcon;
|
||||||
|
buffer = logo->GetFile("StartupMovie.gif")->ReadAllBytes();
|
||||||
|
return ResultStatus::Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
ResultStatus AppLoader_NCA::ReadLogo(std::vector<u8>& buffer) {
|
||||||
|
if (nca == nullptr || nca->GetStatus() != ResultStatus::Success)
|
||||||
|
return ResultStatus::ErrorNotInitialized;
|
||||||
|
const auto logo = nca->GetLogoPartition();
|
||||||
|
if (logo == nullptr)
|
||||||
|
return ResultStatus::ErrorNoIcon;
|
||||||
|
buffer = logo->GetFile("NintendoLogo.png")->ReadAllBytes();
|
||||||
|
return ResultStatus::Success;
|
||||||
|
}
|
||||||
} // namespace Loader
|
} // namespace Loader
|
||||||
|
|
|
@ -39,6 +39,9 @@ public:
|
||||||
u64 ReadRomFSIVFCOffset() const override;
|
u64 ReadRomFSIVFCOffset() const override;
|
||||||
ResultStatus ReadProgramId(u64& out_program_id) override;
|
ResultStatus ReadProgramId(u64& out_program_id) override;
|
||||||
|
|
||||||
|
ResultStatus ReadBanner(std::vector<u8>& buffer) override;
|
||||||
|
ResultStatus ReadLogo(std::vector<u8>& buffer) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<FileSys::NCA> nca;
|
std::unique_ptr<FileSys::NCA> nca;
|
||||||
std::unique_ptr<AppLoader_DeconstructedRomDirectory> directory_loader;
|
std::unique_ptr<AppLoader_DeconstructedRomDirectory> directory_loader;
|
||||||
|
|
|
@ -166,4 +166,13 @@ ResultStatus AppLoader_NSP::ReadManualRomFS(FileSys::VirtualFile& file) {
|
||||||
file = nca->GetRomFS();
|
file = nca->GetRomFS();
|
||||||
return file == nullptr ? ResultStatus::ErrorNoRomFS : ResultStatus::Success;
|
return file == nullptr ? ResultStatus::ErrorNoRomFS : ResultStatus::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ResultStatus AppLoader_NSP::ReadBanner(std::vector<u8>& buffer) {
|
||||||
|
return secondary_loader->ReadBanner(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
ResultStatus AppLoader_NSP::ReadLogo(std::vector<u8>& buffer) {
|
||||||
|
return secondary_loader->ReadLogo(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Loader
|
} // namespace Loader
|
||||||
|
|
|
@ -46,6 +46,9 @@ public:
|
||||||
ResultStatus ReadControlData(FileSys::NACP& nacp) override;
|
ResultStatus ReadControlData(FileSys::NACP& nacp) override;
|
||||||
ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override;
|
ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override;
|
||||||
|
|
||||||
|
ResultStatus ReadBanner(std::vector<u8>& buffer) override;
|
||||||
|
ResultStatus ReadLogo(std::vector<u8>& buffer) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<FileSys::NSP> nsp;
|
std::unique_ptr<FileSys::NSP> nsp;
|
||||||
std::unique_ptr<AppLoader> secondary_loader;
|
std::unique_ptr<AppLoader> secondary_loader;
|
||||||
|
|
|
@ -137,4 +137,12 @@ ResultStatus AppLoader_XCI::ReadManualRomFS(FileSys::VirtualFile& file) {
|
||||||
return file == nullptr ? ResultStatus::ErrorNoRomFS : ResultStatus::Success;
|
return file == nullptr ? ResultStatus::ErrorNoRomFS : ResultStatus::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ResultStatus AppLoader_XCI::ReadBanner(std::vector<u8>& buffer) {
|
||||||
|
return nca_loader->ReadBanner(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
ResultStatus AppLoader_XCI::ReadLogo(std::vector<u8>& buffer) {
|
||||||
|
return nca_loader->ReadLogo(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Loader
|
} // namespace Loader
|
||||||
|
|
|
@ -46,6 +46,9 @@ public:
|
||||||
ResultStatus ReadControlData(FileSys::NACP& control) override;
|
ResultStatus ReadControlData(FileSys::NACP& control) override;
|
||||||
ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override;
|
ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override;
|
||||||
|
|
||||||
|
ResultStatus ReadBanner(std::vector<u8>& buffer) override;
|
||||||
|
ResultStatus ReadLogo(std::vector<u8>& buffer) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<FileSys::XCI> xci;
|
std::unique_ptr<FileSys::XCI> xci;
|
||||||
std::unique_ptr<AppLoader_NCA> nca_loader;
|
std::unique_ptr<AppLoader_NCA> nca_loader;
|
||||||
|
|
Reference in New Issue