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