+/***********************************************************\r
+ * *\r
+ * This source was taken from the Gens project *\r
+ * Written by Stéphane Dallongeville *\r
+ * Copyright (c) 2002 by Stéphane Dallongeville *\r
+ * Modified/adapted for PicoDrive by notaz, 2007 *\r
+ * *\r
+ ***********************************************************/\r
+\r
#include <stdio.h>\r
-#include "cd_sys.h"\r
-#include "cd_file.h"\r
\r
#include "../PicoInt.h"\r
+#include "cd_sys.h"\r
+#include "cd_file.h"\r
\r
#define cdprintf dprintf\r
//#define cdprintf(x...)\r
#define PLAYING 0x0100 // PLAYING audio track CDD status\r
\r
\r
-/*\r
-int CDDA_Enable;\r
-\r
-int CD_Audio_Buffer_L[8192];\r
-int CD_Audio_Buffer_R[8192];\r
-int CD_Audio_Buffer_Read_Pos = 0;\r
-int CD_Audio_Buffer_Write_Pos = 2000;\r
-int CD_Audio_Starting;\r
-*/\r
-\r
static int CD_Present = 0;\r
-// int CD_Timer_Counter = 0; // TODO: check refs\r
-\r
\r
\r
#define CHECK_TRAY_OPEN \\r
}\r
\r
\r
-#if 0\r
-static void MSB2DWORD(unsigned int *d, unsigned char *b)\r
-{\r
- unsigned int retVal;\r
-\r
- retVal = (unsigned int )b[0];\r
- retVal = (retVal<<8) + (unsigned int )b[1];\r
- retVal = (retVal<<8) + (unsigned int )b[2];\r
- retVal = (retVal<<8) + (unsigned int )b[3];\r
-\r
- *d = retVal;\r
-}\r
-#endif\r
-\r
static int MSF_to_LBA(_msf *MSF)\r
{\r
return (MSF->M * 60 * 75) + (MSF->S * 75) + MSF->F - 150;\r
}\r
\r
\r
-void LBA_to_MSF(int lba, _msf *MSF)\r
+PICO_INTERNAL void LBA_to_MSF(int lba, _msf *MSF)\r
{\r
if (lba < -150) lba = 0;\r
else lba += 150;\r
}\r
\r
\r
-int Track_to_LBA(int track)\r
+PICO_INTERNAL int Track_to_LBA(int track)\r
{\r
_msf MSF;\r
\r
}\r
\r
\r
-void Check_CD_Command(void)\r
+PICO_INTERNAL void Check_CD_Command(void)\r
{\r
cdprintf("CHECK CD COMMAND");\r
\r
}\r
\r
\r
-int Init_CD_Driver(void)\r
+PICO_INTERNAL int Init_CD_Driver(void)\r
{\r
return 0;\r
}\r
\r
\r
-void End_CD_Driver(void)\r
+PICO_INTERNAL void End_CD_Driver(void)\r
{\r
- FILE_End();\r
+ Unload_ISO();\r
}\r
\r
\r
-void Reset_CD(void)\r
+PICO_INTERNAL void Reset_CD(void)\r
{\r
Pico_mcd->scd.Cur_Track = 0;\r
Pico_mcd->scd.Cur_LBA = -150;\r
{\r
int ret = 0;\r
\r
-// memset(CD_Audio_Buffer_L, 0, 4096 * 4);\r
-// memset(CD_Audio_Buffer_R, 0, 4096 * 4);\r
-\r
CD_Present = 0;\r
Pico_mcd->scd.Status_CDD = NOCD;\r
\r
}\r
\r
\r
-void Change_CD(void)\r
+/*\r
+PICO_INTERNAL void Change_CD(void)\r
{\r
if (Pico_mcd->scd.Status_CDD == TRAY_OPEN) Close_Tray_CDD_cC();\r
else Open_Tray_CDD_cD();\r
}\r
+*/\r
\r
-\r
-int Get_Status_CDD_c0(void)\r
+PICO_INTERNAL int Get_Status_CDD_c0(void)\r
{\r
cdprintf("Status command : Cur LBA = %d", Pico_mcd->scd.Cur_LBA);\r
\r
}\r
\r
\r
-int Stop_CDD_c1(void)\r
+PICO_INTERNAL int Stop_CDD_c1(void)\r
{\r
CHECK_TRAY_OPEN\r
\r
}\r
\r
\r
-int Get_Pos_CDD_c20(void)\r
+PICO_INTERNAL int Get_Pos_CDD_c20(void)\r
{\r
_msf MSF;\r
\r
}\r
\r
\r
-int Get_Track_Pos_CDD_c21(void)\r
+PICO_INTERNAL int Get_Track_Pos_CDD_c21(void)\r
{\r
int elapsed_time;\r
_msf MSF;\r
}\r
\r
\r
-int Get_Current_Track_CDD_c22(void)\r
+PICO_INTERNAL int Get_Current_Track_CDD_c22(void)\r
{\r
cdprintf("Status CDD = %.4X Status = %.4X", Pico_mcd->scd.Status_CDD, Pico_mcd->cdd.Status);\r
\r
}\r
\r
\r
-int Get_Total_Lenght_CDD_c23(void)\r
+PICO_INTERNAL int Get_Total_Lenght_CDD_c23(void)\r
{\r
CHECK_TRAY_OPEN\r
\r
}\r
\r
\r
-int Get_First_Last_Track_CDD_c24(void)\r
+PICO_INTERNAL int Get_First_Last_Track_CDD_c24(void)\r
{\r
CHECK_TRAY_OPEN\r
\r
}\r
\r
\r
-int Get_Track_Adr_CDD_c25(void)\r
+PICO_INTERNAL int Get_Track_Adr_CDD_c25(void)\r
{\r
int track_number;\r
\r
}\r
\r
\r
-int Play_CDD_c3(void)\r
+PICO_INTERNAL int Play_CDD_c3(void)\r
{\r
_msf MSF;\r
int delay, new_lba;\r
}\r
\r
\r
-int Seek_CDD_c4(void)\r
+PICO_INTERNAL int Seek_CDD_c4(void)\r
{\r
_msf MSF;\r
\r
}\r
\r
\r
-int Pause_CDD_c6(void)\r
+PICO_INTERNAL int Pause_CDD_c6(void)\r
{\r
CHECK_TRAY_OPEN\r
CHECK_CD_PRESENT\r
}\r
\r
\r
-int Resume_CDD_c7(void)\r
+PICO_INTERNAL int Resume_CDD_c7(void)\r
{\r
CHECK_TRAY_OPEN\r
CHECK_CD_PRESENT\r
}\r
\r
\r
-int Fast_Foward_CDD_c8(void)\r
+PICO_INTERNAL int Fast_Foward_CDD_c8(void)\r
{\r
CHECK_TRAY_OPEN\r
CHECK_CD_PRESENT\r
}\r
\r
\r
-int Fast_Rewind_CDD_c9(void)\r
+PICO_INTERNAL int Fast_Rewind_CDD_c9(void)\r
{\r
CHECK_TRAY_OPEN\r
CHECK_CD_PRESENT\r
}\r
\r
\r
-int Close_Tray_CDD_cC(void)\r
+PICO_INTERNAL int Close_Tray_CDD_cC(void)\r
{\r
CD_Present = 0;\r
//Clear_Sound_Buffer();\r
}\r
\r
\r
-int Open_Tray_CDD_cD(void)\r
+PICO_INTERNAL int Open_Tray_CDD_cD(void)\r
{\r
CHECK_TRAY_OPEN\r
\r
}\r
\r
\r
-int CDD_cA(void)\r
+PICO_INTERNAL int CDD_cA(void)\r
{\r
CHECK_TRAY_OPEN\r
CHECK_CD_PRESENT\r
}\r
\r
\r
-int CDD_Def(void)\r
+PICO_INTERNAL int CDD_Def(void)\r
{\r
Pico_mcd->cdd.Status = Pico_mcd->scd.Status_CDD;\r
\r