diff options
| author | Zach Hilman <zachhilman@gmail.com> | 2019-01-15 15:56:52 -0500 | 
|---|---|---|
| committer | Zach Hilman <zachhilman@gmail.com> | 2019-01-15 16:01:04 -0500 | 
| commit | b273b195762433ab015ec015061414aac4b9683e (patch) | |
| tree | b1c7aefc989d3174099eeafd7ba8a9d0ac28d230 /src/core | |
| parent | 318bf7c8e3a31d444fa0308804b4c1cf0c2470be (diff) | |
loader: Propagate NCA logo section to ReadBanner and ReadLogo
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/loader/loader.h | 4 | ||||
| -rw-r--r-- | src/core/loader/nax.cpp | 9 | ||||
| -rw-r--r-- | src/core/loader/nax.h | 3 | ||||
| -rw-r--r-- | src/core/loader/nca.cpp | 19 | ||||
| -rw-r--r-- | src/core/loader/nca.h | 3 | ||||
| -rw-r--r-- | src/core/loader/nsp.cpp | 9 | ||||
| -rw-r--r-- | src/core/loader/nsp.h | 3 | ||||
| -rw-r--r-- | src/core/loader/xci.cpp | 8 | ||||
| -rw-r--r-- | src/core/loader/xci.h | 3 | 
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:      /**       * 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       * @return ResultStatus result of function       */ @@ -187,6 +189,8 @@ public:      /**       * 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       * @return ResultStatus result of function       */ 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 {  ResultStatus AppLoader_NAX::ReadProgramId(u64& 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 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:      u64 ReadRomFSIVFCOffset() const override;      ResultStatus ReadProgramId(u64& out_program_id) override; +    ResultStatus ReadBanner(std::vector<u8>& buffer) override; +    ResultStatus ReadLogo(std::vector<u8>& buffer) override; +  private:      std::unique_ptr<FileSys::NAX> nax;      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) {      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 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:      u64 ReadRomFSIVFCOffset() const override;      ResultStatus ReadProgramId(u64& out_program_id) override; +    ResultStatus ReadBanner(std::vector<u8>& buffer) override; +    ResultStatus ReadLogo(std::vector<u8>& buffer) override; +  private:      std::unique_ptr<FileSys::NCA> nca;      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) {      file = nca->GetRomFS();      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 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:      ResultStatus ReadControlData(FileSys::NACP& nacp) override;      ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override; +    ResultStatus ReadBanner(std::vector<u8>& buffer) override; +    ResultStatus ReadLogo(std::vector<u8>& buffer) override; +  private:      std::unique_ptr<FileSys::NSP> nsp;      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) {      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 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:      ResultStatus ReadControlData(FileSys::NACP& control) override;      ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override; +    ResultStatus ReadBanner(std::vector<u8>& buffer) override; +    ResultStatus ReadLogo(std::vector<u8>& buffer) override; +  private:      std::unique_ptr<FileSys::XCI> xci;      std::unique_ptr<AppLoader_NCA> nca_loader; | 
