core, fix cpu sync regression
authorkub <derkub@gmail.com>
Sun, 16 Oct 2022 19:27:15 +0000 (19:27 +0000)
committerkub <derkub@gmail.com>
Sun, 16 Oct 2022 20:17:42 +0000 (20:17 +0000)
pico/pico_cmn.c

index b2b3475..27ed5fd 100644 (file)
@@ -118,8 +118,7 @@ static int PicoFrameHints(void)
   // === active display ===
   pv->status |= PVS_ACTIVE;
 
-  lines_vis = (pv->reg[1] & 8) ? 240 : 224;
-  for (y = 0; y < lines_vis; y++)
+  for (y = 0; ; y++)
   {
     pv->v_counter = Pico.m.scanline = y;
     if ((pv->reg[12]&6) == 6) { // interlace mode 2
@@ -128,6 +127,9 @@ static int PicoFrameHints(void)
       pv->v_counter &= 0xff;
     }
 
+    if (y == (pv->reg[1] & 8 ? 240 : 224))
+      break;
+
     PAD_DELAY();
 
     // H-Interrupts:
@@ -175,7 +177,9 @@ static int PicoFrameHints(void)
 #endif
 
   // === VBLANK, 1st line ===
-  pv->status &= ~PVS_ACTIVE;
+  lines_vis = (pv->reg[1] & 8) ? 240 : 224;
+  if (y == lines_vis)
+    pv->status &= ~PVS_ACTIVE;
 
   memcpy(PicoIn.padInt, PicoIn.pad, sizeof(PicoIn.padInt));
   PAD_DELAY();