region detection, cd states wip, fixes, stuff
[picodrive.git] / Pico / cd / cd_sys.h
CommitLineData
cc68a136 1#ifndef _CD_SYS_H\r
2#define _CD_SYS_H\r
3\r
4#ifdef __cplusplus\r
5extern "C" {\r
6#endif\r
7\r
8\r
9#define INT_TO_BCDB(c) \\r
10((c) > 99)?(0x99):((((c) / 10) << 4) + ((c) % 10));\r
11\r
12#define INT_TO_BCDW(c) \\r
13((c) > 99)?(0x0909):((((c) / 10) << 8) + ((c) % 10));\r
14\r
15#define BCDB_TO_INT(c) \\r
16(((c) >> 4) * 10) + ((c) & 0xF);\r
17\r
18#define BCDW_TO_INT(c) \\r
19(((c) >> 8) * 10) + ((c) & 0xF);\r
20\r
21\r
22typedef struct\r
23{\r
24 unsigned char M;\r
25 unsigned char S;\r
26 unsigned char F;\r
27} _msf;\r
28\r
29typedef struct\r
30{\r
31 unsigned char Type;\r
32 unsigned char Num;\r
33 _msf MSF;\r
34} _scd_track;\r
35\r
36typedef struct\r
37{\r
38 unsigned char First_Track;\r
39 unsigned char Last_Track;\r
40 _scd_track Tracks[100];\r
41} _scd_toc;\r
42\r
43typedef struct {\r
44 unsigned int Status_CDD;\r
45 unsigned int Status_CDC;\r
46 _scd_toc TOC;\r
47 int Cur_LBA;\r
48 unsigned int Cur_Track;\r
51a902ae 49 int File_Add_Delay;\r
50 char CDD_Complete;\r
cc68a136 51} _scd;\r
52\r
53\r
cc68a136 54void LBA_to_MSF(int lba, _msf *MSF);\r
55int Track_to_LBA(int track);\r
56\r
57\r
58void Check_CD_Command(void);\r
59\r
60int Init_CD_Driver(void);\r
61void End_CD_Driver(void);\r
bf098bc5 62int Insert_CD(char *iso_name, int is_bin);\r
cc68a136 63void Stop_CD(void);\r
64void Change_CD(void);\r
65void Reset_CD(void);\r
66\r
67int Get_Status_CDD_c0(void);\r
68int Stop_CDD_c1(void);\r
69int Get_Pos_CDD_c20(void);\r
70int Get_Track_Pos_CDD_c21(void);\r
71int Get_Current_Track_CDD_c22(void);\r
72int Get_Total_Lenght_CDD_c23(void);\r
73int Get_First_Last_Track_CDD_c24(void);\r
74int Get_Track_Adr_CDD_c25(void);\r
75int Play_CDD_c3(void);\r
76int Seek_CDD_c4(void);\r
77int Pause_CDD_c6(void);\r
78int Resume_CDD_c7(void);\r
79int Fast_Foward_CDD_c8(void);\r
80int Fast_Rewind_CDD_c9(void);\r
81int CDD_cA(void);\r
82int Close_Tray_CDD_cC(void);\r
83int Open_Tray_CDD_cD(void);\r
84\r
85int CDD_Def(void);\r
86\r
87//void Write_CD_Audio(short *Buf, int rate, int channel, int lenght);\r
88//void Update_CD_Audio(int **Buf, int lenght);\r
89\r
90\r
91#ifdef __cplusplus\r
92};\r
93#endif\r
94\r
95#endif\r
96\r