]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fix memwatch change mode (negative value was always detected as changed)
authorToni Wilen <twilen@winuae.net>
Sun, 3 Aug 2025 16:35:28 +0000 (19:35 +0300)
committerToni Wilen <twilen@winuae.net>
Sun, 3 Aug 2025 16:35:28 +0000 (19:35 +0300)
debug.cpp

index a5b495ccf9ff7b1333eeb2475b965fd2e776000c..b43700962c1837e50576688cbf61270a859ef8cb 100644 (file)
--- a/debug.cpp
+++ b/debug.cpp
@@ -4008,6 +4008,7 @@ static int memwatch_func (uaecptr addr, int rwi, int size, uae_u32 *valp, uae_u3
                uae_u32 oldval = 0;
                int isoldval = 0;
                int brk = 0;
+               uae_u32 newval = 0;
 
                if (m->size == 0)
                        continue;
@@ -4035,12 +4036,16 @@ static int memwatch_func (uaecptr addr, int rwi, int size, uae_u32 *valp, uae_u3
 
                if (mem_banks[addr >> 16]->check (addr, size)) {
                        uae_u8 *p = mem_banks[addr >> 16]->xlateaddr (addr);
-                       if (size == 1)
+                       if (size == 1) {
                                oldval = p[0];
-                       else if (size == 2)
+                               newval = (*valp) & 0xff;
+                       } else if (size == 2) {
                                oldval = (p[0] << 8) | p[1];
-                       else
+                               newval = (*valp) & 0xffff;
+                       } else {
                                oldval = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | (p[3] << 0);
+                               newval = *valp;
+                       }
                        isoldval = 1;
                }
 
@@ -4078,7 +4083,7 @@ static int memwatch_func (uaecptr addr, int rwi, int size, uae_u32 *valp, uae_u3
                }
 
                if (m->mustchange && rwi == 2 && isoldval) {
-                       if (oldval == *valp)
+                       if (oldval == newval)
                                continue;
                }