From 3e950dd677b6d7dca04541855ad5751d057371ea Mon Sep 17 00:00:00 2001 From: Takoroka <137927095+Takoroka@users.noreply.github.com> Date: Fri, 30 Oct 2026 04:39:04 -0400 Subject: loader: read a loose dump's display version from its own files Mario Kart World 1.8.0 reported 1.0.0: GetDisplayVersion only knew installed titles' metadata, and a loose ExeFS/RomFS dump has none. The dump's version now comes from its control.nacp (in ExeFS, or up to three directories above it), else from RomFS System/Resource/ResourceSizeTable.Product.NNN (Mario Kart World has no NACP; Product.180 is 1.8.0). Folder names are never parsed. --- src/core/loader/loader.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/core/loader/loader.cpp') diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp index 5871ac412f..33a93573cf 100644 --- a/src/core/loader/loader.cpp +++ b/src/core/loader/loader.cpp @@ -16,6 +16,7 @@ #include "common/string_util.h" #include "core/core.h" #include "core/file_sys/card_image.h" +#include "core/file_sys/control_metadata.h" #include "core/file_sys/common_funcs.h" #include "core/file_sys/content_archive.h" #include "core/file_sys/registered_cache.h" @@ -309,6 +310,15 @@ std::ostream& operator<<(std::ostream& os, ResultStatus status) { AppLoader::AppLoader(FileSys::VirtualFile file_) : file(std::move(file_)) {} AppLoader::~AppLoader() = default; +ResultStatus AppLoader::ReadDisplayVersion(std::string& version) { + FileSys::NACP control; + if (const ResultStatus result = ReadControlData(control); result != ResultStatus::Success) { + return result; + } + version = control.GetVersionString(); + return ResultStatus::Success; +} + /** * Get a loader for a file with a specific type * @param system The system context to use. -- cgit v1.2.3