vdp rendering, fix SAT caching for high addresses >64KB
authorkub <derkub@gmail.com>
Wed, 7 Oct 2020 18:12:23 +0000 (20:12 +0200)
committerkub <derkub@gmail.com>
Wed, 7 Oct 2020 18:12:23 +0000 (20:12 +0200)
pico/pico_int.h
pico/videoport.c

index 86cfb77..1a2e408 100644 (file)
@@ -857,7 +857,7 @@ static __inline void VideoWriteVRAM(u32 a, u16 d)
 {\r
   PicoMem.vram [(u16)a >> 1] = d;\r
 \r
-  if (!((u16)(a^SATaddr) & SATmask))\r
+  if (((a^SATaddr) & SATmask) == 0)\r
     UpdateSAT(a, d);\r
 }\r
 \r
index fec862f..c922149 100644 (file)
@@ -334,7 +334,7 @@ static NOINLINE void VideoWriteVRAM128(u32 a, u16 d)
   if (!((u16)(b^SATaddr) & SATmask))\r
     Pico.est.rendstatus |= PDRAW_DIRTY_SPRITES;\r
 \r
-  if (!((u16)(a^SATaddr) & SATmask))\r
+  if (((a^SATaddr) & SATmask) == 0)\r
     UpdateSAT(a, d);\r
 }\r
 \r
@@ -539,7 +539,7 @@ static void DmaCopy(int len)
   for (; len; len--)\r
   {\r
     vr[(u16)a] = vr[(u16)(source++)];\r
-    if (!((u16)(a^SATaddr) & SATmask))\r
+    if (((a^SATaddr) & SATmask) == 0)\r
       UpdateSAT(a, ((u16 *)vr)[(u16)a >> 1]);\r
     // AutoIncrement\r
     a = (a+inc) & ~0x20000;\r
@@ -579,7 +579,7 @@ static NOINLINE void DmaFill(int data)
         // Write upper byte to adjacent address\r
         // (here we are byteswapped, so address is already 'adjacent')\r
         vr[(u16)a] = high;\r
-        if (!((u16)(a^SATaddr) & SATmask))\r
+        if (((a^SATaddr) & SATmask) == 0)\r
           UpdateSAT(a, ((u16 *)vr)[(u16)a >> 1]);\r
 \r
         // Increment address register\r