From 8ef25a114a58b3ed4417bcd697d90c10c5d5857f Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Thu, 17 Nov 2022 19:59:03 +0200 Subject: [PATCH] Fixed DMA debugger CPU access data value sometimes being in wrong cycle. --- custom.cpp | 4 ++-- debug.cpp | 7 +++++++ include/debug.h | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/custom.cpp b/custom.cpp index 767ca08d..7c2ba215 100644 --- a/custom.cpp +++ b/custom.cpp @@ -15079,7 +15079,7 @@ uae_u32 wait_cpu_cycle_read(uaecptr addr, int mode) #ifdef DEBUGGER if (debug_dma) { - record_dma_read_value(v); + record_dma_read_value_pos(v, hpos, vpos); } #endif @@ -15193,7 +15193,7 @@ uae_u32 wait_cpu_cycle_read_ce020(uaecptr addr, int mode) #ifdef DEBUGGER if (debug_dma) { - record_dma_read_value(v); + record_dma_read_value_pos(v, hpos, vpos); } #endif diff --git a/debug.cpp b/debug.cpp index 684e0da7..57a43bd4 100644 --- a/debug.cpp +++ b/debug.cpp @@ -2074,6 +2074,13 @@ void record_dma_write(uae_u16 reg, uae_u32 dat, uae_u32 addr, int hpos, int vpos debug_mark_refreshed(dr->addr); } struct dma_rec *last_dma_rec; +void record_dma_read_value_pos(uae_u32 v, int hpos, int vpos) +{ + struct dma_rec *dr = &dma_record[dma_record_toggle][vpos * NR_DMA_REC_HPOS + hpos]; + last_dma_rec = dr; + record_dma_read_value(v); +} + void record_dma_read_value(uae_u32 v) { if (last_dma_rec) { diff --git a/include/debug.h b/include/debug.h index 69037064..69d416de 100644 --- a/include/debug.h +++ b/include/debug.h @@ -290,6 +290,7 @@ extern struct dma_rec *last_dma_rec; extern void record_dma_read(uae_u16 reg, uae_u32 addr, int hpos, int vpos, int type, int extra); extern void record_dma_write(uae_u16 reg, uae_u32 v, uae_u32 addr, int hpos, int vpos, int type, int extra); extern void record_dma_read_value(uae_u32 v); +extern void record_dma_read_value_pos(uae_u32 v, int hpos, int vpos); extern void record_dma_read_value_wide(uae_u64 v, bool quad); extern void record_dma_replace(int hpos, int vpos, int type, int extra); extern void record_dma_reset(int); -- 2.47.3