From b548ed1ecac31b480c1f8cd44465677489393a4d Mon Sep 17 00:00:00 2001 From: Maufeat Date: Wed, 4 Feb 2026 04:40:56 +0100 Subject: [PATCH] add logs --- src/core/file_sys/patch_manager.cpp | 29 +++++++++++++++++++++++--- src/core/file_sys/registered_cache.cpp | 8 ++++++- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp index 7415814ad0..d99a438099 100644 --- a/src/core/file_sys/patch_manager.cpp +++ b/src/core/file_sys/patch_manager.cpp @@ -840,13 +840,36 @@ std::vector PatchManager::GetPatches(VirtualFile update_raw) const { // DLC const auto dlc_entries = content_provider.ListEntriesFilter(TitleType::AOC, ContentRecordType::Data); + + LOG_WARNING(Loader, "Found {} potential DLC entries for base title {:016X}", dlc_entries.size(), title_id); + std::vector dlc_match; dlc_match.reserve(dlc_entries.size()); std::copy_if(dlc_entries.begin(), dlc_entries.end(), std::back_inserter(dlc_match), [this](const ContentProviderEntry& entry) { - return GetBaseTitleID(entry.title_id) == title_id && - content_provider.GetEntry(entry)->GetStatus() == - Loader::ResultStatus::Success; + const auto base_tid = GetBaseTitleID(entry.title_id); + const bool matches_base = base_tid == title_id; + + if (!matches_base) { + LOG_WARNING(Loader, "DLC {:016X} base {:016X} doesn't match title {:016X}", + entry.title_id, base_tid, title_id); + return false; + } + + auto nca = content_provider.GetEntry(entry); + if (!nca) { + LOG_WARNING(Loader, "Failed to get NCA for DLC {:016X}", entry.title_id); + return false; + } + + const auto status = nca->GetStatus(); + if (status != Loader::ResultStatus::Success) { + LOG_WARNING(Loader, "DLC {:016X} NCA has status {}", + entry.title_id, static_cast(status)); + return false; + } + + return true; }); if (!dlc_match.empty()) { // Ensure sorted so DLC IDs show in order. diff --git a/src/core/file_sys/registered_cache.cpp b/src/core/file_sys/registered_cache.cpp index 6b615101b7..5307bedee0 100644 --- a/src/core/file_sys/registered_cache.cpp +++ b/src/core/file_sys/registered_cache.cpp @@ -1110,9 +1110,13 @@ void ExternalContentProvider::ScanDirectory(const VirtualDir& dir) { void ExternalContentProvider::ProcessNSP(const VirtualFile& file) { auto nsp = NSP(file); if (nsp.GetStatus() != Loader::ResultStatus::Success) { + LOG_WARNING(Service_FS, "Failed to parse NSP file: {}, status: {}", + file->GetName(), static_cast(nsp.GetStatus())); return; } + LOG_WARNING(Service_FS, "Processing NSP file: {}", file->GetName()); + const auto ncas = nsp.GetNCAs(); std::map nsp_versions; @@ -1169,6 +1173,8 @@ void ExternalContentProvider::ProcessNSP(const VirtualFile& file) { const auto& [title_type, content_type] = type_pair; if (title_type != TitleType::AOC && title_type != TitleType::Update) { + LOG_WARNING(Service_FS, "Skipping entry - Title ID: {:016X}, TitleType: {}, ContentType: {} (not AOC or Update)", + title_id, static_cast(title_type), static_cast(content_type)); continue; } @@ -1186,7 +1192,7 @@ void ExternalContentProvider::ProcessNSP(const VirtualFile& file) { version_files[{title_id, version}][content_type] = nca_file; } - LOG_DEBUG(Service_FS, "Added entry - Title ID: {:016X}, Type: {}, Content: {}", + LOG_INFO(Service_FS, "Added external entry - Title ID: {:016X}, TitleType: {}, ContentType: {}", title_id, static_cast(title_type), static_cast(content_type)); } }