Added support to msm5205.cpp for left/right selection for each route. Changed volume to fraction rather than percentage. Updated necessary drivers to support.
This commit is contained in:
parent
4f753f5e62
commit
125f54da67
|
@ -80,8 +80,8 @@ void __fastcall FcrashZ80Write(UINT16 a, UINT8 d)
|
|||
}
|
||||
|
||||
case 0xe000: {
|
||||
MSM5205SetVolume(0, (d & 0x08) ? 0 : 20);
|
||||
MSM5205SetVolume(1, (d & 0x10) ? 0 : 20);
|
||||
MSM5205SetRoute(0, (d & 0x08) ? 0 : 0.25, BURN_SND_ROUTE_BOTH);
|
||||
MSM5205SetRoute(1, (d & 0x10) ? 0 : 0.25, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
FcrashZ80BankAddress = (d & 0x07) * 0x4000;
|
||||
ZetMapArea(0x8000, 0xbfff, 0, CpsZRom + FcrashZ80BankAddress);
|
||||
|
@ -168,8 +168,10 @@ INT32 FcrashSoundInit()
|
|||
BurnYM2203SetRoute(1, BURN_SND_YM2203_AY8910_ROUTE_2, 0.07, BURN_SND_ROUTE_BOTH);
|
||||
BurnYM2203SetRoute(1, BURN_SND_YM2203_AY8910_ROUTE_3, 0.07, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, FcrashSynchroniseStream, 24000000 / 64, FcrashMSM5205Vck0, MSM5205_S96_4B, 20, 1);
|
||||
MSM5205Init(1, FcrashSynchroniseStream, 24000000 / 64, FcrashMSM5205Vck1, MSM5205_S96_4B, 20, 1);
|
||||
MSM5205Init(0, FcrashSynchroniseStream, 24000000 / 64, FcrashMSM5205Vck0, MSM5205_S96_4B, 1);
|
||||
MSM5205Init(1, FcrashSynchroniseStream, 24000000 / 64, FcrashMSM5205Vck1, MSM5205_S96_4B, 1);
|
||||
MSM5205SetRoute(0, 0.25, BURN_SND_ROUTE_BOTH);
|
||||
MSM5205SetRoute(1, 0.25, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
nCpsZ80Cycles = (24000000 / 6) * 100 / nBurnFPS;
|
||||
|
||||
|
|
|
@ -67,8 +67,8 @@ void __fastcall Sf2mdtZ80Write(UINT16 a, UINT8 d)
|
|||
}
|
||||
|
||||
case 0xe000: {
|
||||
MSM5205SetVolume(0, (d & 0x20) ? 0 : 20);
|
||||
MSM5205SetVolume(1, (d & 0x10) ? 0 : 20);
|
||||
MSM5205SetRoute(0, (d & 0x20) ? 0 : 0.25, BURN_SND_ROUTE_BOTH);
|
||||
MSM5205SetRoute(1, (d & 0x10) ? 0 : 0.25, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
Sf2mdtZ80BankAddress = (d & Sf2mdtNumZ80Banks) * 0x4000;
|
||||
ZetMapArea(0x8000, 0xbfff, 0, CpsZRom + Sf2mdtZ80BankAddress);
|
||||
|
@ -135,8 +135,10 @@ INT32 Sf2mdtSoundInit()
|
|||
BurnYM2151Init(3579540);
|
||||
BurnYM2151SetAllRoutes(0.35, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, Sf2mdtSynchroniseStream, 24000000 / 64, Sf2mdtMSM5205Vck0, MSM5205_S96_4B, 20, 1);
|
||||
MSM5205Init(1, Sf2mdtSynchroniseStream, 24000000 / 64, Sf2mdtMSM5205Vck1, MSM5205_S96_4B, 20, 1);
|
||||
MSM5205Init(0, Sf2mdtSynchroniseStream, 24000000 / 64, Sf2mdtMSM5205Vck0, MSM5205_S96_4B, 1);
|
||||
MSM5205Init(1, Sf2mdtSynchroniseStream, 24000000 / 64, Sf2mdtMSM5205Vck1, MSM5205_S96_4B, 1);
|
||||
MSM5205SetRoute(0, 0.25, BURN_SND_ROUTE_BOTH);
|
||||
MSM5205SetRoute(1, 0.25, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
nCpsZ80Cycles = 3579540 * 100 / nBurnFPS;
|
||||
|
||||
|
|
|
@ -5407,7 +5407,8 @@ static INT32 CsilverInit()
|
|||
BurnYM2203SetRoute(0, BURN_SND_YM2203_AY8910_ROUTE_2, 0.23, BURN_SND_ROUTE_BOTH);
|
||||
BurnYM2203SetRoute(0, BURN_SND_YM2203_AY8910_ROUTE_3, 0.23, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, CsilverMSM5205SynchroniseStream, 384000, CsilverADPCMInt, MSM5205_S48_4B, 80, 1);
|
||||
MSM5205Init(0, CsilverMSM5205SynchroniseStream, 384000, CsilverADPCMInt, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 0.88, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
|
|
@ -3391,8 +3391,10 @@ static void M62MachineInit()
|
|||
pAY8910Buffer[4] = pFMBuffer + nBurnSoundLen * 4;
|
||||
pAY8910Buffer[5] = pFMBuffer + nBurnSoundLen * 5;
|
||||
|
||||
MSM5205Init(0, M62SynchroniseStream, 384000, M62MSM5205Vck0, MSM5205_S96_4B, 50, 1);
|
||||
MSM5205Init(1, M62SynchroniseStream, 384000, NULL, MSM5205_SEX_4B, 50, 1);
|
||||
MSM5205Init(0, M62SynchroniseStream, 384000, M62MSM5205Vck0, MSM5205_S96_4B, 1);
|
||||
MSM5205Init(1, M62SynchroniseStream, 384000, NULL, MSM5205_SEX_4B, 1);
|
||||
MSM5205SetRoute(0, 0.50, BURN_SND_ROUTE_BOTH);
|
||||
MSM5205SetRoute(1, 0.50, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
AY8910Init(0, 894886, nBurnSoundRate, &M62SoundLatchRead, NULL, NULL, &AY8910_0PortBWrite);
|
||||
AY8910Init(1, 894886, nBurnSoundRate, NULL, NULL, NULL, NULL);
|
||||
|
|
|
@ -1853,8 +1853,10 @@ static INT32 DrvMachineInit()
|
|||
BurnYM2151SetIrqHandler(&DrvYM2151IrqHandler);
|
||||
BurnYM2151SetAllRoutes(0.60, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, DrvSynchroniseStream, 375000, DrvMSM5205Vck0, MSM5205_S48_4B, 45, 1);
|
||||
MSM5205Init(1, DrvSynchroniseStream, 375000, DrvMSM5205Vck1, MSM5205_S48_4B, 45, 1);
|
||||
MSM5205Init(0, DrvSynchroniseStream, 375000, DrvMSM5205Vck0, MSM5205_S48_4B, 1);
|
||||
MSM5205Init(1, DrvSynchroniseStream, 375000, DrvMSM5205Vck1, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 0.50, BURN_SND_ROUTE_BOTH);
|
||||
MSM5205SetRoute(1, 0.50, BURN_SND_ROUTE_BOTH);
|
||||
}
|
||||
|
||||
if (DrvGameType == DD_GAME_DARKTOWR) {
|
||||
|
|
|
@ -1043,7 +1043,8 @@ static INT32 TrojanInit()
|
|||
ZetMemEnd();
|
||||
ZetClose();
|
||||
|
||||
MSM5205Init(0, DrvMSM5205SynchroniseStream, 455000, NULL, MSM5205_SEX_4B, 50, 1);
|
||||
MSM5205Init(0, DrvMSM5205SynchroniseStream, 455000, NULL, MSM5205_SEX_4B, 1);
|
||||
MSM5205SetRoute(0, 0.50, BURN_SND_ROUTE_BOTH);
|
||||
MSM5205InUse = 1;
|
||||
|
||||
GenericTilesInit();
|
||||
|
|
|
@ -860,8 +860,10 @@ static INT32 DrvInit(INT32 initver)
|
|||
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_1, 0.60, BURN_SND_ROUTE_LEFT);
|
||||
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_2, 0.60, BURN_SND_ROUTE_RIGHT);
|
||||
|
||||
MSM5205Init(0, DrvSynchroniseStream, 384000, NULL, MSM5205_SEX_4B, 100, 1);
|
||||
MSM5205Init(1, DrvSynchroniseStream, 384000, NULL, MSM5205_SEX_4B, 100, 1);
|
||||
MSM5205Init(0, DrvSynchroniseStream, 384000, NULL, MSM5205_SEX_4B, 1);
|
||||
MSM5205Init(1, DrvSynchroniseStream, 384000, NULL, MSM5205_SEX_4B, 1);
|
||||
MSM5205SetRoute(0, 1.00, BURN_SND_ROUTE_BOTH);
|
||||
MSM5205SetRoute(1, 1.00, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
|
|
@ -549,7 +549,9 @@ void __fastcall rygar_sound_write(UINT16 address, UINT8 data)
|
|||
|
||||
case 0xc800:
|
||||
case 0xe000:
|
||||
if (DrvHasADPCM) MSM5205SetVolume(0, (data & 0x0f) * 100 / 15);
|
||||
if (DrvHasADPCM) {
|
||||
MSM5205SetRoute(0, (data & 0x0f) / 15, BURN_SND_ROUTE_BOTH);
|
||||
}
|
||||
return;
|
||||
|
||||
case 0xf000:
|
||||
|
@ -768,7 +770,8 @@ static INT32 RygarInit()
|
|||
BurnTimerAttachZetYM3812(4000000);
|
||||
BurnYM3812SetRoute(BURN_SND_YM3812_ROUTE, 1.00, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, TecmoSynchroniseStream, 400000, TecmoMSM5205Vck, MSM5205_S48_4B, 100, 1);
|
||||
MSM5205Init(0, TecmoSynchroniseStream, 400000, TecmoMSM5205Vck, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 0.50, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
@ -848,7 +851,8 @@ static INT32 SilkwormInit()
|
|||
BurnTimerAttachZetYM3812(4000000);
|
||||
BurnYM3812SetRoute(BURN_SND_YM3812_ROUTE, 1.00, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, TecmoSynchroniseStream, 400000, TecmoMSM5205Vck, MSM5205_S48_4B, 100, 1);
|
||||
MSM5205Init(0, TecmoSynchroniseStream, 400000, TecmoMSM5205Vck, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 0.50, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
@ -928,7 +932,10 @@ static INT32 GeminiInit()
|
|||
BurnTimerAttachZetYM3812(4000000);
|
||||
BurnYM3812SetRoute(BURN_SND_YM3812_ROUTE, 1.00, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
if (DrvHasADPCM) MSM5205Init(0, TecmoSynchroniseStream, 400000, TecmoMSM5205Vck, MSM5205_S48_4B, 100, 1);
|
||||
if (DrvHasADPCM) {
|
||||
MSM5205Init(0, TecmoSynchroniseStream, 400000, TecmoMSM5205Vck, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 0.50, BURN_SND_ROUTE_BOTH);
|
||||
}
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
|
|
@ -733,7 +733,10 @@ static INT32 DrvInit(INT32 (*pInitCallback)())
|
|||
BurnYM2203SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH);
|
||||
BurnYM2203SetAllRoutes(1, 0.25, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
if (toramich) MSM5205Init(0, DrvMSM5205SynchroniseStream, 384000, NULL, MSM5205_SEX_4B, 100, 1);
|
||||
if (toramich) {
|
||||
MSM5205Init(0, DrvMSM5205SynchroniseStream, 384000, NULL, MSM5205_SEX_4B, 1);
|
||||
MSM5205SetRoute(0, 1.00, BURN_SND_ROUTE_BOTH);
|
||||
}
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
|
|
@ -984,7 +984,8 @@ static INT32 TokibInit()
|
|||
BurnTimerAttachZetYM3812(3579545);
|
||||
BurnYM3812SetRoute(BURN_SND_YM3812_ROUTE, 1.00, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, TokibSynchroniseStream, 384000, toki_adpcm_int, MSM5205_S96_4B, 45, 1);
|
||||
MSM5205Init(0, TokibSynchroniseStream, 384000, toki_adpcm_int, MSM5205_S96_4B, 1);
|
||||
MSM5205SetRoute(0, 0.60, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
|
|
@ -649,7 +649,8 @@ static INT32 Wc90b1Init()
|
|||
BurnTimerAttachZet(5000000);
|
||||
BurnYM2203SetAllRoutes(0, 0.20, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, Wc90b1SynchroniseStream, 384000, Wc90b1MSM5205Vck0, MSM5205_S96_4B, 100, 1);
|
||||
MSM5205Init(0, Wc90b1SynchroniseStream, 384000, Wc90b1MSM5205Vck0, MSM5205_S96_4B, 1);
|
||||
MSM5205SetRoute(0, 0.30, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
Wc90b1DoReset();
|
||||
|
||||
|
|
|
@ -399,7 +399,8 @@ static INT32 DrvInit()
|
|||
ZetSetInHandler(ashnojoe_sound_read_port);
|
||||
ZetMemEnd();
|
||||
|
||||
MSM5205Init(0, DrvSynchroniseStream, 384000, ashnojoe_vclk_cb, MSM5205_S48_4B, 100, 1);
|
||||
MSM5205Init(0, DrvSynchroniseStream, 384000, ashnojoe_vclk_cb, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 1.00, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
BurnYM2203Init(1, 4000000, &DrvIRQHandler, DrvSynchroniseStream, DrvGetTime, 0);
|
||||
BurnYM2203SetPorts(0, NULL, NULL, &DrvYM2203WritePortA, &DrvYM2203WritePortB);
|
||||
|
|
|
@ -1324,7 +1324,8 @@ static void AsukaSoundSetup()
|
|||
BurnYM2151SetPortHandler(&DrvSoundBankSwitch);
|
||||
BurnYM2151SetAllRoutes(0.50, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, DrvSynchroniseStream, 384000, AsukaMSM5205Vck, MSM5205_S48_4B, 100, 1);
|
||||
MSM5205Init(0, DrvSynchroniseStream, 384000, AsukaMSM5205Vck, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 1.00, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
TaitoNumYM2151 = 1;
|
||||
TaitoNumMSM5205 = 1;
|
||||
|
|
|
@ -4153,7 +4153,8 @@ static INT32 DariusInit()
|
|||
BurnYM2203SetRoute(1, BURN_SND_YM2203_AY8910_ROUTE_2, 0.08, BURN_SND_ROUTE_BOTH);
|
||||
BurnYM2203SetRoute(1, BURN_SND_YM2203_AY8910_ROUTE_3, 0.08, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, TaitoSynchroniseStream, 384000, DariusAdpcmInt, MSM5205_S48_4B, 50, 1);
|
||||
MSM5205Init(0, TaitoSynchroniseStream, 384000, DariusAdpcmInt, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 0.50, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
@ -4252,8 +4253,10 @@ static INT32 OpwolfInit()
|
|||
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_1, 0.75, BURN_SND_ROUTE_LEFT);
|
||||
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_2, 0.75, BURN_SND_ROUTE_RIGHT);
|
||||
|
||||
MSM5205Init(0, TaitoSynchroniseStream, 384000, OpwolfMSM5205Vck0, MSM5205_S48_4B, 60, 1);
|
||||
MSM5205Init(1, TaitoSynchroniseStream, 384000, OpwolfMSM5205Vck1, MSM5205_S48_4B, 60, 1);
|
||||
MSM5205Init(0, TaitoSynchroniseStream, 384000, OpwolfMSM5205Vck0, MSM5205_S48_4B, 1);
|
||||
MSM5205Init(1, TaitoSynchroniseStream, 384000, OpwolfMSM5205Vck1, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 0.60, BURN_SND_ROUTE_BOTH);
|
||||
MSM5205SetRoute(1, 0.60, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
@ -4370,8 +4373,10 @@ static INT32 OpwolfbInit()
|
|||
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_1, 0.75, BURN_SND_ROUTE_LEFT);
|
||||
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_2, 0.75, BURN_SND_ROUTE_RIGHT);
|
||||
|
||||
MSM5205Init(0, TaitoSynchroniseStream, 384000, OpwolfMSM5205Vck0, MSM5205_S48_4B, 60, 1);
|
||||
MSM5205Init(1, TaitoSynchroniseStream, 384000, OpwolfMSM5205Vck1, MSM5205_S48_4B, 60, 1);
|
||||
MSM5205Init(0, TaitoSynchroniseStream, 384000, OpwolfMSM5205Vck0, MSM5205_S48_4B, 1);
|
||||
MSM5205Init(1, TaitoSynchroniseStream, 384000, OpwolfMSM5205Vck1, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 0.60, BURN_SND_ROUTE_BOTH);
|
||||
MSM5205SetRoute(1, 0.60, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
@ -4662,7 +4667,8 @@ static INT32 RastanInit()
|
|||
BurnYM2151SetPortHandler(&RastanBankSwitch);
|
||||
BurnYM2151SetAllRoutes(0.50, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, TaitoSynchroniseStream, 384000, RastanMSM5205Vck, MSM5205_S48_4B, 60, 1);
|
||||
MSM5205Init(0, TaitoSynchroniseStream, 384000, RastanMSM5205Vck, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 0.60, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
@ -4770,7 +4776,8 @@ static INT32 TopspeedInit()
|
|||
BurnYM2151SetPortHandler(&TopspeedBankSwitch);
|
||||
BurnYM2151SetAllRoutes(0.30, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
MSM5205Init(0, TaitoSynchroniseStream, 384000, TopspeedMSM5205Vck, MSM5205_S48_4B, 60, 1);
|
||||
MSM5205Init(0, TaitoSynchroniseStream, 384000, TopspeedMSM5205Vck, MSM5205_S48_4B, 1);
|
||||
MSM5205SetRoute(0, 0.60, BURN_SND_ROUTE_BOTH);
|
||||
|
||||
GenericTilesInit();
|
||||
|
||||
|
|
|
@ -15,7 +15,8 @@ struct _MSM5205_state
|
|||
INT32 bitwidth; /* bit width selector -3B/4B */
|
||||
INT32 signal; /* current ADPCM signal */
|
||||
INT32 step; /* current ADPCM step */
|
||||
INT32 volume;
|
||||
double volume;
|
||||
INT32 output_dir;
|
||||
|
||||
INT32 clock; /* clock rate */
|
||||
|
||||
|
@ -123,7 +124,7 @@ static void MSM5205StreamUpdate(INT32 chip)
|
|||
{
|
||||
INT32 i = 0;
|
||||
|
||||
INT32 volval = ((voice->signal * 16) * voice->volume) / 100;
|
||||
INT32 volval = (INT32)((voice->signal * 16) * voice->volume);
|
||||
INT16 val = volval;
|
||||
while (len)
|
||||
{
|
||||
|
@ -181,38 +182,27 @@ void MSM5205Render(INT32 chip, INT16 *buffer, INT32 len)
|
|||
|
||||
voice->streampos = 0;
|
||||
|
||||
if (voice->bAdd) {
|
||||
for (INT32 i = 0; i < len; i++)
|
||||
{
|
||||
INT32 nSample0 = buffer[0] + source[i];
|
||||
INT32 nSample1 = buffer[1] + source[i];
|
||||
|
||||
if (nSample0 < -32768) {
|
||||
nSample0 = -32768;
|
||||
} else {
|
||||
if (nSample0 > 32767) {
|
||||
nSample0 = 32767;
|
||||
}
|
||||
}
|
||||
|
||||
if (nSample1 < -32768) {
|
||||
nSample1 = -32768;
|
||||
} else {
|
||||
if (nSample1 > 32767) {
|
||||
nSample1 = 32767;
|
||||
}
|
||||
}
|
||||
|
||||
buffer[0] = nSample0;
|
||||
buffer[1] = nSample1;
|
||||
buffer += 2;
|
||||
for (INT32 i = 0; i < len; i++) {
|
||||
INT32 nLeftSample = 0, nRightSample = 0;
|
||||
|
||||
if ((voice->output_dir & BURN_SND_ROUTE_LEFT) == BURN_SND_ROUTE_LEFT) {
|
||||
nLeftSample += source[i];
|
||||
}
|
||||
} else {
|
||||
for (INT32 i = 0; i < len; i++)
|
||||
{
|
||||
buffer[0] = buffer[1] = source[i];
|
||||
buffer+=2;
|
||||
if ((voice->output_dir & BURN_SND_ROUTE_RIGHT) == BURN_SND_ROUTE_RIGHT) {
|
||||
nRightSample += source[i];
|
||||
}
|
||||
|
||||
nLeftSample = BURN_SND_CLIP(nLeftSample);
|
||||
nRightSample = BURN_SND_CLIP(nRightSample);
|
||||
|
||||
if (voice->bAdd) {
|
||||
buffer[0] += nLeftSample;
|
||||
buffer[1] += nRightSample;
|
||||
} else {
|
||||
buffer[0] = nLeftSample;
|
||||
buffer[1] = nRightSample;
|
||||
}
|
||||
buffer += 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -239,7 +229,7 @@ void MSM5205Reset()
|
|||
}
|
||||
}
|
||||
|
||||
void MSM5205Init(INT32 chip, INT32 (*stream_sync)(INT32), INT32 clock, void (*vclk_callback)(), INT32 select, INT32 volume, INT32 bAdd)
|
||||
void MSM5205Init(INT32 chip, INT32 (*stream_sync)(INT32), INT32 clock, void (*vclk_callback)(), INT32 select, INT32 bAdd)
|
||||
{
|
||||
DebugSnd_MSM5205Initted = 1;
|
||||
|
||||
|
@ -252,17 +242,30 @@ void MSM5205Init(INT32 chip, INT32 (*stream_sync)(INT32), INT32 clock, void (*vc
|
|||
voice->select = select;
|
||||
voice->clock = clock;
|
||||
voice->bAdd = bAdd;
|
||||
voice->volume = volume;
|
||||
voice->volume = 1.00;
|
||||
voice->output_dir = BURN_SND_ROUTE_BOTH;
|
||||
|
||||
float FPSRatio = (float)(6000 - nBurnFPS) / 6000;
|
||||
INT32 nSoundLen = nBurnSoundLen + (INT32)((float)nBurnSoundLen * FPSRatio) + 1;
|
||||
stream[chip] = (INT16*)malloc(nSoundLen * sizeof(INT16));
|
||||
stream[chip] = (INT16*)BurnMalloc(nSoundLen * sizeof(INT16));
|
||||
|
||||
ComputeTables (chip);
|
||||
|
||||
nNumChips = chip;
|
||||
}
|
||||
|
||||
void MSM5205SetRoute(INT32 chip, double nVolume, INT32 nRouteDir)
|
||||
{
|
||||
#if defined FBA_DEBUG
|
||||
if (!DebugSnd_MSM5205Initted) bprintf(PRINT_ERROR, _T("MSM5205SetRoute called without init\n"));
|
||||
if (chip > nNumChips) bprintf(PRINT_ERROR, _T("MSM5205SetRoute called with invalid chip %x\n"), chip);
|
||||
#endif
|
||||
|
||||
voice = &chips[chip];
|
||||
voice->volume = nVolume;
|
||||
voice->output_dir = nRouteDir;
|
||||
}
|
||||
|
||||
void MSM5205Exit()
|
||||
{
|
||||
#if defined FBA_DEBUG
|
||||
|
@ -277,10 +280,7 @@ void MSM5205Exit()
|
|||
|
||||
memset (voice, 0, sizeof(_MSM5205_state));
|
||||
|
||||
if (stream[chip]) {
|
||||
free (stream[chip]);
|
||||
stream[chip] = NULL;
|
||||
}
|
||||
BurnFree (stream[chip]);
|
||||
}
|
||||
|
||||
DebugSnd_MSM5205Initted = 0;
|
||||
|
@ -343,17 +343,6 @@ void MSM5205PlaymodeWrite(INT32 chip, INT32 select)
|
|||
MSM5205_playmode(chip,select);
|
||||
}
|
||||
|
||||
void MSM5205SetVolume(INT32 chip, INT32 volume)
|
||||
{
|
||||
#if defined FBA_DEBUG
|
||||
if (!DebugSnd_MSM5205Initted) bprintf(PRINT_ERROR, _T("MSM5205SetVolume called without init\n"));
|
||||
if (chip > nNumChips) bprintf(PRINT_ERROR, _T("MSM5205SetVolume called with invalid chip %x\n"), chip);
|
||||
#endif
|
||||
|
||||
voice = &chips[chip];
|
||||
voice->volume = volume;
|
||||
}
|
||||
|
||||
void MSM5205Update()
|
||||
{
|
||||
#if defined FBA_DEBUG
|
||||
|
|
|
@ -14,9 +14,8 @@ void MSM5205DataWrite(INT32 chip, INT32 data);
|
|||
void MSM5205VCLKWrite(INT32 chip, INT32 reset);
|
||||
void MSM5205PlaymodeWrite(INT32 chip, INT32 select);
|
||||
|
||||
void MSM5205SetVolume(INT32 chip, INT32 volume);
|
||||
|
||||
void MSM5205Init(INT32 chip, INT32 (*stream_sync)(INT32), INT32 clock, void (*vclk_callback)(), INT32 select, INT32 volume, INT32 bAdd);
|
||||
void MSM5205Init(INT32 chip, INT32 (*stream_sync)(INT32), INT32 clock, void (*vclk_callback)(), INT32 select, INT32 bAdd);
|
||||
void MSM5205SetRoute(INT32 chip, double nVolume, INT32 nRouteDir);
|
||||
void MSM5205Reset();
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue