Browse Source

vdp rendering, fix SAT caching for high addresses >64KB

kub 3 years ago
parent
commit
3618d636d2
2 changed files with 4 additions and 4 deletions
  1. 1 1
      pico/pico_int.h
  2. 3 3
      pico/videoport.c

+ 1 - 1
pico/pico_int.h

@@ -857,7 +857,7 @@ static __inline void VideoWriteVRAM(u32 a, u16 d)
 {
   PicoMem.vram [(u16)a >> 1] = d;
 
-  if (!((u16)(a^SATaddr) & SATmask))
+  if (((a^SATaddr) & SATmask) == 0)
     UpdateSAT(a, d);
 }
 

+ 3 - 3
pico/videoport.c

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