diff options
author | bunnei <bunneidev@gmail.com> | 2023-06-10 08:59:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-10 08:59:51 +0200 |
commit | f759ff3a5c2ee78d2ddc16af9c57aa03518f4502 (patch) | |
tree | 1a578ea5b5de4ccf2e38df4fa9f69ff9c6c0e853 /src/core | |
parent | Merge pull request #10686 from t895/version-check (diff) | |
parent | android: Add proper homebrew check (diff) | |
download | yuzu-f759ff3a5c2ee78d2ddc16af9c57aa03518f4502.tar yuzu-f759ff3a5c2ee78d2ddc16af9c57aa03518f4502.tar.gz yuzu-f759ff3a5c2ee78d2ddc16af9c57aa03518f4502.tar.bz2 yuzu-f759ff3a5c2ee78d2ddc16af9c57aa03518f4502.tar.lz yuzu-f759ff3a5c2ee78d2ddc16af9c57aa03518f4502.tar.xz yuzu-f759ff3a5c2ee78d2ddc16af9c57aa03518f4502.tar.zst yuzu-f759ff3a5c2ee78d2ddc16af9c57aa03518f4502.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/loader/nro.cpp | 13 | ||||
-rw-r--r-- | src/core/loader/nro.h | 2 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp index 73d04d7ee..7be6cf5f3 100644 --- a/src/core/loader/nro.cpp +++ b/src/core/loader/nro.cpp @@ -33,7 +33,8 @@ static_assert(sizeof(NroSegmentHeader) == 0x8, "NroSegmentHeader has incorrect s struct NroHeader { INSERT_PADDING_BYTES(0x4); u32_le module_header_offset; - INSERT_PADDING_BYTES(0x8); + u32 magic_ext1; + u32 magic_ext2; u32_le magic; INSERT_PADDING_BYTES(0x4); u32_le file_size; @@ -124,6 +125,16 @@ FileType AppLoader_NRO::IdentifyType(const FileSys::VirtualFile& nro_file) { return FileType::Error; } +bool AppLoader_NRO::IsHomebrew() { + // Read NSO header + NroHeader nro_header{}; + if (sizeof(NroHeader) != file->ReadObject(&nro_header)) { + return false; + } + return nro_header.magic_ext1 == Common::MakeMagic('H', 'O', 'M', 'E') && + nro_header.magic_ext2 == Common::MakeMagic('B', 'R', 'E', 'W'); +} + static constexpr u32 PageAlignSize(u32 size) { return static_cast<u32>((size + Core::Memory::YUZU_PAGEMASK) & ~Core::Memory::YUZU_PAGEMASK); } diff --git a/src/core/loader/nro.h b/src/core/loader/nro.h index ccb77b581..8de6eebc6 100644 --- a/src/core/loader/nro.h +++ b/src/core/loader/nro.h @@ -38,6 +38,8 @@ public: */ static FileType IdentifyType(const FileSys::VirtualFile& nro_file); + bool IsHomebrew(); + FileType GetFileType() const override { return IdentifyType(file); } |