add a hack for Decap Attack
[picodrive.git] / pico / pico_cmn.c
index fc12a76..1f89da9 100644 (file)
@@ -113,9 +113,7 @@ static int PicoFrameHints(void)
   z80_resetCycles();
   PsndStartFrame();
 
-  // Load H-Int counter
-  hint = (pv->status & PVS_ACTIVE) ? pv->hint_cnt : pv->reg[10];
-
+  hint = pv->hint_cnt;
   pv->status |= PVS_ACTIVE;
 
   for (y = 0; ; y++)
@@ -153,7 +151,7 @@ static int PicoFrameHints(void)
     }
 
     // get samples from sound chips
-    if ((y == 224 || y == line_sample) && PsndOut)
+    if ((y == 224 || y == line_sample) && PicoIn.sndOut)
     {
       cycles = SekCyclesDone();
 
@@ -241,7 +239,7 @@ static int PicoFrameHints(void)
 #endif
 
   // get samples from sound chips
-  if (y == 224 && PsndOut)
+  if (y == 224 && PicoIn.sndOut)
     PsndGetSamples(y);
 
   // Run scanline:
@@ -306,11 +304,14 @@ static int PicoFrameHints(void)
 
   PAD_DELAY();
 
-  if ((pv->status & PVS_ACTIVE) && --hint < 0)
-  {
-    hint = pv->reg[10]; // Reload H-Int counter
-    do_hint(pv);
+  if (unlikely(pv->status & PVS_ACTIVE)) {
+    if (--hint < 0) {
+      hint = pv->reg[10]; // Reload H-Int counter
+      do_hint(pv);
+    }
   }
+  else
+    hint = pv->reg[10];
 
   // Run scanline:
   Pico.t.m68c_line_start = Pico.t.m68c_aim;
@@ -324,9 +325,9 @@ static int PicoFrameHints(void)
   cycles = SekCyclesDone();
   if (Pico.m.z80Run && !Pico.m.z80_reset && (PicoIn.opt&POPT_EN_Z80))
     PicoSyncZ80(cycles);
-  if (PsndOut && ym2612.dacen && PsndDacLine < lines)
+  if (PicoIn.sndOut && ym2612.dacen && Pico.snd.dac_line < lines)
     PsndDoDAC(lines - 1);
-  if (PsndOut && PsndPsgLine < lines)
+  if (PicoIn.sndOut && Pico.snd.psg_line < lines)
     PsndDoPSG(lines - 1);
 
 #ifdef PICO_CD