From 4508748944c293618d775e346c998f025cf6d1cd Mon Sep 17 00:00:00 2001 From: Steven Fuller Date: Sun, 25 Nov 2001 22:07:35 +0000 Subject: CD Audio Support. --- src/cdplayer.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/stubs.c | 57 ----------------------- src/win95/cd_player.h | 7 ++- 3 files changed, 131 insertions(+), 58 deletions(-) create mode 100644 src/cdplayer.c (limited to 'src') diff --git a/src/cdplayer.c b/src/cdplayer.c new file mode 100644 index 0000000..5bd3a78 --- /dev/null +++ b/src/cdplayer.c @@ -0,0 +1,125 @@ +#include +#include +#include + +#include + +#include "fixer.h" +#include "win95/cd_player.h" + +static int HaveCDROM = 0; +static SDL_CD *cdrom = NULL; + +void CDDA_Start() +{ +/* + fprintf(stderr, "CDDA_Start()\n"); +*/ + + int numdrives; + + if (!HaveCDROM) { + HaveCDROM = 1; + SDL_Init(SDL_INIT_CDROM); + } + + if (cdrom != NULL) + CDDA_End(); + + numdrives = SDL_CDNumDrives(); + + if (numdrives == 0) + return; + + cdrom = SDL_CDOpen(0); +} + +void CDDA_End() +{ +/* + fprintf(stderr, "CDDA_End()\n"); +*/ + + if (cdrom != NULL) { + CDDA_Stop(); + + SDL_CDClose(cdrom); + } + + cdrom = NULL; +} + +void CDDA_ChangeVolume(int volume) +{ + fprintf(stderr, "CDDA_ChangeVolume(%d)\n", volume); +} + +int CDDA_CheckNumberOfTracks() +{ +/* + fprintf(stderr, "CDDA_CheckNumberOfTracks()\n"); +*/ + + if (cdrom == NULL) + return 0; + + return cdrom->numtracks; +} + +int CDDA_IsOn() +{ +/* + fprintf(stderr, "CDDA_IsOn()\n"); +*/ + return (cdrom != NULL); +} + +int CDDA_IsPlaying() +{ +/* + fprintf(stderr, "CDDA_IsPlaying()\n"); +*/ + if (cdrom == NULL) + return 0; + + return (SDL_CDStatus(cdrom) == CD_PLAYING); +} + +void CDDA_Play(int CDDATrack) +{ +/* + fprintf(stderr, "CDDA_Play(%d)\n", CDDATrack); +*/ + if (cdrom == NULL) + return; + + if (CD_INDRIVE(SDL_CDStatus(cdrom))) + SDL_CDPlayTracks(cdrom, CDDATrack-1, 0, 1, 0); +} + +void CDDA_PlayLoop(int CDDATrack) +{ + fprintf(stderr, "CDDA_PlayLoop(%d)\n", CDDATrack); + + /* can't loop with SDL without a thread, so just play the track */ + CDDA_Play(CDDATrack); +} + +void CDDA_Stop() +{ +/* + fprintf(stderr, "CDDA_Stop()\n"); +*/ + if (cdrom == NULL) + return; + + if (CD_INDRIVE(SDL_CDStatus(cdrom))) + SDL_CDStop(cdrom); +} + +void CDDA_SwitchOn() +{ +/* + fprintf(stderr, "CDDA_SwitchOn()\n"); +*/ +} diff --git a/src/stubs.c b/src/stubs.c index 341c5f6..d1f2097 100644 --- a/src/stubs.c +++ b/src/stubs.c @@ -308,63 +308,6 @@ void GenerateDirectDrawSurface() int use_mmx_math = 0; -/* cd_player.c */ -void CDDA_Start() -{ - fprintf(stderr, "CDDA_Start()\n"); -} - -void CDDA_End() -{ - fprintf(stderr, "CDDA_End()\n"); -} - -void CDDA_ChangeVolume(int volume) -{ - fprintf(stderr, "CDDA_ChangeVolume(%d)\n", volume); -} - -int CDDA_CheckNumberOfTracks() -{ - fprintf(stderr, "CDDA_CheckNumberOfTracks()\n"); - - return 0; -} - -int CDDA_IsOn() -{ - fprintf(stderr, "CDDA_IsOn()\n"); - - return 0; -} - -int CDDA_IsPlaying() -{ - fprintf(stderr, "CDDA_IsPlaying()\n"); - - return 0; -} - -void CDDA_Play(int CDDATrack) -{ - fprintf(stderr, "CDDA_Play(%d)\n", CDDATrack); -} - -void CDDA_PlayLoop(int CDDATrack) -{ - fprintf(stderr, "CDDA_PlayLoop(%d)\n", CDDATrack); -} - -void CDDA_Stop() -{ - fprintf(stderr, "CDDA_Stop()\n"); -} - -void CDDA_SwitchOn() -{ - fprintf(stderr, "CDDA_SwitchOn()\n"); -} - /* dxlog.c */ void dx_str_log(char const * str, int line, char const * file) diff --git a/src/win95/cd_player.h b/src/win95/cd_player.h index 70e8a2e..9180f06 100644 --- a/src/win95/cd_player.h +++ b/src/win95/cd_player.h @@ -1,3 +1,6 @@ +#ifndef __WIN95_CDPLAYER_H__ +#define __WIN95_CDPLAYER_H__ + /* KJL 12:40:35 07/05/98 - This is code derived from Patrick's original stuff & moved into it's own file. */ @@ -107,4 +110,6 @@ extern void PlatCDDAManagementCallBack(WPARAM flags, LONG deviceId); -extern int CDPlayerVolume; \ No newline at end of file +extern int CDPlayerVolume; + +#endif -- cgit v1.3