summaryrefslogtreecommitdiffstats
path: root/src/core/loader/nro.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2023-06-10 08:59:51 +0200
committerGitHub <noreply@github.com>2023-06-10 08:59:51 +0200
commitf759ff3a5c2ee78d2ddc16af9c57aa03518f4502 (patch)
tree1a578ea5b5de4ccf2e38df4fa9f69ff9c6c0e853 /src/core/loader/nro.cpp
parentMerge pull request #10686 from t895/version-check (diff)
parentandroid: Add proper homebrew check (diff)
downloadyuzu-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.cpp13
1 files changed, 12 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);
}