From 94046f76265e42ff6891fad6e2e91049ce1cc412 Mon Sep 17 00:00:00 2001 From: Adubbz Date: Thu, 3 Oct 2019 12:28:31 +1000 Subject: [PATCH] Fixed application launching --- .../ncm/source/ncm_contentmetadatabase.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/stratosphere/ncm/source/ncm_contentmetadatabase.cpp b/stratosphere/ncm/source/ncm_contentmetadatabase.cpp index 885e1c848..beccb2cc1 100644 --- a/stratosphere/ncm/source/ncm_contentmetadatabase.cpp +++ b/stratosphere/ncm/source/ncm_contentmetadatabase.cpp @@ -34,7 +34,7 @@ namespace sts::ncm { struct ApplicationMetaExtendedHeader { TitleId patch_id; u32 required_system_version; - u32 padding; + u32 required_application_version; }; struct PatchMetaExtendedHeader { @@ -544,13 +544,20 @@ namespace sts::ncm { Result ContentMetaDatabaseInterface::GetRequiredApplicationVersion(Out out_version, ContentMetaKey key) { R_TRY(this->EnsureEnabled()); - if (key.type != ContentMetaType::AddOnContent) { - return ResultNcmInvalidContentMetaKey; - } - const void* value = nullptr; size_t value_size = 0; R_TRY(GetContentMetaValuePointer(&value, &value_size, key, this->kvs)); + + /* As of 9.0.0, applications can be dependent on a specific base application version. */ + if (GetRuntimeFirmwareVersion() >= FirmwareVersion_900 && key.type == ContentMetaType::Application) { + const auto ext_header = GetValueExtendedHeader(value); + out_version.SetValue(ext_header->required_application_version); + return ResultSuccess; + } + + if (key.type != ContentMetaType::AddOnContent) { + return ResultNcmInvalidContentMetaKey; + } const auto ext_header = GetValueExtendedHeader(value); out_version.SetValue(ext_header->required_application_version); return ResultSuccess;