SekStepM68k restored, pad read issues with D&D fixed
[picodrive.git] / Pico / PicoFrameHints.c
index 4386299..cc77f5f 100644 (file)
@@ -124,7 +124,7 @@ static int PicoFrameHints(void)
       emustatus &= ~1;
     else if ((y == 224 || y == line_sample) && PsndOut)
     {
-      if (Pico.m.z80Run && (PicoOpt&POPT_EN_Z80))
+      if (Pico.m.z80Run && !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80))
         PicoSyncZ80(SekCycleCnt);
       if (ym2612.dacen && PsndDacLine <= y)
         PsndDoDAC(y);
@@ -139,7 +139,7 @@ static int PicoFrameHints(void)
 #ifdef PICO_CD
     update_chips();
 #else
-    if (PicoLineHook) PicoLineHook(1);
+    if (PicoLineHook) PicoLineHook();
 #endif
   }
 
@@ -161,6 +161,7 @@ static int PicoFrameHints(void)
   pv->lwrite_cnt=0;
   Pico.video.status|=0x200;
 
+  memcpy(PicoPadInt, PicoPad, sizeof(PicoPadInt));
   PAD_DELAY
 #ifdef PICO_CD
   check_cd_dma();
@@ -188,7 +189,7 @@ static int PicoFrameHints(void)
     elprintf(EL_INTS, "vint: @ %06x [%i]", SekPc, SekCycleCnt);
     SekInterrupt(6);
   }
-  if (Pico.m.z80Run && (PicoOpt&POPT_EN_Z80)) {
+  if (Pico.m.z80Run && !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80)) {
     PicoSyncZ80(SekCycleCnt);
     elprintf(EL_INTS, "zint");
     z80_int();
@@ -213,7 +214,7 @@ static int PicoFrameHints(void)
 #ifdef PICO_CD
   update_chips();
 #else
-  if (PicoLineHook) PicoLineHook(1);
+  if (PicoLineHook) PicoLineHook();
 #endif
 
   // PAL line count might actually be 313 according to Steve Snake, but that would complicate things.
@@ -241,12 +242,12 @@ static int PicoFrameHints(void)
 #ifdef PICO_CD
     update_chips();
 #else
-    if (PicoLineHook) PicoLineHook(1);
+    if (PicoLineHook) PicoLineHook();
 #endif
   }
 
   // sync z80
-  if (Pico.m.z80Run && (PicoOpt&POPT_EN_Z80))
+  if (Pico.m.z80Run && !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80))
     PicoSyncZ80(Pico.m.pal ? 151809 : 127671); // cycles adjusted for converter
   if (PsndOut && ym2612.dacen && PsndDacLine <= lines-1)
     PsndDoDAC(lines-1);