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