From b59b7084c7c10fb1d59c436feaec088c9c718d4b Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 22 Mar 2019 06:08:11 -0400 Subject: file_sys/cheat_engine: Remove use of global system accessors Instead, pass in the core timing instance and make the dependency explicit in the interface. --- src/core/file_sys/cheat_engine.cpp | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) (limited to 'src/core/file_sys/cheat_engine.cpp') diff --git a/src/core/file_sys/cheat_engine.cpp b/src/core/file_sys/cheat_engine.cpp index 09ca9d7050..1cbdc60204 100644 --- a/src/core/file_sys/cheat_engine.cpp +++ b/src/core/file_sys/cheat_engine.cpp @@ -11,7 +11,6 @@ #include "core/core_timing_util.h" #include "core/file_sys/cheat_engine.h" #include "core/hle/kernel/process.h" -#include "core/hle/service/hid/controllers/controller_base.h" #include "core/hle/service/hid/controllers/npad.h" #include "core/hle/service/hid/hid.h" #include "core/hle/service/sm/sm.h" @@ -77,8 +76,8 @@ void CheatList::Execute() { } } -CheatList::CheatList(ProgramSegment master, ProgramSegment standard) - : master_list(master), standard_list(standard) {} +CheatList::CheatList(const Core::System& system_, ProgramSegment master, ProgramSegment standard) + : master_list{std::move(master)}, standard_list{std::move(standard)}, system{&system_} {} bool CheatList::EvaluateConditional(const Cheat& cheat) const { using ComparisonFunction = bool (*)(u64, u64); @@ -89,10 +88,8 @@ bool CheatList::EvaluateConditional(const Cheat& cheat) const { }; if (cheat.type == CodeType::ConditionalInput) { - const auto applet_resource = Core::System::GetInstance() - .ServiceManager() - .GetService("hid") - ->GetAppletResource(); + const auto applet_resource = + system->ServiceManager().GetService("hid")->GetAppletResource(); if (applet_resource == nullptr) { LOG_WARNING( Common_Filesystem, @@ -320,14 +317,14 @@ void CheatList::ExecuteBlock(const Block& block) { CheatParser::~CheatParser() = default; -CheatList CheatParser::MakeCheatList(CheatList::ProgramSegment master, +CheatList CheatParser::MakeCheatList(const Core::System& system, CheatList::ProgramSegment master, CheatList::ProgramSegment standard) const { - return {master, standard}; + return {system, std::move(master), std::move(standard)}; } TextCheatParser::~TextCheatParser() = default; -CheatList TextCheatParser::Parse(const std::vector& data) const { +CheatList TextCheatParser::Parse(const Core::System& system, const std::vector& data) const { std::stringstream ss; ss.write(reinterpret_cast(data.data()), data.size()); @@ -375,7 +372,7 @@ CheatList TextCheatParser::Parse(const std::vector& data) const { } } - return MakeCheatList(master_list, standard_list); + return MakeCheatList(system, master_list, standard_list); } std::array TextCheatParser::ParseSingleLineCheat(const std::string& line) const { @@ -460,16 +457,16 @@ void MemoryWriteImpl(u32 width, VAddr addr, u64 value) { } } -CheatEngine::CheatEngine(std::vector cheats, const std::string& build_id, - VAddr code_region_start, VAddr code_region_end) - : cheats(std::move(cheats)) { - auto& core_timing{Core::System::GetInstance().CoreTiming()}; +CheatEngine::CheatEngine(Core::System& system, std::vector cheats_, + const std::string& build_id, VAddr code_region_start, + VAddr code_region_end) + : cheats{std::move(cheats_)}, core_timing{system.CoreTiming()} { event = core_timing.RegisterEvent( "CheatEngine::FrameCallback::" + build_id, [this](u64 userdata, s64 cycles_late) { FrameCallback(userdata, cycles_late); }); core_timing.ScheduleEvent(CHEAT_ENGINE_TICKS, event); - const auto& vm_manager = Core::System::GetInstance().CurrentProcess()->VMManager(); + const auto& vm_manager = system.CurrentProcess()->VMManager(); for (auto& list : this->cheats) { list.SetMemoryParameters(code_region_start, vm_manager.GetHeapRegionBaseAddress(), code_region_end, vm_manager.GetHeapRegionEndAddress(), @@ -478,15 +475,14 @@ CheatEngine::CheatEngine(std::vector cheats, const std::string& build } CheatEngine::~CheatEngine() { - auto& core_timing{Core::System::GetInstance().CoreTiming()}; core_timing.UnscheduleEvent(event, 0); } void CheatEngine::FrameCallback(u64 userdata, int cycles_late) { - for (auto& list : cheats) + for (auto& list : cheats) { list.Execute(); + } - auto& core_timing{Core::System::GetInstance().CoreTiming()}; core_timing.ScheduleEvent(CHEAT_ENGINE_TICKS - cycles_late, event); } -- cgit v1.2.3 From 0d44c061fe80e256e4ee487f16882554681d9481 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 22 Mar 2019 11:08:04 -0400 Subject: file_sys/cheat_engine: Silence truncation and sign-conversion warnings --- src/core/file_sys/cheat_engine.cpp | 9 +++++---- src/core/file_sys/cheat_engine.h | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'src/core/file_sys/cheat_engine.cpp') diff --git a/src/core/file_sys/cheat_engine.cpp b/src/core/file_sys/cheat_engine.cpp index 1cbdc60204..247fbc864d 100644 --- a/src/core/file_sys/cheat_engine.cpp +++ b/src/core/file_sys/cheat_engine.cpp @@ -17,7 +17,7 @@ namespace FileSys { -constexpr u64 CHEAT_ENGINE_TICKS = Core::Timing::BASE_CLOCK_RATE / 60; +constexpr s64 CHEAT_ENGINE_TICKS = static_cast(Core::Timing::BASE_CLOCK_RATE / 60); constexpr u32 KEYPAD_BITMASK = 0x3FFFFFF; u64 Cheat::Address() const { @@ -185,8 +185,9 @@ void CheatList::Loop(const Cheat& cheat) { ASSERT(iter != block_pairs.end()); ASSERT(iter->first < iter->second); - for (int i = cheat.Value(4, 4); i >= 0; --i) { - register_3 = i; + const s32 initial_value = static_cast(cheat.Value(4, sizeof(s32))); + for (s32 i = initial_value; i >= 0; --i) { + register_3 = static_cast(i); for (std::size_t c = iter->first + 1; c < iter->second; ++c) { current_index = c; ExecuteSingleCheat( @@ -478,7 +479,7 @@ CheatEngine::~CheatEngine() { core_timing.UnscheduleEvent(event, 0); } -void CheatEngine::FrameCallback(u64 userdata, int cycles_late) { +void CheatEngine::FrameCallback(u64 userdata, s64 cycles_late) { for (auto& list : cheats) { list.Execute(); } diff --git a/src/core/file_sys/cheat_engine.h b/src/core/file_sys/cheat_engine.h index c2de3198c3..ac22a82cb1 100644 --- a/src/core/file_sys/cheat_engine.h +++ b/src/core/file_sys/cheat_engine.h @@ -223,7 +223,7 @@ public: ~CheatEngine(); private: - void FrameCallback(u64 userdata, int cycles_late); + void FrameCallback(u64 userdata, s64 cycles_late); std::vector cheats; -- cgit v1.2.3