From b5398a2b83f86cc29d985e040c66c93abdb571ce Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 21 Mar 2015 16:11:56 +0200 Subject: [PATCH] uaeenforcer breakpoint support. --- debug.cpp | 12 ++++++++++++ enforcer.cpp | 7 +++++-- include/debug.h | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/debug.cpp b/debug.cpp index 7c6614b6..ad451065 100644 --- a/debug.cpp +++ b/debug.cpp @@ -60,6 +60,7 @@ int debug_sprite_mask = 0xff; int debug_illegal = 0; uae_u64 debug_illegal_mask; static int debug_mmu_mode; +static bool break_if_enforcer; static uaecptr processptr; static uae_char *processname; @@ -90,6 +91,14 @@ void activate_debugger (void) mmu_triggered = 0; } +bool debug_enforcer(void) +{ + if (!break_if_enforcer) + return false; + activate_debugger(); + return true; +} + int firsthist = 0; int lasthist = 0; static struct regstruct history[MAX_HIST]; @@ -4405,6 +4414,9 @@ static BOOL debug_line (TCHAR *input) } else if (inptr[0] == 'c' || inptr[0] == 's') { if (cycle_breakpoint(&inptr)) return true; + } else if (inptr[0] == 'e' && inptr[1] == 'n') { + break_if_enforcer = break_if_enforcer ? false : true; + console_out_f(_T("Break when enforcer hit: %s\n"), break_if_enforcer ? _T("enabled") : _T("disabled")); } else { if (instruction_breakpoint (&inptr)) return true; diff --git a/enforcer.cpp b/enforcer.cpp index c5a0a400..f61da4ca 100644 --- a/enforcer.cpp +++ b/enforcer.cpp @@ -18,6 +18,7 @@ #include "uae.h" #include "xwin.h" #include "enforcer.h" +#include "debug.h" #ifdef AHI @@ -411,8 +412,10 @@ static void enforcer_display_hit (const TCHAR *addressmode, uae_u32 pc, uaecptr console_out (enforcer_buf); write_log (_T("%s"), enforcer_buf); - sleep_millis (5); - doflashscreen (); + if (!debug_enforcer()) { + sleep_millis (5); + doflashscreen (); + } end: xfree (native_task_name); diff --git a/include/debug.h b/include/debug.h index 99b55e33..6c00de7d 100644 --- a/include/debug.h +++ b/include/debug.h @@ -50,6 +50,7 @@ extern int debug_read_memory_8 (uaecptr addr); extern int debug_peek_memory_8 (uaecptr addr); extern int debug_write_memory_16 (uaecptr addr, uae_u16 v); extern int debug_write_memory_8 (uaecptr addr, uae_u8 v); +extern bool debug_enforcer(void); #define BREAKPOINT_TOTAL 20 struct breakpoint_node { -- 2.47.3