32x: packed pixel mode (works over 68k)
[picodrive.git] / pico / pico_cmn.c
index cc77f5f..407309a 100644 (file)
@@ -31,7 +31,6 @@
 }
 #endif
 
-// Accurate but slower frame which does hints
 static int PicoFrameHints(void)
 {
   struct PicoVideo *pv=&Pico.video;
@@ -64,6 +63,7 @@ static int PicoFrameHints(void)
   SekCyclesResetS68k();
 #endif
   PsndDacLine = 0;
+  emustatus &= ~1;
 
   pv->status&=~0x88; // clear V-Int, come out of vblank
 
@@ -118,19 +118,15 @@ static int PicoFrameHints(void)
       }
     }
 
-#ifndef PICO_CD
     // get samples from sound chips
-    if (y == 32 && PsndOut)
-      emustatus &= ~1;
-    else if ((y == 224 || y == line_sample) && PsndOut)
+    if ((y == 224 || y == line_sample) && PsndOut)
     {
       if (Pico.m.z80Run && !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80))
         PicoSyncZ80(SekCycleCnt);
       if (ym2612.dacen && PsndDacLine <= y)
         PsndDoDAC(y);
-      getSamples(y);
+      PsndGetSamples(y);
     }
-#endif
 
     // Run scanline:
     if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA());
@@ -179,6 +175,10 @@ static int PicoFrameHints(void)
   pv->status|=0x08; // go into vblank
   pv->pending_ints|=0x20;
 
+#ifdef PICO_32X
+  p32x_start_blank();
+#endif
+
   // the following SekRun is there for several reasons:
   // there must be a delay after vblank bit is set and irq is asserted (Mazin Saga)
   // also delay between F bit (bit 7) is set in SR and IRQ happens (Ex-Mutants)
@@ -196,15 +196,12 @@ static int PicoFrameHints(void)
   }
 
   // get samples from sound chips
-#ifndef PICO_CD
-  if (y == 224)
-#endif
-    if (PsndOut)
-    {
-      if (ym2612.dacen && PsndDacLine <= y)
-        PsndDoDAC(y);
-      getSamples(y);
-    }
+  if (y == 224 && PsndOut)
+  {
+    if (ym2612.dacen && PsndDacLine <= y)
+      PsndDoDAC(y);
+    PsndGetSamples(y);
+  }
 
   // Run scanline:
   if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA());