diff --git a/src/core/cpu_core.cpp b/src/core/cpu_core.cpp index c994473d5..7d8ff20cf 100644 --- a/src/core/cpu_core.cpp +++ b/src/core/cpu_core.cpp @@ -170,6 +170,7 @@ void CPU::Initialize() s_break_after_instruction = false; UpdateMemoryPointers(); + UpdateDebugDispatcherFlag(); GTE::Initialize(); } @@ -1972,7 +1973,6 @@ bool CPU::UpdateDebugDispatcherFlag() { const bool has_any_breakpoints = HasAnyBreakpoints() || s_single_step; - // TODO: cop0 breakpoints const auto& dcic = g_state.cop0_regs.dcic; const bool has_cop0_breakpoints = dcic.super_master_enable_1 && dcic.super_master_enable_2 && dcic.execution_breakpoint_enable && IsCop0ExecutionBreakpointUnmasked(); diff --git a/src/core/cpu_core.h b/src/core/cpu_core.h index d2e6b6004..16c2373c0 100644 --- a/src/core/cpu_core.h +++ b/src/core/cpu_core.h @@ -125,6 +125,7 @@ void Shutdown(); void Reset(); bool DoState(StateWrapper& sw); void ClearICache(); +bool UpdateDebugDispatcherFlag(); void UpdateMemoryPointers(); void ExecutionModeChanged(); diff --git a/src/core/cpu_core_private.h b/src/core/cpu_core_private.h index 085819c3d..5b91a193b 100644 --- a/src/core/cpu_core_private.h +++ b/src/core/cpu_core_private.h @@ -25,7 +25,6 @@ ALWAYS_INLINE static void CheckForPendingInterrupt() } void DispatchInterrupt(); -bool UpdateDebugDispatcherFlag(); // icache stuff ALWAYS_INLINE static bool IsCachedAddress(VirtualMemoryAddress address) diff --git a/src/core/system.cpp b/src/core/system.cpp index 1ea12a38e..222d9820b 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -3763,6 +3763,11 @@ void System::CheckForSettingsChanges(const Settings& old_settings) if (g_settings.cpu_recompiler_icache != old_settings.cpu_recompiler_icache) CPU::ClearICache(); } + else if (g_settings.cpu_execution_mode == CPUExecutionMode::Interpreter && + g_settings.bios_tty_logging != old_settings.bios_tty_logging) + { + CPU::UpdateDebugDispatcherFlag(); + } if (g_settings.enable_cheats != old_settings.enable_cheats) {