From 17bbd8759b7f17a8f365df32b742b7bf5a8b5093 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 1 Apr 2023 11:02:58 +0300 Subject: [PATCH] State restore cpu trace/blitter wait fix. --- blitter.cpp | 4 ++-- newcpu.cpp | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/blitter.cpp b/blitter.cpp index b983c32f..da3772e0 100644 --- a/blitter.cpp +++ b/blitter.cpp @@ -2174,9 +2174,9 @@ int blitnasty (void) { int cycles, ccnt; if (!blt_info.blit_main) - return 0; + return -1; if (!dmaen(DMA_BLITTER)) - return 0; + return -1; if (blitter_cycle_exact) { return -1; } diff --git a/newcpu.cpp b/newcpu.cpp index f53b678e..bf74d135 100644 --- a/newcpu.cpp +++ b/newcpu.cpp @@ -432,14 +432,14 @@ static bool check_trace (void) return true; } -static bool get_trace (uaecptr addr, int accessmode, int size, uae_u32 *data) +static bool get_trace(uaecptr addr, int accessmode, int size, uae_u32 *data) { int mode = accessmode | (size << 4); for (int i = 0; i < cputrace.memoryoffset; i++) { struct cputracememory *ctm = &cputrace.ctm[i]; if (ctm->addr == addr && ctm->mode == mode) { ctm->mode = 0; - write_log (_T("CPU trace: GET %d: PC=%08x %08x=%08x %d %d %08x/%08x/%08x %d/%d (%08x)\n"), + write_log(_T("CPU trace: GET %d: PC=%08x %08x=%08x %d %d %08x/%08x/%08x %d/%d (%08x)\n"), i, cputrace.pc, addr, ctm->data, accessmode, size, cputrace.cyclecounter, cputrace.cyclecounter_pre, cputrace.cyclecounter_post, cputrace.readcounter, cputrace.writecounter, get_cycles ()); @@ -477,7 +477,7 @@ static bool get_trace (uaecptr addr, int accessmode, int size, uae_u32 *data) } } } - check_trace (); + check_trace(); *data = ctm->data; return false; } @@ -485,15 +485,17 @@ static bool get_trace (uaecptr addr, int accessmode, int size, uae_u32 *data) if (cputrace.cyclecounter_post) { int c = cputrace.cyclecounter_post; cputrace.cyclecounter_post = 0; - check_trace (); - check_trace2 (); - x_do_cycles (c); + check_trace(); + check_trace2(); + x_do_cycles(c); return false; } - gui_message (_T("CPU trace: GET %08x %d %d NOT FOUND!\n"), addr, accessmode, size); - check_trace (); + if (cputrace.memoryoffset > 0 || cputrace.cyclecounter_pre) { + gui_message(_T("CPU trace: GET %08x %d %d NOT FOUND!\n"), addr, accessmode, size); + } + check_trace(); *data = 0; - return false; + return true; } static uae_u32 cputracefunc_x_prefetch (int o) -- 2.47.3