Added volume control to sn76496.cpp and used it to reduce volume in d_sys1.cpp

This commit is contained in:
Barry Harris 2012-01-12 12:01:15 +00:00
parent 610e7685c8
commit bb7e6e375a
3 changed files with 25 additions and 0 deletions

View File

@ -4114,6 +4114,8 @@ static INT32 System1Init(INT32 nZ80Rom1Num, INT32 nZ80Rom1Size, INT32 nZ80Rom2Nu
SN76489AInit(0, 2000000, 0);
SN76489AInit(1, 4000000, 1);
SN76496SetVolShift(0, 2);
SN76496SetVolShift(1, 2);
GenericTilesInit();

View File

@ -24,6 +24,7 @@ struct SN76496
INT32 Count[4];
INT32 Output[4];
INT32 bSignalAdd;
INT32 nVolShift;
};
static INT32 NumChips;
@ -155,6 +156,8 @@ void SN76496Update(INT32 Num, INT16* pSoundBuf, INT32 Length)
Out /= STEP;
Out >>= R->nVolShift;
if (R->bSignalAdd) {
Temp = pSoundBuf[0] + Out;
if (Temp > 32767) Temp = 32767;
@ -311,6 +314,7 @@ static void GenericStart(INT32 Num, INT32 Clock, INT32 FeedbackMask, INT32 Noise
Chip0->WhitenoiseTaps = NoiseTaps;
Chip0->WhitenoiseInvert = NoiseInvert;
Chip0->bSignalAdd = SignalAdd;
Chip0->nVolShift = 0;
}
if (Num == 1) {
@ -324,6 +328,7 @@ static void GenericStart(INT32 Num, INT32 Clock, INT32 FeedbackMask, INT32 Noise
Chip1->WhitenoiseTaps = NoiseTaps;
Chip1->WhitenoiseInvert = NoiseInvert;
Chip1->bSignalAdd = SignalAdd;
Chip1->nVolShift = 0;
}
if (Num == 2) {
@ -337,6 +342,7 @@ static void GenericStart(INT32 Num, INT32 Clock, INT32 FeedbackMask, INT32 Noise
Chip2->WhitenoiseTaps = NoiseTaps;
Chip2->WhitenoiseInvert = NoiseInvert;
Chip2->bSignalAdd = SignalAdd;
Chip2->nVolShift = 0;
}
if (Num == 3) {
@ -350,6 +356,7 @@ static void GenericStart(INT32 Num, INT32 Clock, INT32 FeedbackMask, INT32 Noise
Chip3->WhitenoiseTaps = NoiseTaps;
Chip3->WhitenoiseInvert = NoiseInvert;
Chip3->bSignalAdd = SignalAdd;
Chip3->nVolShift = 0;
}
if (Num == 4) {
@ -363,6 +370,7 @@ static void GenericStart(INT32 Num, INT32 Clock, INT32 FeedbackMask, INT32 Noise
Chip4->WhitenoiseTaps = NoiseTaps;
Chip4->WhitenoiseInvert = NoiseInvert;
Chip4->bSignalAdd = SignalAdd;
Chip4->nVolShift = 0;
}
}
@ -423,6 +431,20 @@ void SN76496Exit()
DebugSnd_SN76496Initted = 0;
}
void SN76496SetVolShift(INT32 Num, INT32 nVolShift)
{
#if defined FBA_DEBUG
if (!DebugSnd_SN76496Initted) bprintf(PRINT_ERROR, _T("SN76496SetVolShift called without init\n"));
if (Num > NumChips) bprintf(PRINT_ERROR, _T("SN76496SetVolShift called with invalid chip %x\n"), Num);
#endif
if (Num == 0) Chip0->nVolShift = nVolShift;
if (Num == 1) Chip1->nVolShift = nVolShift;
if (Num == 2) Chip2->nVolShift = nVolShift;
if (Num == 3) Chip3->nVolShift = nVolShift;
if (Num == 4) Chip4->nVolShift = nVolShift;
}
INT32 SN76496Scan(INT32 nAction,INT32 *pnMin)
{
#if defined FBA_DEBUG

View File

@ -5,4 +5,5 @@ void SN76489AInit(INT32 Num, INT32 Clock, INT32 SignalAdd);
void SN76494Init(INT32 Num, INT32 Clock, INT32 SignalAdd);
void SN76496Init(INT32 Num, INT32 Clock, INT32 SignalAdd);
void SN76496Exit();
void SN76496SetVolShift(INT32 Num, INT32 nVolShift);
INT32 SN76496Scan(INT32 nAction,INT32 *pnMin);