cd: switch to CD drive emu code from genplus
[picodrive.git] / pico / state.c
index 94cefad..089957e 100644 (file)
@@ -149,8 +149,8 @@ typedef enum {
   CHUNK_GA_REGS,\r
   CHUNK_PCM,\r
   CHUNK_CDC,     // old\r
-  CHUNK_CDD,     // 20\r
-  CHUNK_SCD,\r
+  CHUNK_CDD,     // 20 old\r
+  CHUNK_SCD,     // old\r
   CHUNK_RC,      // old\r
   CHUNK_MISC_CD,\r
   //\r
@@ -177,6 +177,7 @@ typedef enum {
   CHUNK_CD_EVT = 50,\r
   CHUNK_CD_GFX,\r
   CHUNK_CD_CDC,\r
+  CHUNK_CD_CDD,\r
   //\r
   CHUNK_DEFAULT_COUNT,\r
   CHUNK_CARTHW_ = CHUNK_CARTHW,  // 64 (defined in PicoInt)\r
@@ -317,8 +318,6 @@ static int state_save(void *file)
     CHECKED_WRITE_BUFF(CHUNK_BRAM,     Pico_mcd->bram);\r
     CHECKED_WRITE_BUFF(CHUNK_GA_REGS,  Pico_mcd->s68k_regs); // GA regs, not CPU regs\r
     CHECKED_WRITE_BUFF(CHUNK_PCM,      Pico_mcd->pcm);\r
-    CHECKED_WRITE_BUFF(CHUNK_CDD,      Pico_mcd->cdd);\r
-    CHECKED_WRITE_BUFF(CHUNK_SCD,      Pico_mcd->scd);\r
     CHECKED_WRITE_BUFF(CHUNK_MISC_CD,  Pico_mcd->m);\r
     memset(buff, 0, 0x40);\r
     memcpy(buff, pcd_event_times, sizeof(pcd_event_times));\r
@@ -328,6 +327,8 @@ static int state_save(void *file)
     CHECKED_WRITE(CHUNK_CD_GFX, len, buf2);\r
     len = cdc_context_save(buf2);\r
     CHECKED_WRITE(CHUNK_CD_CDC, len, buf2);\r
+    len = cdd_context_save(buf2);\r
+    CHECKED_WRITE(CHUNK_CD_CDD, len, buf2);\r
 \r
     if (Pico_mcd->s68k_regs[3] & 4) // convert back\r
       wram_2M_to_1M(Pico_mcd->word_ram2M);\r
@@ -498,8 +499,6 @@ static int state_load(void *file)
       case CHUNK_BRAM:     CHECKED_READ_BUFF(Pico_mcd->bram); break;\r
       case CHUNK_GA_REGS:  CHECKED_READ_BUFF(Pico_mcd->s68k_regs); break;\r
       case CHUNK_PCM:      CHECKED_READ_BUFF(Pico_mcd->pcm); break;\r
-      case CHUNK_CDD:      CHECKED_READ_BUFF(Pico_mcd->cdd); break;\r
-      case CHUNK_SCD:      CHECKED_READ_BUFF(Pico_mcd->scd); break;\r
       case CHUNK_MISC_CD:  CHECKED_READ_BUFF(Pico_mcd->m); break;\r
 \r
       case CHUNK_CD_EVT:\r
@@ -517,12 +516,22 @@ static int state_load(void *file)
         len_check = cdc_context_load(buf);\r
         break;\r
 \r
+      case CHUNK_CD_CDD:\r
+        CHECKED_READ_LIM(buf);\r
+        len_check = cdd_context_load(buf);\r
+        break;\r
+\r
       // old, to be removed:\r
       case CHUNK_CDC:\r
         CHECKED_READ_LIM(buf);\r
         cdc_context_load_old(buf);\r
         break;\r
 \r
+      case CHUNK_SCD:\r
+        CHECKED_READ_LIM(buf);\r
+        cdd_context_load_old(buf);\r
+        break;\r
+\r
       // 32x stuff\r
 #ifndef NO_32X\r
       case CHUNK_MSH2:\r
@@ -596,9 +605,6 @@ readend:
   {\r
     SekCycleAimS68k = SekCycleCntS68k;\r
     pcd_state_loaded();\r
-\r
-    if (!(Pico_mcd->s68k_regs[0x36] & 1) && (Pico_mcd->scd.Status_CDC & 1))\r
-      cdda_start_play();\r
   }\r
 \r
   retval = 0;\r