Import Aliens vs Predator - Gold (Build 116)
Source code release, imported from: https://www.gamefront.com/games/aliens-vs-predator-3/file/avp-gold-complete-source-code All text files were converted to Unix format.
This commit is contained in:
commit
218ca90543
572 changed files with 434587 additions and 0 deletions
602
3dc/win95/CD_player.c
Normal file
602
3dc/win95/CD_player.c
Normal file
|
@ -0,0 +1,602 @@
|
|||
#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(volume<CDDA_VOLUME_MIN) return;
|
||||
if(volume>CDDA_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<numAuxDevs;i++)
|
||||
{
|
||||
AUXCAPS devCaps;
|
||||
mmres = auxGetDevCaps(i,&devCaps,sizeof(AUXCAPS));
|
||||
if(mmres==MMSYSERR_NOERROR)
|
||||
{
|
||||
if((devCaps.wTechnology&AUXCAPS_CDAUDIO)&&(devCaps.dwSupport&AUXCAPS_VOLUME))
|
||||
{
|
||||
cdAuxDeviceID = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
static void PlatGetCDDAVolumeControl(void)
|
||||
{
|
||||
int i;
|
||||
int numDev = mixerGetNumDevs();
|
||||
|
||||
|
||||
//go through the mixer devices searching for one that can deal with the cd volume
|
||||
for(i=0;i<numDev;i++)
|
||||
{
|
||||
HMIXER handle;
|
||||
if(mixerOpen(&handle,i,0,0,MIXER_OBJECTF_MIXER ) == MMSYSERR_NOERROR )
|
||||
{
|
||||
|
||||
//try to get the compact disc mixer line
|
||||
MIXERLINE line;
|
||||
line.cbStruct=sizeof(MIXERLINE);
|
||||
line.dwComponentType=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC;
|
||||
|
||||
if(mixerGetLineInfo(handle,&line,MIXER_GETLINEINFOF_COMPONENTTYPE) == MMSYSERR_NOERROR)
|
||||
{
|
||||
MIXERLINECONTROLS lineControls;
|
||||
MIXERCONTROL control;
|
||||
|
||||
|
||||
lineControls.cbStruct=sizeof(MIXERLINECONTROLS);
|
||||
lineControls.dwLineID=line.dwLineID;
|
||||
lineControls.pamxctrl=&control;
|
||||
lineControls.dwControlType=MIXERCONTROL_CONTROLTYPE_VOLUME ;
|
||||
lineControls.cControls=1;
|
||||
lineControls.cbmxctrl=sizeof(MIXERCONTROL);
|
||||
|
||||
control.cbStruct=sizeof(MIXERCONTROL);
|
||||
|
||||
|
||||
//try to get the volume control
|
||||
if(mixerGetLineControls(handle,&lineControls,MIXER_GETLINECONTROLSF_ONEBYTYPE)==MMSYSERR_NOERROR)
|
||||
{
|
||||
|
||||
MIXERCONTROLDETAILS details;
|
||||
MIXERCONTROLDETAILS_UNSIGNED detailValue;
|
||||
|
||||
details.cbStruct=sizeof(MIXERCONTROLDETAILS);
|
||||
details.dwControlID=control.dwControlID;
|
||||
details.cChannels=1;
|
||||
details.cMultipleItems=0;
|
||||
details.cbDetails=sizeof(MIXERCONTROLDETAILS_UNSIGNED);
|
||||
details.paDetails=&detailValue;
|
||||
|
||||
//get the current volume so that we can restore it later
|
||||
if(mixerGetControlDetails(handle,&details,MIXER_GETCONTROLDETAILSF_VALUE)==MMSYSERR_NOERROR)
|
||||
{
|
||||
PreGameCDVolume = detailValue.dwValue;
|
||||
mixerClose(handle);
|
||||
|
||||
return; //success
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
mixerClose(handle);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void PlatEndCDDA(void)
|
||||
{
|
||||
DWORD dwReturn;
|
||||
|
||||
/* check the cdDeviceId */
|
||||
if(cdDeviceID==NO_DEVICE) return;
|
||||
|
||||
dwReturn = mciSendCommand((UINT)cdDeviceID,MCI_CLOSE,MCI_WAIT,NULL);
|
||||
cdDeviceID=NO_DEVICE;
|
||||
|
||||
/* reset the auxilary device handle */
|
||||
cdAuxDeviceID = NO_DEVICE;
|
||||
}
|
||||
|
||||
int PlatPlayCDDA(int track)
|
||||
{
|
||||
DWORD dwReturn;
|
||||
MCI_SET_PARMS mciSetParms = {0,0,0};
|
||||
MCI_PLAY_PARMS mciPlayParms = {0,0,0};
|
||||
MCI_STATUS_PARMS mciStatusParms = {0,0,0,0};
|
||||
|
||||
/* check the cdDeviceId */
|
||||
if(cdDeviceID==NO_DEVICE) return SOUND_PLATFORMERROR;
|
||||
|
||||
/* set the time format */
|
||||
mciSetParms.dwTimeFormat = MCI_FORMAT_MSF;
|
||||
dwReturn = mciSendCommand((UINT)cdDeviceID,MCI_SET,MCI_SET_TIME_FORMAT,(DWORD)(LPVOID) &mciSetParms);
|
||||
if(dwReturn)
|
||||
{
|
||||
// NewOnScreenMessage("CD ERROR - TIME FORMAT");
|
||||
/* error */
|
||||
return SOUND_PLATFORMERROR;
|
||||
}
|
||||
|
||||
/* find the length of the track... */
|
||||
mciStatusParms.dwItem = MCI_STATUS_LENGTH;
|
||||
mciStatusParms.dwTrack = track;
|
||||
dwReturn = mciSendCommand((UINT)cdDeviceID,MCI_STATUS,MCI_STATUS_ITEM|MCI_TRACK,(DWORD)(LPVOID)&mciStatusParms);
|
||||
if(dwReturn)
|
||||
{
|
||||
/* error */
|
||||
// NewOnScreenMessage("CD ERROR - GET LENGTH");
|
||||
return SOUND_PLATFORMERROR;
|
||||
}
|
||||
|
||||
/* set the time format */
|
||||
mciSetParms.dwTimeFormat = MCI_FORMAT_TMSF;
|
||||
dwReturn = mciSendCommand((UINT)cdDeviceID,MCI_SET,MCI_SET_TIME_FORMAT,(DWORD)(LPVOID) &mciSetParms);
|
||||
if(dwReturn)
|
||||
{
|
||||
/* error */
|
||||
// NewOnScreenMessage("CD ERROR - TIME FORMAT");
|
||||
return SOUND_PLATFORMERROR;
|
||||
}
|
||||
|
||||
/* play the track: set up for notification when track finishes, or an error occurs */
|
||||
mciPlayParms.dwFrom=MCI_MAKE_TMSF(track,0,0,0);
|
||||
mciPlayParms.dwTo=MCI_MAKE_TMSF(track, MCI_MSF_MINUTE(mciStatusParms.dwReturn),
|
||||
MCI_MSF_SECOND(mciStatusParms.dwReturn),
|
||||
MCI_MSF_FRAME(mciStatusParms.dwReturn));
|
||||
mciPlayParms.dwCallback=(DWORD)hWndMain;
|
||||
dwReturn = mciSendCommand((UINT)cdDeviceID,MCI_PLAY,MCI_FROM|MCI_TO|MCI_NOTIFY,(DWORD)(LPVOID)&mciPlayParms);
|
||||
if(dwReturn)
|
||||
{
|
||||
/* error */
|
||||
// NewOnScreenMessage("CD ERROR - PLAY");
|
||||
return SOUND_PLATFORMERROR;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int PlatGetNumberOfCDTracks(int* numTracks)
|
||||
{
|
||||
DWORD dwReturn;
|
||||
MCI_STATUS_PARMS mciStatusParms = {0,0,0,0};
|
||||
|
||||
/* check the cdDeviceId */
|
||||
if(cdDeviceID==NO_DEVICE) return SOUND_PLATFORMERROR;
|
||||
if(!numTracks) return SOUND_PLATFORMERROR;
|
||||
|
||||
|
||||
/* find the number tracks... */
|
||||
mciStatusParms.dwItem = MCI_STATUS_NUMBER_OF_TRACKS ;
|
||||
dwReturn = mciSendCommand((UINT)cdDeviceID,MCI_STATUS,MCI_STATUS_ITEM ,(DWORD)(LPVOID)&mciStatusParms);
|
||||
if(dwReturn)
|
||||
{
|
||||
/* error */
|
||||
return SOUND_PLATFORMERROR;
|
||||
}
|
||||
|
||||
//number of tracks is in the dwReturn member
|
||||
*numTracks=mciStatusParms.dwReturn;
|
||||
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
int PlatStopCDDA(void)
|
||||
{
|
||||
DWORD dwReturn;
|
||||
|
||||
/* check the cdDeviceId */
|
||||
if(cdDeviceID==NO_DEVICE)
|
||||
{
|
||||
return SOUND_PLATFORMERROR;
|
||||
}
|
||||
|
||||
/* stop the cd player */
|
||||
dwReturn = mciSendCommand((UINT)cdDeviceID,MCI_STOP,MCI_WAIT,NULL);
|
||||
if(dwReturn)
|
||||
{
|
||||
/* error */
|
||||
return SOUND_PLATFORMERROR;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#if 0
|
||||
int PlatChangeCDDAVolume(int volume)
|
||||
{
|
||||
MMRESULT mmres;
|
||||
unsigned int newVolume;
|
||||
|
||||
/* check the cdDeviceId */
|
||||
if(cdDeviceID==NO_DEVICE) return SOUND_PLATFORMERROR;
|
||||
/* check the mixer device id */
|
||||
if(cdAuxDeviceID==NO_DEVICE) return SOUND_PLATFORMERROR;
|
||||
|
||||
/* scale and set the new volume */
|
||||
{
|
||||
int channelVolume;
|
||||
channelVolume = VOLUME_CDDA_MINPLAT + WideMulNarrowDiv(volume,
|
||||
(VOLUME_CDDA_MAXPLAT-VOLUME_CDDA_MINPLAT), (CDDA_VOLUME_MAX-CDDA_VOLUME_MIN));
|
||||
if(channelVolume < VOLUME_CDDA_MINPLAT) channelVolume = VOLUME_CDDA_MINPLAT;
|
||||
if(channelVolume > 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;i<numDev;i++)
|
||||
{
|
||||
HMIXER handle;
|
||||
if(mixerOpen(&handle,i,0,0,MIXER_OBJECTF_MIXER ) == MMSYSERR_NOERROR )
|
||||
{
|
||||
|
||||
//try to get the compact disc mixer line
|
||||
MIXERLINE line;
|
||||
line.cbStruct=sizeof(MIXERLINE);
|
||||
line.dwComponentType=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC;
|
||||
|
||||
if(mixerGetLineInfo(handle,&line,MIXER_GETLINEINFOF_COMPONENTTYPE) == MMSYSERR_NOERROR)
|
||||
{
|
||||
MIXERLINECONTROLS lineControls;
|
||||
MIXERCONTROL control;
|
||||
|
||||
|
||||
lineControls.cbStruct=sizeof(MIXERLINECONTROLS);
|
||||
lineControls.dwLineID=line.dwLineID;
|
||||
lineControls.pamxctrl=&control;
|
||||
lineControls.dwControlType=MIXERCONTROL_CONTROLTYPE_VOLUME ;
|
||||
lineControls.cControls=1;
|
||||
lineControls.cbmxctrl=sizeof(MIXERCONTROL);
|
||||
|
||||
control.cbStruct=sizeof(MIXERCONTROL);
|
||||
|
||||
|
||||
//try to get the volume control
|
||||
if(mixerGetLineControls(handle,&lineControls,MIXER_GETLINECONTROLSF_ONEBYTYPE)==MMSYSERR_NOERROR)
|
||||
{
|
||||
|
||||
MIXERCONTROLDETAILS details;
|
||||
MIXERCONTROLDETAILS_UNSIGNED detailValue;
|
||||
|
||||
details.cbStruct=sizeof(MIXERCONTROLDETAILS);
|
||||
details.dwControlID=control.dwControlID;
|
||||
details.cChannels=1;
|
||||
details.cMultipleItems=0;
|
||||
details.cbDetails=sizeof(MIXERCONTROLDETAILS_UNSIGNED);
|
||||
details.paDetails=&detailValue;
|
||||
|
||||
|
||||
if(volume==CDDA_VOLUME_RESTOREPREGAMEVALUE)
|
||||
{
|
||||
//set the volume to what it was before the game started
|
||||
newVolume=PreGameCDVolume;
|
||||
}
|
||||
else
|
||||
{
|
||||
//scale the volume
|
||||
newVolume = control.Bounds.dwMinimum + WideMulNarrowDiv(volume,
|
||||
(control.Bounds.dwMaximum-control.Bounds.dwMinimum), (CDDA_VOLUME_MAX-CDDA_VOLUME_MIN));
|
||||
|
||||
if(newVolume<control.Bounds.dwMinimum) newVolume=control.Bounds.dwMinimum;
|
||||
if(newVolume>control.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");
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue