Add audio volume control for mscdex. Implemented it in images and win32ioctl. Others are still open. Thanks ripsaw.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3631
This commit is contained in:
parent
0438430b24
commit
8c29440d39
4 changed files with 91 additions and 4 deletions
|
@ -31,6 +31,11 @@ typedef struct SMSF {
|
|||
unsigned char fr;
|
||||
} TMSF;
|
||||
|
||||
typedef struct SCtrl {
|
||||
Bit8u out[4]; // output channel
|
||||
Bit8u vol[4]; // channel volume
|
||||
} TCtrl;
|
||||
|
||||
extern int CDROM_GetMountType(char* path, int force);
|
||||
|
||||
class CDROM_Interface
|
||||
|
@ -52,6 +57,7 @@ public:
|
|||
virtual bool PlayAudioSector (unsigned long start,unsigned long len) = 0;
|
||||
virtual bool PauseAudio (bool resume) = 0;
|
||||
virtual bool StopAudio (void) = 0;
|
||||
virtual void ChannelControl (TCtrl ctrl) = 0;
|
||||
|
||||
virtual bool ReadSectors (PhysPt buffer, bool raw, unsigned long sector, unsigned long num) = 0;
|
||||
|
||||
|
@ -76,6 +82,7 @@ public:
|
|||
virtual bool PlayAudioSector (unsigned long start,unsigned long len);
|
||||
virtual bool PauseAudio (bool resume);
|
||||
virtual bool StopAudio (void);
|
||||
virtual void ChannelControl (TCtrl ctrl) { return; };
|
||||
virtual bool ReadSectors (PhysPt /*buffer*/, bool /*raw*/, unsigned long /*sector*/, unsigned long /*num*/) { return false; };
|
||||
virtual bool LoadUnloadMedia (bool unload);
|
||||
|
||||
|
@ -101,6 +108,7 @@ public:
|
|||
bool PlayAudioSector (unsigned long /*start*/,unsigned long /*len*/) { return true; };
|
||||
bool PauseAudio (bool /*resume*/) { return true; };
|
||||
bool StopAudio (void) { return true; };
|
||||
void ChannelControl (TCtrl ctrl) { return; };
|
||||
bool ReadSectors (PhysPt /*buffer*/, bool /*raw*/, unsigned long /*sector*/, unsigned long /*num*/) { return true; };
|
||||
bool LoadUnloadMedia (bool /*unload*/) { return true; };
|
||||
};
|
||||
|
@ -166,6 +174,7 @@ public:
|
|||
bool PlayAudioSector (unsigned long start,unsigned long len);
|
||||
bool PauseAudio (bool resume);
|
||||
bool StopAudio (void);
|
||||
void ChannelControl (TCtrl ctrl);
|
||||
bool ReadSectors (PhysPt buffer, bool raw, unsigned long sector, unsigned long num);
|
||||
bool LoadUnloadMedia (bool unload);
|
||||
bool ReadSector (Bit8u *buffer, bool raw, unsigned long sector);
|
||||
|
@ -188,6 +197,8 @@ static struct imagePlayer {
|
|||
int targetFrame;
|
||||
bool isPlaying;
|
||||
bool isPaused;
|
||||
bool ctrlUsed;
|
||||
TCtrl ctrlData;
|
||||
} player;
|
||||
|
||||
void ClearTracks();
|
||||
|
@ -234,6 +245,7 @@ public:
|
|||
bool PlayAudioSector (unsigned long start,unsigned long len);
|
||||
bool PauseAudio (bool resume);
|
||||
bool StopAudio (void);
|
||||
void ChannelControl (TCtrl ctrl) { return; };
|
||||
|
||||
bool ReadSectors (PhysPt buffer, bool raw, unsigned long sector, unsigned long num);
|
||||
|
||||
|
@ -284,6 +296,7 @@ public:
|
|||
bool PlayAudioSector (unsigned long start,unsigned long len);
|
||||
bool PauseAudio (bool resume);
|
||||
bool StopAudio (void);
|
||||
void ChannelControl (TCtrl ctrl);
|
||||
|
||||
bool ReadSector (Bit8u *buffer, bool raw, unsigned long sector);
|
||||
bool ReadSectors (PhysPt buffer, bool raw, unsigned long sector, unsigned long num);
|
||||
|
@ -338,6 +351,8 @@ private:
|
|||
int targetFrame;
|
||||
bool isPlaying;
|
||||
bool isPaused;
|
||||
bool ctrlUsed;
|
||||
TCtrl ctrlData;
|
||||
} player;
|
||||
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue