cd: some fixes
[picodrive.git] / pico / cd / cd_sys.c
index 319f4f1..6b92d56 100644 (file)
@@ -196,7 +196,7 @@ PICO_INTERNAL void Reset_CD(void)
 }\r
 \r
 \r
-int Insert_CD(char *cdimg_name, int type)\r
+int Insert_CD(const char *cdimg_name, int type)\r
 {\r
        int ret = 1;\r
 \r
@@ -208,7 +208,9 @@ int Insert_CD(char *cdimg_name, int type)
                ret = Load_CD_Image(cdimg_name, type);\r
                if (ret == 0) {\r
                        CD_Present = 1;\r
-                       Pico_mcd->scd.Status_CDD = READY;\r
+                       /* for open tray close command will handle Status_CDD */\r
+                       if (Pico_mcd->scd.Status_CDD != TRAY_OPEN)\r
+                               Pico_mcd->scd.Status_CDD = READY;\r
                }\r
        }\r
 \r
@@ -469,6 +471,10 @@ PICO_INTERNAL int Play_CDD_c3(void)
        if (delay < 0) delay = -delay;\r
        delay >>= 12;\r
 \r
+       // based on genplys GX\r
+       if (delay < 13)\r
+               delay = 13;\r
+\r
        Pico_mcd->scd.Cur_LBA = new_lba;\r
        CDC_Update_Header();\r
 \r
@@ -651,15 +657,12 @@ PICO_INTERNAL int Fast_Rewind_CDD_c9(void)
 \r
 PICO_INTERNAL int Close_Tray_CDD_cC(void)\r
 {\r
-       CD_Present = 0;\r
-       //Clear_Sound_Buffer();\r
-\r
        Pico_mcd->scd.Status_CDC &= ~1;                 // Stop CDC read\r
 \r
        elprintf(EL_STATUS, "tray close\n");\r
 \r
        if (PicoMCDcloseTray != NULL)\r
-               CD_Present = PicoMCDcloseTray();\r
+               PicoMCDcloseTray();\r
 \r
        Pico_mcd->scd.Status_CDD = CD_Present ? STOPPED : NOCD;\r
        Pico_mcd->cdd.Status = 0x0000;\r