save event times to savestates
[picodrive.git] / pico / state.c
index 6b91d48..761b64c 100644 (file)
@@ -174,6 +174,7 @@ typedef enum {
   CHUNK_SDRAM,\r
   CHUNK_DRAM,\r
   CHUNK_32XPAL,\r
+  CHUNK_32X_EVT,\r
   //\r
   CHUNK_DEFAULT_COUNT,\r
   CHUNK_CARTHW_ = CHUNK_CARTHW,  // defined in PicoInt\r
@@ -222,6 +223,7 @@ static const char * const chunk_names[] = {
   "SDRAM",\r
   "DRAM",\r
   "PAL",\r
+  "events",\r
 };\r
 \r
 static int write_chunk(chunk_name_e name, int len, void *data, void *file)\r
@@ -334,7 +336,9 @@ static int state_save(void *file)
     CHECKED_WRITE_BUFF(CHUNK_DRAM,      Pico32xMem->dram);\r
     CHECKED_WRITE_BUFF(CHUNK_32XPAL,    Pico32xMem->pal);\r
 \r
-    sh2s[0].m68krcycles_done = sh2s[1].m68krcycles_done = SekCycleCnt;\r
+    memset(buff, 0, 0x40);\r
+    memcpy(buff, event_times, sizeof(event_times));\r
+    CHECKED_WRITE(CHUNK_32X_EVT, 0x40, buff);\r
   }\r
 #endif\r
 \r
@@ -384,6 +388,7 @@ static int state_load(void *file)
   unsigned char buff_m68k[0x60], buff_s68k[0x60];\r
   unsigned char buff_z80[Z80_STATE_SIZE];\r
   unsigned char buff_sh2[SH2_STATE_SIZE];\r
+  unsigned char buff[0x40];\r
   unsigned char chunk;\r
   void *ym2612_regs;\r
   char header[8];\r
@@ -478,6 +483,11 @@ static int state_load(void *file)
       case CHUNK_SDRAM:       CHECKED_READ_BUFF(Pico32xMem->sdram); break;\r
       case CHUNK_DRAM:        CHECKED_READ_BUFF(Pico32xMem->dram); break;\r
       case CHUNK_32XPAL:      CHECKED_READ_BUFF(Pico32xMem->pal); break;\r
+\r
+      case CHUNK_32X_EVT:\r
+        CHECKED_READ_BUFF(buff);\r
+        memcpy(event_times, buff, sizeof(event_times));\r
+        break;\r
 #endif\r
       default:\r
         if (carthw_chunks != NULL)\r