]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fixed DMA debugger CPU access data value sometimes being in wrong cycle.
authorToni Wilen <twilen@winuae.net>
Thu, 17 Nov 2022 17:59:03 +0000 (19:59 +0200)
committerToni Wilen <twilen@winuae.net>
Thu, 17 Nov 2022 17:59:03 +0000 (19:59 +0200)
custom.cpp
debug.cpp
include/debug.h

index 767ca08d2482433745354a23fca12ee180e8ecfe..7c2ba2153143317cf23bd65e9b8fe99145358dac 100644 (file)
@@ -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
 
index 684e0da76f0869c4c7d1c366db1ed19ae45dc1ca..57a43bd4d3d68e18a1ea7e552bf506258dc25f7e 100644 (file)
--- 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) {
index 69037064214ebf1651eaa591dfdb55b10a1f942c..69d416de264837e4b39f226712f395bc5d4f7691 100644 (file)
@@ -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);