diff options
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"); +*/ +} |
