diff options
| author | Steven Fuller <relnev@icculus.org> | 2001-11-25 22:07:35 +0000 |
|---|---|---|
| committer | Patryk Obara <dreamer.tan@gmail.com> | 2019-08-20 02:22:36 +0200 |
| commit | 4508748944c293618d775e346c998f025cf6d1cd (patch) | |
| tree | 4a6ac5348e7aef7b1e9c2057ef2fc0261cc5c3a1 /src/cdplayer.c | |
| parent | b4a55b2618721e825a884955b4266acb882f3811 (diff) | |
CD Audio Support.
Diffstat (limited to 'src/cdplayer.c')
| -rw-r--r-- | src/cdplayer.c | 125 |
1 files changed, 125 insertions, 0 deletions
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 <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <SDL/SDL.h> + +#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"); +*/ +} |
