1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 #include "SDL.h"
6
7 #include "fixer.h"
8 #include "win95/cd_player.h"
9 #include "cdplayer.h"
10
11 /* cd_player.cpp */
12 int CDPlayerVolume;
13
14 #if SDL_MAJOR_VERSION < 2
15 static int HaveCDROM = 0;
16 static SDL_CD *cdrom = NULL;
17
18 /* ** */
19
CheckCDVolume()20 void CheckCDVolume()
21 {
22 /*
23 fprintf(stderr, "CheckCDVolume()\n");
24 */
25 }
26
27 /* ** */
28
CDDA_Start()29 void CDDA_Start()
30 {
31 /*
32 fprintf(stderr, "CDDA_Start()\n");
33 */
34
35 int numdrives;
36
37 if (!HaveCDROM) {
38 HaveCDROM = 1;
39 SDL_InitSubSystem(SDL_INIT_CDROM);
40 }
41
42 if (cdrom != NULL)
43 CDDA_End();
44
45 numdrives = SDL_CDNumDrives();
46
47 if (numdrives == 0)
48 return;
49
50 cdrom = SDL_CDOpen(0);
51 }
52
CDDA_End()53 void CDDA_End()
54 {
55 /*
56 fprintf(stderr, "CDDA_End()\n");
57 */
58
59 if (cdrom != NULL) {
60 CDDA_Stop();
61
62 SDL_CDClose(cdrom);
63 }
64
65 cdrom = NULL;
66 }
67
CDDA_ChangeVolume(int volume)68 void CDDA_ChangeVolume(int volume)
69 {
70 fprintf(stderr, "CDDA_ChangeVolume(%d)\n", volume);
71 }
72
CDDA_CheckNumberOfTracks()73 int CDDA_CheckNumberOfTracks()
74 {
75 /*
76 fprintf(stderr, "CDDA_CheckNumberOfTracks()\n");
77 */
78
79 if (cdrom == NULL)
80 return 0;
81
82 return cdrom->numtracks;
83 }
84
CDDA_IsOn()85 int CDDA_IsOn()
86 {
87 /*
88 fprintf(stderr, "CDDA_IsOn()\n");
89 */
90 return (cdrom != NULL);
91 }
92
CDDA_IsPlaying()93 int CDDA_IsPlaying()
94 {
95 /*
96 fprintf(stderr, "CDDA_IsPlaying()\n");
97 */
98 if (cdrom == NULL)
99 return 0;
100
101 return (SDL_CDStatus(cdrom) == CD_PLAYING);
102 }
103
CDDA_Play(int CDDATrack)104 void CDDA_Play(int CDDATrack)
105 {
106 /*
107 fprintf(stderr, "CDDA_Play(%d)\n", CDDATrack);
108 */
109 if (cdrom == NULL)
110 return;
111
112 if (CD_INDRIVE(SDL_CDStatus(cdrom))) {
113 int track = CDDATrack - 1;
114 int i;
115
116 if (cdrom->numtracks == 0)
117 return;
118
119 track %= cdrom->numtracks;
120
121 for (i = 0; i < cdrom->numtracks; i++) {
122 if (cdrom->track[track].type == SDL_AUDIO_TRACK) {
123 SDL_CDPlayTracks(cdrom, track, 0, 1, 0);
124 return;
125 }
126
127 track++;
128 track %= cdrom->numtracks;
129 }
130 }
131 }
132
CDDA_PlayLoop(int CDDATrack)133 void CDDA_PlayLoop(int CDDATrack)
134 {
135 fprintf(stderr, "CDDA_PlayLoop(%d)\n", CDDATrack);
136
137 /* can't loop with SDL without a thread, so just play the track */
138 CDDA_Play(CDDATrack);
139 }
140
CDDA_Stop()141 void CDDA_Stop()
142 {
143 /*
144 fprintf(stderr, "CDDA_Stop()\n");
145 */
146 if (cdrom == NULL)
147 return;
148
149 if (CD_INDRIVE(SDL_CDStatus(cdrom)))
150 SDL_CDStop(cdrom);
151 }
152
CDDA_SwitchOn()153 void CDDA_SwitchOn()
154 {
155 /*
156 fprintf(stderr, "CDDA_SwitchOn()\n");
157 */
158 }
159
160 #else
161
162 // What's a CD?
163
CheckCDVolume()164 void CheckCDVolume()
165 {
166 }
167
168 /* ** */
169
CDDA_Start()170 void CDDA_Start()
171 {
172 }
173
CDDA_End()174 void CDDA_End()
175 {
176 }
177
CDDA_ChangeVolume(int volume)178 void CDDA_ChangeVolume(int volume)
179 {
180 }
181
CDDA_CheckNumberOfTracks()182 int CDDA_CheckNumberOfTracks()
183 {
184 return 0;
185 }
186
CDDA_IsOn()187 int CDDA_IsOn()
188 {
189 return 0;
190 }
191
CDDA_IsPlaying()192 int CDDA_IsPlaying()
193 {
194 return 0;
195 }
196
CDDA_Play(int CDDATrack)197 void CDDA_Play(int CDDATrack)
198 {
199 }
200
CDDA_PlayLoop(int CDDATrack)201 void CDDA_PlayLoop(int CDDATrack)
202 {
203 }
204
CDDA_Stop()205 void CDDA_Stop()
206 {
207 }
208
CDDA_SwitchOn()209 void CDDA_SwitchOn()
210 {
211 }
212
213 #endif
214