distinguish VR SVP from 32X version
[picodrive.git] / pico / pico_cmn.c
index 12f649f..f4e20d2 100644 (file)
 #define CYCLES_S68K_ASD      241
 
 // pad delay (for 6 button pads)
-#define PAD_DELAY \
-  if (PicoOpt&POPT_6BTN_PAD) { \
-    if(Pico.m.padDelay[0]++ > 25) Pico.m.padTHPhase[0]=0; \
-    if(Pico.m.padDelay[1]++ > 25) Pico.m.padTHPhase[1]=0; \
-  }
+#define PAD_DELAY() { \
+  if(Pico.m.padDelay[0]++ > 25) Pico.m.padTHPhase[0]=0; \
+  if(Pico.m.padDelay[1]++ > 25) Pico.m.padTHPhase[1]=0; \
+}
 
 // CPUS_RUN
 #ifndef CPUS_RUN
@@ -30,9 +29,12 @@ static __inline void SekRunM68k(int cyc)
 {
   int cyc_do;
   pprof_start(m68k);
+  pevt_log_m68k_o(EVT_RUN_START);
 
   SekCycleAim+=cyc;
-  if ((cyc_do=SekCycleAim-SekCycleCnt) <= 0) return;
+  if ((cyc_do=SekCycleAim-SekCycleCnt) <= 0)
+    goto out;
+
 #if defined(EMU_CORE_DEBUG)
   // this means we do run-compare
   SekCycleCnt+=CM_compareRun(cyc_do, 0);
@@ -43,9 +45,12 @@ static __inline void SekRunM68k(int cyc)
 #elif defined(EMU_M68K)
   SekCycleCnt+=m68k_execute(cyc_do);
 #elif defined(EMU_F68K)
-  SekCycleCnt+=fm68k_emulate(cyc_do+1, 0, 0);
+  SekCycleCnt+=fm68k_emulate(cyc_do, 0, 0);
 #endif
 
+out:
+  SekTrace(0);
+  pevt_log_m68k_o(EVT_RUN_END);
   pprof_end(m68k);
 }
 
@@ -55,6 +60,7 @@ static int PicoFrameHints(void)
   int lines, y, lines_vis = 224, line_sample, skip, vcnt_wrap;
   int hint; // Hint counter
 
+  pevt_log_m68k_o(EVT_FRAME_START);
   pv->v_counter = Pico.m.scanline = 0;
 
   if ((PicoOpt&POPT_ALT_RENDERER) && !PicoSkipFrame && (pv->reg[1]&0x40)) { // fast rend., display enabled
@@ -107,7 +113,7 @@ static int PicoFrameHints(void)
       Pico.video.status|=0x200;
     }
 
-    PAD_DELAY
+    PAD_DELAY();
 #ifdef PICO_CD
     check_cd_dma();
 #endif
@@ -144,7 +150,7 @@ static int PicoFrameHints(void)
       if (ym2612.dacen && PsndDacLine <= y)
         PsndDoDAC(y);
 #ifdef PICO_32X
-      p32x_sync_sh2s(SekCycleCntT + SekCycleCnt);
+      p32x_sync_sh2s(SekCyclesDoneT2());
 #endif
       PsndGetSamples(y);
     }
@@ -158,6 +164,7 @@ static int PicoFrameHints(void)
 #else
     if (PicoLineHook) PicoLineHook();
 #endif
+    pevt_log_m68k_o(EVT_NEXT_LINE);
   }
 
   if (!skip)
@@ -179,7 +186,7 @@ static int PicoFrameHints(void)
   Pico.video.status|=0x200;
 
   memcpy(PicoPadInt, PicoPad, sizeof(PicoPadInt));
-  PAD_DELAY
+  PAD_DELAY();
 #ifdef PICO_CD
   check_cd_dma();
 #endif
@@ -213,7 +220,7 @@ static int PicoFrameHints(void)
   }
 
 #ifdef PICO_32X
-  p32x_sync_sh2s(SekCycleCntT + SekCycleCnt);
+  p32x_sync_sh2s(SekCyclesDoneT2());
   p32x_start_blank();
 #endif
 
@@ -235,6 +242,7 @@ static int PicoFrameHints(void)
 #else
   if (PicoLineHook) PicoLineHook();
 #endif
+  pevt_log_m68k_o(EVT_NEXT_LINE);
 
   lines = scanlines_total;
   vcnt_wrap = Pico.m.pal ? 0x103 : 0xEB; // based on Gens, TODO: verify
@@ -248,7 +256,7 @@ static int PicoFrameHints(void)
       pv->v_counter = (pv->v_counter << 1) | 1;
     pv->v_counter &= 0xff;
 
-    PAD_DELAY
+    PAD_DELAY();
 #ifdef PICO_CD
     check_cd_dma();
 #endif
@@ -262,6 +270,7 @@ static int PicoFrameHints(void)
 #else
     if (PicoLineHook) PicoLineHook();
 #endif
+    pevt_log_m68k_o(EVT_NEXT_LINE);
   }
 
   // sync z80
@@ -271,7 +280,7 @@ static int PicoFrameHints(void)
     PsndDoDAC(lines-1);
 
 #ifdef PICO_32X
-  p32x_sync_sh2s(SekCycleCntT + SekCycleCnt);
+  p32x_sync_sh2s(SekCyclesDoneT2());
 #endif
   timers_cycle();