summaryrefslogtreecommitdiffstats
path: root/src/core/file_sys/patch_manager.cpp
diff options
context:
space:
mode:
authorDavid <25727384+ogniK5377@users.noreply.github.com>2019-09-22 08:24:42 +0200
committerGitHub <noreply@github.com>2019-09-22 08:24:42 +0200
commit9187350b322c3140c2bec3938b91289ab55e9aae (patch)
treec2f9d045cee2bb87b1182ae93d5072b416b1b87c /src/core/file_sys/patch_manager.cpp
parentMerge pull request #2709 from DarkLordZach/oss-ext-fonts-1 (diff)
parentdmnt_cheat_vm: Default initialize structure values (diff)
downloadyuzu-9187350b322c3140c2bec3938b91289ab55e9aae.tar
yuzu-9187350b322c3140c2bec3938b91289ab55e9aae.tar.gz
yuzu-9187350b322c3140c2bec3938b91289ab55e9aae.tar.bz2
yuzu-9187350b322c3140c2bec3938b91289ab55e9aae.tar.lz
yuzu-9187350b322c3140c2bec3938b91289ab55e9aae.tar.xz
yuzu-9187350b322c3140c2bec3938b91289ab55e9aae.tar.zst
yuzu-9187350b322c3140c2bec3938b91289ab55e9aae.zip
Diffstat (limited to 'src/core/file_sys/patch_manager.cpp')
-rw-r--r--src/core/file_sys/patch_manager.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp
index c1dd0c6d7..df0ecb15c 100644
--- a/src/core/file_sys/patch_manager.cpp
+++ b/src/core/file_sys/patch_manager.cpp
@@ -22,6 +22,7 @@
#include "core/hle/service/filesystem/filesystem.h"
#include "core/loader/loader.h"
#include "core/loader/nso.h"
+#include "core/memory/cheat_engine.h"
#include "core/settings.h"
namespace FileSys {
@@ -247,9 +248,10 @@ bool PatchManager::HasNSOPatch(const std::array<u8, 32>& build_id_) const {
return !CollectPatches(patch_dirs, build_id).empty();
}
-static std::optional<CheatList> ReadCheatFileFromFolder(const Core::System& system, u64 title_id,
- const std::array<u8, 0x20>& build_id_,
- const VirtualDir& base_path, bool upper) {
+namespace {
+std::optional<std::vector<Memory::CheatEntry>> ReadCheatFileFromFolder(
+ const Core::System& system, u64 title_id, const std::array<u8, 0x20>& build_id_,
+ const VirtualDir& base_path, bool upper) {
const auto build_id_raw = Common::HexToString(build_id_, upper);
const auto build_id = build_id_raw.substr(0, sizeof(u64) * 2);
const auto file = base_path->GetFile(fmt::format("{}.txt", build_id));
@@ -267,14 +269,16 @@ static std::optional<CheatList> ReadCheatFileFromFolder(const Core::System& syst
return std::nullopt;
}
- TextCheatParser parser;
- return parser.Parse(system, data);
+ Memory::TextCheatParser parser;
+ return parser.Parse(
+ system, std::string_view(reinterpret_cast<const char* const>(data.data()), data.size()));
}
-std::vector<CheatList> PatchManager::CreateCheatList(const Core::System& system,
- const std::array<u8, 32>& build_id_) const {
- const auto load_dir =
- Core::System::GetInstance().GetFileSystemController().GetModificationLoadRoot(title_id);
+} // Anonymous namespace
+
+std::vector<Memory::CheatEntry> PatchManager::CreateCheatList(
+ const Core::System& system, const std::array<u8, 32>& build_id_) const {
+ const auto load_dir = system.GetFileSystemController().GetModificationLoadRoot(title_id);
if (load_dir == nullptr) {
LOG_ERROR(Loader, "Cannot load mods for invalid title_id={:016X}", title_id);
return {};
@@ -284,20 +288,20 @@ std::vector<CheatList> PatchManager::CreateCheatList(const Core::System& system,
std::sort(patch_dirs.begin(), patch_dirs.end(),
[](const VirtualDir& l, const VirtualDir& r) { return l->GetName() < r->GetName(); });
- std::vector<CheatList> out;
- out.reserve(patch_dirs.size());
+ std::vector<Memory::CheatEntry> out;
for (const auto& subdir : patch_dirs) {
auto cheats_dir = subdir->GetSubdirectory("cheats");
if (cheats_dir != nullptr) {
auto res = ReadCheatFileFromFolder(system, title_id, build_id_, cheats_dir, true);
if (res.has_value()) {
- out.push_back(std::move(*res));
+ std::copy(res->begin(), res->end(), std::back_inserter(out));
continue;
}
res = ReadCheatFileFromFolder(system, title_id, build_id_, cheats_dir, false);
- if (res.has_value())
- out.push_back(std::move(*res));
+ if (res.has_value()) {
+ std::copy(res->begin(), res->end(), std::back_inserter(out));
+ }
}
}