cd sync improvements
[picodrive.git] / pico / pico_int.h
index ef49295..c23705b 100644 (file)
@@ -132,7 +132,11 @@ extern unsigned int SekCycleAim;
 \r
 // burn cycles while not in SekRun() and while in\r
 #define SekCyclesBurn(c)    SekCycleCnt += c\r
-#define SekCyclesBurnRun(c) SekCyclesLeft -= c\r
+#define SekCyclesBurnRun(c) { \\r
+  SekCyclesLeft -= c; \\r
+  if (SekCyclesLeft < 0) \\r
+    SekCyclesLeft = 0; \\r
+}\r
 \r
 // note: sometimes may extend timeslice to delay an irq\r
 #define SekEndRun(after) { \\r
@@ -383,9 +387,12 @@ struct mcd_misc
        unsigned short hint_vector;\r
        unsigned char  busreq;\r
        unsigned char  s68k_pend_ints;\r
-       unsigned int   state_flags;     // 04: emu state: reset_pending\r
+       unsigned int   state_flags;     // 04\r
        unsigned int   stopwatch_base_c;\r
-       unsigned int   pad[3];\r
+       unsigned int   m68k_comm_dirty;\r
+       unsigned short m68k_poll_a;\r
+       unsigned short m68k_poll_cnt;\r
+       unsigned int   pad;\r
        unsigned char  bcram_reg;       // 18: battery-backed RAM cart register\r
        unsigned char  pad2;\r
        unsigned short pad3;\r
@@ -624,6 +631,7 @@ extern unsigned int pcd_event_times[PCD_EVENT_COUNT];
 void pcd_event_schedule(unsigned int now, enum pcd_event event, int after);\r
 void pcd_event_schedule_s68k(enum pcd_event event, int after);\r
 unsigned int pcd_cycles_m68k_to_s68k(unsigned int c);\r
+void pcd_sync_s68k(unsigned int m68k_target);\r
 void pcd_state_loaded(void);\r
 \r
 // pico/pico.c\r