|
|
@ -191,6 +191,7 @@ VirtualDir PatchManager::PatchExeFS(VirtualDir exefs) const {
|
|
|
|
std::vector<VirtualFile> PatchManager::CollectPatches(const std::vector<VirtualDir>& patch_dirs,
|
|
|
|
std::vector<VirtualFile> PatchManager::CollectPatches(const std::vector<VirtualDir>& patch_dirs,
|
|
|
|
const std::string& build_id) const {
|
|
|
|
const std::string& build_id) const {
|
|
|
|
const auto& disabled = Settings::values.disabled_addons[title_id];
|
|
|
|
const auto& disabled = Settings::values.disabled_addons[title_id];
|
|
|
|
|
|
|
|
const auto nso_build_id = fmt::format("{:0>64}", build_id);
|
|
|
|
|
|
|
|
|
|
|
|
std::vector<VirtualFile> out;
|
|
|
|
std::vector<VirtualFile> out;
|
|
|
|
out.reserve(patch_dirs.size());
|
|
|
|
out.reserve(patch_dirs.size());
|
|
|
@ -203,21 +204,18 @@ std::vector<VirtualFile> PatchManager::CollectPatches(const std::vector<VirtualD
|
|
|
|
for (const auto& file : exefs_dir->GetFiles()) {
|
|
|
|
for (const auto& file : exefs_dir->GetFiles()) {
|
|
|
|
if (file->GetExtension() == "ips") {
|
|
|
|
if (file->GetExtension() == "ips") {
|
|
|
|
auto name = file->GetName();
|
|
|
|
auto name = file->GetName();
|
|
|
|
const auto p1 = name.substr(0, name.find('.'));
|
|
|
|
|
|
|
|
const auto this_build_id = p1.substr(0, p1.find_last_not_of('0') + 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (build_id == this_build_id)
|
|
|
|
const auto this_build_id =
|
|
|
|
|
|
|
|
fmt::format("{:0>64}", name.substr(0, name.find('.')));
|
|
|
|
|
|
|
|
if (nso_build_id == this_build_id)
|
|
|
|
out.push_back(file);
|
|
|
|
out.push_back(file);
|
|
|
|
} else if (file->GetExtension() == "pchtxt") {
|
|
|
|
} else if (file->GetExtension() == "pchtxt") {
|
|
|
|
IPSwitchCompiler compiler{file};
|
|
|
|
IPSwitchCompiler compiler{file};
|
|
|
|
if (!compiler.IsValid())
|
|
|
|
if (!compiler.IsValid())
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|
|
auto this_build_id = Common::HexToString(compiler.GetBuildID());
|
|
|
|
const auto this_build_id = Common::HexToString(compiler.GetBuildID());
|
|
|
|
this_build_id =
|
|
|
|
if (nso_build_id == this_build_id)
|
|
|
|
this_build_id.substr(0, this_build_id.find_last_not_of('0') + 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (build_id == this_build_id)
|
|
|
|
|
|
|
|
out.push_back(file);
|
|
|
|
out.push_back(file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|