From 2186d5f3f95cd74a070a490d899291648d58667a Mon Sep 17 00:00:00 2001 From: Steven Fuller Date: Sun, 1 Jul 2001 00:55:22 +0000 Subject: Initial revision --- 3dc/win95/CD_player.c | 602 -------------------------------------------------- 1 file changed, 602 deletions(-) delete mode 100644 3dc/win95/CD_player.c (limited to '3dc/win95/CD_player.c') diff --git a/3dc/win95/CD_player.c b/3dc/win95/CD_player.c deleted file mode 100644 index f6e2861..0000000 --- a/3dc/win95/CD_player.c +++ /dev/null @@ -1,602 +0,0 @@ -#include "3dc.h" -#include "inline.h" -#include "psndplat.h" -#include "cd_player.h" - -#define UseLocalAssert Yes -#include "ourasert.h" - -/* KJL 12:40:35 07/05/98 - This is code derived from Patrick's original stuff & -moved into it's own file. */ - -/* Patrick 10/6/97 ------------------------------------------------------------- - CDDA Support - ----------------------------------------------------------------------------*/ -#define NO_DEVICE -1 -int cdDeviceID = NO_DEVICE; -int cdAuxDeviceID = NO_DEVICE; - -/* Patrick 9/6/97 ------------------------------------------------------------- - ---------------------------------------------------------------------------- - CDDA Support - ----------------------------------------------------------------------------- - -----------------------------------------------------------------------------*/ -static int CDDASwitchedOn = 0; -static int CDDAIsInitialised = 0; -static int CDDAVolume = CDDA_VOLUME_DEFAULT; -CDOPERATIONSTATES CDDAState; - -static DWORD PreGameCDVolume;//windows cd volume before the game started - -static CDTRACKID TrackBeingPlayed; -static enum CDCOMMANDID LastCommandGiven; - -extern HWND hWndMain; - -int CDPlayerVolume; // volume control from menus - -int CDTrackMax=-1; //highest track number on cd - -void CDDA_Start(void) -{ - CDDAVolume = CDDA_VOLUME_DEFAULT; - CDPlayerVolume = CDDAVolume; - CDDAState = CDOp_Idle; - CDDAIsInitialised = 0; - if(PlatStartCDDA()!=SOUND_PLATFORMERROR) - { - CDDAIsInitialised = 1; - CDDA_SwitchOn(); - CDDA_ChangeVolume(CDDAVolume); /* init the volume */ - CDDA_CheckNumberOfTracks(); - } - LastCommandGiven = CDCOMMANDID_Start; -} - -void CDDA_End(void) -{ - if(!CDDAIsInitialised) return; - - CDDA_Stop(); - PlatChangeCDDAVolume(CDDA_VOLUME_RESTOREPREGAMEVALUE); - PlatEndCDDA(); - CDDA_SwitchOff(); - CDDAIsInitialised = 0; - - LastCommandGiven = CDCOMMANDID_End; -} - -void CDDA_Management(void) -{ - if(!CDDASwitchedOn) return; /* CDDA is off */ - if(CDDAState==CDOp_Playing) return; /* already playing */ - PlatCDDAManagement(); -} - -void CDDA_Play(int CDDATrack) -{ - int ok; - - if(!CDDASwitchedOn) return; /* CDDA is off */ - if(CDDAState==CDOp_Playing) return; /* already playing */ - if((CDDATrack<=0)||(CDDATrack>=CDTrackMax)) return; /* no such track */ - - ok = PlatPlayCDDA((int)CDDATrack); - if(ok!=SOUND_PLATFORMERROR) - { - CDDAState=CDOp_Playing; - LastCommandGiven = CDCOMMANDID_Play; - TrackBeingPlayed = CDDATrack; - } -} -void CDDA_PlayLoop(int CDDATrack) -{ - int ok; - - if(!CDDASwitchedOn) return; /* CDDA is off */ - if(CDDAState==CDOp_Playing) return; /* already playing */ - if((CDDATrack<=0)||(CDDATrack>=CDTrackMax)) return; /* no such track */ - - ok = PlatPlayCDDA((int)CDDATrack); - if(ok!=SOUND_PLATFORMERROR) - { - CDDAState=CDOp_Playing; - LastCommandGiven = CDCOMMANDID_PlayLoop; - TrackBeingPlayed = CDDATrack; - } -} - -extern void CheckCDVolume(void) -{ - if (CDDAVolume != CDPlayerVolume) - { - CDDA_ChangeVolume(CDPlayerVolume); - } -} -void CDDA_ChangeVolume(int volume) -{ - if(!CDDASwitchedOn) return; /* CDDA is off */ - if(volumeCDDA_VOLUME_MAX) return; - - if(CDDA_IsOn()) - { - if(PlatChangeCDDAVolume(volume)) - { - CDDAVolume=volume; - CDPlayerVolume = volume; - LastCommandGiven = CDCOMMANDID_ChangeVolume; - } - } -} - -int CDDA_GetCurrentVolumeSetting(void) -{ - return CDDAVolume; -} - -void CDDA_Stop() -{ - int ok; - if(!CDDASwitchedOn) return; /* CDDA is off */ - if(CDDAState!=CDOp_Playing) return; /* nothing playing */ - ok = PlatStopCDDA(); - CDDAState=CDOp_Idle; - LastCommandGiven = CDCOMMANDID_Stop; -} - -void CDDA_SwitchOn() -{ - LOCALASSERT(!CDDA_IsPlaying()); - if(CDDAIsInitialised) CDDASwitchedOn = 1; -} - -void CDDA_SwitchOff() -{ - if(!CDDASwitchedOn) return; /* CDDA is off already */ - if(CDDA_IsPlaying()) CDDA_Stop(); - CDDASwitchedOn = 0; -} - -int CDDA_IsOn() -{ - return CDDASwitchedOn; -} - -int CDDA_IsPlaying() -{ - if(CDDAState==CDOp_Playing) - { - LOCALASSERT(CDDASwitchedOn); - return 1; - } - return 0; -} - -int CDDA_CheckNumberOfTracks() -{ - int numTracks=0; - - if(CDDA_IsOn()) - { - PlatGetNumberOfCDTracks(&numTracks); - - //if there is only one track , then it probably can't be used anyway - if(numTracks==1) numTracks=0; - - //store the maximum allowed track number - CDTrackMax=numTracks; - } - return numTracks; -} - - - -/* win95 specific */ - -int PlatStartCDDA(void) -{ - static void PlatGetCDDAVolumeControl(void); - DWORD dwReturn; - MCI_OPEN_PARMS mciOpenParms; - - /* Initialise device handles */ - cdDeviceID = NO_DEVICE; - cdAuxDeviceID = NO_DEVICE; - - /* try to open mci cd-audio device */ - mciOpenParms.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_CD_AUDIO; - dwReturn = mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID,(DWORD)(LPVOID)&mciOpenParms); - if(dwReturn) - { - /* error */ - cdDeviceID = NO_DEVICE; - return SOUND_PLATFORMERROR; - } - cdDeviceID = mciOpenParms.wDeviceID; - - /* now try to get the cd volume control, by obtaining the auxiliary device id for - the cd-audio player*/ - PlatGetCDDAVolumeControl(); - return 0; -} - -/* this is a support function for PlatStartCDDA() */ -#if 0 -static void PlatGetCDDAVolumeControl(void) -{ - MMRESULT mmres; - unsigned int numAuxDevs,i; - - numAuxDevs = auxGetNumDevs(); - /* search the auxilary device list for the cd player */ - for(i=0;i VOLUME_CDDA_MAXPLAT) channelVolume = VOLUME_CDDA_MAXPLAT; - - /* set left and right channels (if there is only one channel, - should still work ok)*/ - newVolume = channelVolume|(channelVolume<<16); - } - PlatGetCDDAVolumeControl(); - - mmres = auxSetVolume((UINT)cdAuxDeviceID,(DWORD)newVolume); - if(mmres==MMSYSERR_NOERROR) return 1; - else return SOUND_PLATFORMERROR; -} -#else -int PlatChangeCDDAVolume(int volume) -{ - MMRESULT mmres; - unsigned int newVolume; - int i; - int numDev = mixerGetNumDevs(); - - /* check the cdDeviceId */ - if(cdDeviceID==NO_DEVICE) return SOUND_PLATFORMERROR; - - //go through the mixer devices searching for one that can deal with the cd volume - for(i=0;icontrol.Bounds.dwMaximum) newVolume=control.Bounds.dwMaximum; - } - //fill in the volume in the control details structure - detailValue.dwValue=newVolume; - - - mmres = mixerSetControlDetails(handle,&details,MIXER_SETCONTROLDETAILSF_VALUE); - mixerClose(handle); - - if(mmres==MMSYSERR_NOERROR) return 1; - else return SOUND_PLATFORMERROR; - - } - } - - - mixerClose(handle); - } - - } - - return SOUND_PLATFORMERROR; -} - -#endif - - - - -void PlatCDDAManagement(void) -{ - /* does nothing for Win95: use call back instead */ -} - -void PlatCDDAManagementCallBack(WPARAM flags, LONG deviceId) -{ - extern CDOPERATIONSTATES CDDAState; - - /* check the cdDeviceId */ - if(cdDeviceID==NO_DEVICE) return; - /* compare with the passed device id */ - if((UINT)deviceId!=(UINT)cdDeviceID) return; - - if(flags&MCI_NOTIFY_SUCCESSFUL) - { - CDDAState = CDOp_Idle; - //NewOnScreenMessage("CD COMMAND RETURNED WITH SUCCESSFUL"); - /* Play it again, sam */ - if (LastCommandGiven == CDCOMMANDID_PlayLoop) - { - CDDA_PlayLoop(TrackBeingPlayed); - } - } - else if(flags&MCI_NOTIFY_FAILURE) - { - /* error while playing: abnormal termination */ - //NewOnScreenMessage("CD COMMAND FAILED"); - CDDAState = CDOp_Idle; - } - else if(flags&MCI_NOTIFY_SUPERSEDED) - { - //NewOnScreenMessage("CD COMMAND SUPERSEDED"); - } - else if(flags&MCI_NOTIFY_ABORTED) - { - /* aborted or superceeded: try and stop the device */ - //NewOnScreenMessage("CD COMMAND ABORTED(?)"); - // CDDA_Stop(); - } - else - { - //NewOnScreenMessage("CD COMMAND RETURNED WITH UNKNOWN MESSAGE"); - } -} -- cgit v1.3