diff --git a/src/burn/drv/irem/d_m62.cpp b/src/burn/drv/irem/d_m62.cpp index 03a2094c8..93dcc0af6 100644 --- a/src/burn/drv/irem/d_m62.cpp +++ b/src/burn/drv/irem/d_m62.cpp @@ -3396,6 +3396,8 @@ static void M62MachineInit() AY8910Init(0, 894886, nBurnSoundRate, &M62SoundLatchRead, NULL, NULL, &AY8910_0PortBWrite); AY8910Init(1, 894886, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.50, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -4744,24 +4746,9 @@ static INT32 M62Frame() nCyclesDone[nCurrentCPU] += nCyclesSegment; if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } @@ -4776,25 +4763,10 @@ static INT32 M62Frame() } if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } ZetOpen(0); diff --git a/src/burn/drv/irem/d_m63.cpp b/src/burn/drv/irem/d_m63.cpp index d5ddb12db..25bd5f684 100644 --- a/src/burn/drv/irem/d_m63.cpp +++ b/src/burn/drv/irem/d_m63.cpp @@ -614,6 +614,8 @@ static INT32 DrvInit(void (*pMapMainCPU)(), INT32 (*pRomLoadCallback)(), INT32 s AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 1.00, BURN_SND_ROUTE_BOTH); sy_offset = syoffset; char_color_offset = charcoloroff; @@ -727,7 +729,11 @@ static INT32 atomboyInit() static INT32 fghtbsktInit() { - return DrvInit(fghtbskt_main_map, fghtbsktLoadRoms, 240, 0x010, 60/2); + INT32 nRet = DrvInit(fghtbskt_main_map, fghtbsktLoadRoms, 240, 0x010, 60/2); + + AY8910SetAllRoutes(0, 1.00, BURN_SND_ROUTE_BOTH); + + return nRet; } static void draw_bg_layer() @@ -885,24 +891,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - AY8910Update(0, &pAY8910Buffer[3], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - nSample += pAY8910Buffer[3][n]; - nSample += pAY8910Buffer[4][n]; - nSample += pAY8910Buffer[5][n]; - - nSample /= 8; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); sample_render(pBurnSoundOut, nBurnSoundLen); } diff --git a/src/burn/drv/konami/d_gyruss.cpp b/src/burn/drv/konami/d_gyruss.cpp index d42653305..79ab9678c 100644 --- a/src/burn/drv/konami/d_gyruss.cpp +++ b/src/burn/drv/konami/d_gyruss.cpp @@ -670,6 +670,11 @@ static INT32 DrvInit() AY8910Init(2, 1789773, nBurnSoundRate, AY8910_3_portA, NULL, NULL, NULL); AY8910Init(3, 1789773, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(4, 1789773, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(2, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(3, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(4, 0.25, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -858,34 +863,7 @@ static INT32 DrvFrame() } if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[ 0], nBurnSoundLen); - AY8910Update(1, &pAY8910Buffer[ 3], nBurnSoundLen); - AY8910Update(2, &pAY8910Buffer[ 6], nBurnSoundLen); - AY8910Update(3, &pAY8910Buffer[ 9], nBurnSoundLen); - AY8910Update(4, &pAY8910Buffer[12], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[ 0][n] >> 2; - nSample += pAY8910Buffer[ 1][n] >> 2; - nSample += pAY8910Buffer[ 2][n] >> 2; - nSample += pAY8910Buffer[ 3][n] >> 2; - nSample += pAY8910Buffer[ 4][n] >> 2; - nSample += pAY8910Buffer[ 5][n] >> 2; - nSample += pAY8910Buffer[ 6][n] >> 2; - nSample += pAY8910Buffer[ 7][n] >> 2; - nSample += pAY8910Buffer[ 8][n] >> 2; - nSample += pAY8910Buffer[ 9][n] >> 2; - nSample += pAY8910Buffer[10][n] >> 2; - nSample += pAY8910Buffer[11][n] >> 2; - nSample += pAY8910Buffer[12][n] >> 2; - nSample += pAY8910Buffer[13][n] >> 2; - nSample += pAY8910Buffer[14][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/konami/d_pooyan.cpp b/src/burn/drv/konami/d_pooyan.cpp index 1f6e67604..acc4d57dd 100644 --- a/src/burn/drv/konami/d_pooyan.cpp +++ b/src/burn/drv/konami/d_pooyan.cpp @@ -452,6 +452,8 @@ static INT32 DrvInit() AY8910Init(0, 1789773, nBurnSoundRate, &AY8910_0_port0, &AY8910_0_port1, NULL, NULL); AY8910Init(1, 1789773, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.25, BURN_SND_ROUTE_BOTH); DrvDoReset(); @@ -602,26 +604,7 @@ static INT32 DrvFrame() } if (pBurnSoundOut) { - INT32 nSample; - INT32 nSegmentLength = nBurnSoundLen; - INT16* pSoundBuf = pBurnSoundOut; - if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_4enraya.cpp b/src/burn/drv/pre90s/d_4enraya.cpp index 4149c4d1a..fd1242b1b 100644 --- a/src/burn/drv/pre90s/d_4enraya.cpp +++ b/src/burn/drv/pre90s/d_4enraya.cpp @@ -339,6 +339,7 @@ static INT32 DrvInit(INT32 game, INT32 sbit) ZetClose(); AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.30, BURN_SND_ROUTE_BOTH); sound_bit = sbit; @@ -414,20 +415,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_ambush.cpp b/src/burn/drv/pre90s/d_ambush.cpp index f8b309960..6e0c0c5ec 100644 --- a/src/burn/drv/pre90s/d_ambush.cpp +++ b/src/burn/drv/pre90s/d_ambush.cpp @@ -316,6 +316,8 @@ static INT32 DrvInit() AY8910Init(0, 1500000, nBurnSoundRate, &AY8910_0_port0, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, &AY8910_1_port0, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.33, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.33, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -486,22 +488,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - AY8910Update(1, &pAY8910Buffer[3], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_arabian.cpp b/src/burn/drv/pre90s/d_arabian.cpp index 2e065b994..3cdc06434 100644 --- a/src/burn/drv/pre90s/d_arabian.cpp +++ b/src/burn/drv/pre90s/d_arabian.cpp @@ -505,6 +505,7 @@ static INT32 DrvInit() ZetClose(); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, ay8910_porta_w, ay8910_portb_w); + AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -598,20 +599,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_aztarac.cpp b/src/burn/drv/pre90s/d_aztarac.cpp index 8b5f53612..1516209b0 100644 --- a/src/burn/drv/pre90s/d_aztarac.cpp +++ b/src/burn/drv/pre90s/d_aztarac.cpp @@ -406,6 +406,10 @@ static INT32 DrvInit() AY8910Init(1, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(2, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(3, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.15, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.15, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(2, 0.15, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(3, 0.15, BURN_SND_ROUTE_BOTH); DrvPaletteInit(); @@ -521,31 +525,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - - AY8910Update(0, &pFMBuffer[0], nBurnSoundLen); - AY8910Update(1, &pFMBuffer[3], nBurnSoundLen); - AY8910Update(2, &pFMBuffer[6], nBurnSoundLen); - AY8910Update(3, &pFMBuffer[9], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pFMBuffer[ 0][n] / 2; - nSample += pFMBuffer[ 1][n] / 2; - nSample += pFMBuffer[ 2][n] / 2; - nSample += pFMBuffer[ 3][n] / 2; - nSample += pFMBuffer[ 4][n] / 2; - nSample += pFMBuffer[ 5][n] / 2; - nSample += pFMBuffer[ 6][n] / 2; - nSample += pFMBuffer[ 7][n] / 2; - nSample += pFMBuffer[ 8][n] / 2; - nSample += pFMBuffer[ 9][n] / 2; - nSample += pFMBuffer[10][n] / 2; - nSample += pFMBuffer[11][n] / 2; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pFMBuffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_blueprnt.cpp b/src/burn/drv/pre90s/d_blueprnt.cpp index bab55fc5f..21914a071 100644 --- a/src/burn/drv/pre90s/d_blueprnt.cpp +++ b/src/burn/drv/pre90s/d_blueprnt.cpp @@ -446,6 +446,8 @@ static INT32 DrvInit() AY8910Init(0, 625000, nBurnSoundRate, NULL, &ay8910_0_read_port_1, &ay8910_0_write_port_0, NULL); AY8910Init(1, 625000, nBurnSoundRate, &ay8910_1_read_port_0, &ay8910_1_read_port_1, NULL, NULL); + AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.25, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -596,26 +598,7 @@ static INT32 DrvFrame() } if (pBurnSoundOut) { - INT32 nSample; - INT32 nSegmentLength = nBurnSoundLen; - INT16* pSoundBuf = pBurnSoundOut; - if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_bombjack.cpp b/src/burn/drv/pre90s/d_bombjack.cpp index 73b6b5fa6..b9434107f 100644 --- a/src/burn/drv/pre90s/d_bombjack.cpp +++ b/src/burn/drv/pre90s/d_bombjack.cpp @@ -400,6 +400,9 @@ INT32 BjZInit() AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(2, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.13, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.13, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(2, 0.13, BURN_SND_ROUTE_BOTH); // remember to do ZetReset() in main driver @@ -833,61 +836,19 @@ INT32 BjFrame() // Render Sound Segment if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - AY8910Update(2, &pAY8910Buffer[6], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - nSample += pAY8910Buffer[6][n] >> 2; - nSample += pAY8910Buffer[7][n] >> 2; - nSample += pAY8910Buffer[8][n] >> 2; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } } // Make sure the buffer is entirely filled. if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - AY8910Update(2, &pAY8910Buffer[6], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - nSample += pAY8910Buffer[6][n] >> 2; - nSample += pAY8910Buffer[7][n] >> 2; - nSample += pAY8910Buffer[8][n] >> 2; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } } /*ZetOpen(0); diff --git a/src/burn/drv/pre90s/d_epos.cpp b/src/burn/drv/pre90s/d_epos.cpp index d3c6ca0d1..780ceb16b 100644 --- a/src/burn/drv/pre90s/d_epos.cpp +++ b/src/burn/drv/pre90s/d_epos.cpp @@ -506,6 +506,7 @@ static INT32 DrvInit() ZetClose(); AY8910Init(0, 2750000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 1.00, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -549,6 +550,7 @@ static INT32 DealerInit() ZetClose(); AY8910Init(0, 2750000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH); ppi8255_init(1); PPI0PortReadA = DealerPPIReadA; @@ -635,20 +637,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_exedexes.cpp b/src/burn/drv/pre90s/d_exedexes.cpp index 73b86e6d6..7956edbff 100644 --- a/src/burn/drv/pre90s/d_exedexes.cpp +++ b/src/burn/drv/pre90s/d_exedexes.cpp @@ -435,6 +435,7 @@ static INT32 DrvInit() ZetClose(); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.10, BURN_SND_ROUTE_BOTH); SN76489Init(0, 3000000, 0); SN76489Init(1, 3000000, 1); @@ -667,22 +668,7 @@ static INT32 DrvFrame() SN76496Update(0, pBurnSoundOut, nBurnSoundLen); SN76496Update(1, pBurnSoundOut, nBurnSoundLen); - INT32 nSample; - if (nBurnSoundLen) { - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample >>= 4; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] += nSample; - pBurnSoundOut[(n << 1) + 1] += nSample; - } - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 1); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_funkybee.cpp b/src/burn/drv/pre90s/d_funkybee.cpp index 1d9faaa6a..637fc3b26 100644 --- a/src/burn/drv/pre90s/d_funkybee.cpp +++ b/src/burn/drv/pre90s/d_funkybee.cpp @@ -435,6 +435,7 @@ static INT32 DrvInit(INT32 game) ZetClose(); AY8910Init(0, 1500000, nBurnSoundRate, &funkybee_ay8910_read_A, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -575,24 +576,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - INT32 nSegmentLength = nBurnSoundLen; - INT16* pSoundBuf = pBurnSoundOut; - if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_ginganin.cpp b/src/burn/drv/pre90s/d_ginganin.cpp index 19c84baa9..bcdca10d4 100644 --- a/src/burn/drv/pre90s/d_ginganin.cpp +++ b/src/burn/drv/pre90s/d_ginganin.cpp @@ -401,6 +401,7 @@ static INT32 DrvInit() M6809Close(); AY8910Init(0, 3579545 / 2, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.10, BURN_SND_ROUTE_BOTH); BurnY8950Init(3579545, DrvSndROM, 0x20000, NULL, &DrvSynchroniseStream, 1); BurnTimerAttachM6809Y8950(1000000); @@ -624,20 +625,7 @@ static INT32 DrvFrame() BurnTimerEndFrameY8950(nCyclesTotal[1]); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); BurnY8950Update(pBurnSoundOut, nBurnSoundLen); } diff --git a/src/burn/drv/pre90s/d_higemaru.cpp b/src/burn/drv/pre90s/d_higemaru.cpp index 83308b008..0e0b632db 100644 --- a/src/burn/drv/pre90s/d_higemaru.cpp +++ b/src/burn/drv/pre90s/d_higemaru.cpp @@ -324,6 +324,8 @@ static INT32 DrvInit() AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.25, BURN_SND_ROUTE_BOTH); DrvDoReset(); @@ -446,26 +448,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - INT32 nSegmentLength = nBurnSoundLen; - INT16* pSoundBuf = pBurnSoundOut; - if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_jack.cpp b/src/burn/drv/pre90s/d_jack.cpp index a9db3dec2..d042ed248 100644 --- a/src/burn/drv/pre90s/d_jack.cpp +++ b/src/burn/drv/pre90s/d_jack.cpp @@ -1034,6 +1034,7 @@ static INT32 DrvInit() pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2; AY8910Init(0, 1500000, nBurnSoundRate, &soundlatch_r, &timer_r, NULL, NULL); + AY8910SetAllRoutes(0, 1.00, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -1208,45 +1209,19 @@ static INT32 DrvFrame() // Render Sound Segment if (pBurnSoundOut && !suprtriv) { // disable sound for suprtriv - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } } // Make sure the buffer is entirely filled. if (pBurnSoundOut && !suprtriv) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } } diff --git a/src/burn/drv/pre90s/d_kangaroo.cpp b/src/burn/drv/pre90s/d_kangaroo.cpp index 645aa17f4..c6dfc1234 100644 --- a/src/burn/drv/pre90s/d_kangaroo.cpp +++ b/src/burn/drv/pre90s/d_kangaroo.cpp @@ -431,6 +431,7 @@ static INT32 DrvInit() ZetClose(); AY8910Init(0, 1250000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH); DrvDoReset(); @@ -572,45 +573,19 @@ INT32 DrvFrame() // Render Sound Segment if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } } // Make sure the buffer is entirely filled. if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } } diff --git a/src/burn/drv/pre90s/d_kyugo.cpp b/src/burn/drv/pre90s/d_kyugo.cpp index 104ae0b74..7d0f6b97d 100644 --- a/src/burn/drv/pre90s/d_kyugo.cpp +++ b/src/burn/drv/pre90s/d_kyugo.cpp @@ -1925,6 +1925,8 @@ static INT32 KyugoInit() AY8910Init(0, 18432000 / 12, nBurnSoundRate, &KyugoDip0Read, &KyugoDip1Read, NULL, NULL); AY8910Init(1, 18432000 / 12, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.30, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.30, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -2052,6 +2054,8 @@ static INT32 Skywolf3Init() AY8910Init(0, 18432000 / 12, nBurnSoundRate, &KyugoDip0Read, &KyugoDip1Read, NULL, NULL); AY8910Init(1, 18432000 / 12, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.30, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.30, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -2375,50 +2379,20 @@ static INT32 KyugoFrame() // Render Sound Segment if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - nSoundBufferPos += nSegmentLength; + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); + nSoundBufferPos += nSegmentLength; } } // Make sure the buffer is entirely filled. if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } } diff --git a/src/burn/drv/pre90s/d_marineb.cpp b/src/burn/drv/pre90s/d_marineb.cpp index 99d18301b..c52bd5d52 100644 --- a/src/burn/drv/pre90s/d_marineb.cpp +++ b/src/burn/drv/pre90s/d_marineb.cpp @@ -394,6 +394,7 @@ static INT32 DrvInit() ZetClose(); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH); GenericTilesInit(); DrvDoReset(); @@ -719,20 +720,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_meijinsn.cpp b/src/burn/drv/pre90s/d_meijinsn.cpp index 52388e061..8cddd10a1 100644 --- a/src/burn/drv/pre90s/d_meijinsn.cpp +++ b/src/burn/drv/pre90s/d_meijinsn.cpp @@ -361,6 +361,7 @@ static INT32 DrvInit() ZetClose(); AY8910Init(0, 2000000, nBurnSoundRate, &ay8910_port_a_r, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.75, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -463,20 +464,7 @@ static INT32 DrvFrame() SekClose(); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_mole.cpp b/src/burn/drv/pre90s/d_mole.cpp index 7f009445e..4e4b16010 100644 --- a/src/burn/drv/pre90s/d_mole.cpp +++ b/src/burn/drv/pre90s/d_mole.cpp @@ -329,6 +329,7 @@ static INT32 DrvInit() pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2; AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 1.00, BURN_SND_ROUTE_BOTH); DrvDoReset(); @@ -396,24 +397,7 @@ static INT32 DrvFrame() M6502Close(); if (pBurnSoundOut) { - INT32 nSample; - INT32 nSegmentLength = nBurnSoundLen; - INT16* pSoundBuf = pBurnSoundOut; - if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_mrflea.cpp b/src/burn/drv/pre90s/d_mrflea.cpp index b5cb188b1..318622219 100644 --- a/src/burn/drv/pre90s/d_mrflea.cpp +++ b/src/burn/drv/pre90s/d_mrflea.cpp @@ -370,6 +370,9 @@ static INT32 DrvInit() AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(2, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(2, 0.25, BURN_SND_ROUTE_BOTH); DrvDoReset(); @@ -491,61 +494,19 @@ static INT32 DrvFrame() // Render Sound Segment if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - AY8910Update(2, &pAY8910Buffer[6], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - nSample += pAY8910Buffer[6][n] >> 2; - nSample += pAY8910Buffer[7][n] >> 2; - nSample += pAY8910Buffer[8][n] >> 2; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } } // Make sure the buffer is entirely filled. if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - AY8910Update(2, &pAY8910Buffer[6], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - nSample += pAY8910Buffer[6][n] >> 2; - nSample += pAY8910Buffer[7][n] >> 2; - nSample += pAY8910Buffer[8][n] >> 2; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } } diff --git a/src/burn/drv/pre90s/d_mystston.cpp b/src/burn/drv/pre90s/d_mystston.cpp index 822b595bb..eace2d8d9 100644 --- a/src/burn/drv/pre90s/d_mystston.cpp +++ b/src/burn/drv/pre90s/d_mystston.cpp @@ -337,6 +337,8 @@ static INT32 DrvInit() AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.30, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.30, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -539,26 +541,7 @@ static INT32 DrvFrame() M6502Close(); if (pBurnSoundOut) { - INT32 nSample; - INT32 nSegmentLength = nBurnSoundLen; - INT16* pSoundBuf = pBurnSoundOut; - if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_pacman.cpp b/src/burn/drv/pre90s/d_pacman.cpp index ffa5e1c1e..f5c001743 100644 --- a/src/burn/drv/pre90s/d_pacman.cpp +++ b/src/burn/drv/pre90s/d_pacman.cpp @@ -2492,6 +2492,8 @@ static INT32 DrvInit(void (*mapCallback)(), void (*pInitCallback)(), INT32 selec ZetClose(); AY8910Init(0, 1789750, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.75, BURN_SND_ROUTE_BOTH); + if (game_select == DREMSHPR) AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH); SN76496Init(0, 1789750, 0); SN76496Init(1, 1789750, 1); @@ -2674,21 +2676,7 @@ static INT32 DrvFrame() if (nSegmentLength) { if (game_select == DREMSHPR || game_select == CRUSHS) { - INT32 nSample; - - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } else { if (game_select == VANVAN) { SN76496Update(0, pSoundBuf, nSegmentLength); @@ -2708,21 +2696,7 @@ static INT32 DrvFrame() if (nSegmentLength) { if (game_select == DREMSHPR || game_select == CRUSHS) { - INT32 nSample; - - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } else { if (game_select == VANVAN) { SN76496Update(0, pSoundBuf, nSegmentLength); diff --git a/src/burn/drv/pre90s/d_pkunwar.cpp b/src/burn/drv/pre90s/d_pkunwar.cpp index 428b7503e..b56c910de 100644 --- a/src/burn/drv/pre90s/d_pkunwar.cpp +++ b/src/burn/drv/pre90s/d_pkunwar.cpp @@ -310,6 +310,8 @@ static INT32 DrvInit() AY8910Init(0, 1500000, nBurnSoundRate, &pkunwar_port_0, &pkunwar_port_1, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, &pkunwar_port_2, &pkunwar_port_3, NULL, NULL); + AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.25, BURN_SND_ROUTE_BOTH); DrvDoReset(); @@ -497,26 +499,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - INT32 nSegmentLength = nBurnSoundLen; - INT16* pSoundBuf = pBurnSoundOut; - if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_quizo.cpp b/src/burn/drv/pre90s/d_quizo.cpp index c76d8b372..1155132bf 100644 --- a/src/burn/drv/pre90s/d_quizo.cpp +++ b/src/burn/drv/pre90s/d_quizo.cpp @@ -256,6 +256,7 @@ static INT32 DrvInit() pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2; AY8910Init(0, 1342329, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH); DrvDoReset(); @@ -267,32 +268,13 @@ static INT32 DrvFrame() { if (DrvReset) DrvDoReset(); - INT32 nSoundBufferPos = 0; - ZetOpen(0); ZetRun(4000000 / 60); ZetRaiseIrq(1); ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; - INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) DrvDraw(); diff --git a/src/burn/drv/pre90s/d_route16.cpp b/src/burn/drv/pre90s/d_route16.cpp index 4d651943b..fb5b96447 100644 --- a/src/burn/drv/pre90s/d_route16.cpp +++ b/src/burn/drv/pre90s/d_route16.cpp @@ -463,6 +463,7 @@ static INT32 DrvInit() pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2; AY8910Init(0, 1250000, nBurnSoundRate, NULL, NULL, &stratvox_sn76477_write, NULL); + AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH); DACInit(0, 0, 1, DrvSyncDAC); DACSetVolShift(0, 2); @@ -619,22 +620,9 @@ static INT32 DrvFrame() // Render Sound Segment if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } @@ -642,23 +630,10 @@ static INT32 DrvFrame() // Make sure the buffer is entirely filled. if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } DACUpdate(pBurnSoundOut, nBurnSoundLen); diff --git a/src/burn/drv/pre90s/d_scregg.cpp b/src/burn/drv/pre90s/d_scregg.cpp index 52a535f5e..b4da8b1fe 100644 --- a/src/burn/drv/pre90s/d_scregg.cpp +++ b/src/burn/drv/pre90s/d_scregg.cpp @@ -380,6 +380,8 @@ static INT32 DrvInit() AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.23, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.23, BURN_SND_ROUTE_BOTH); DrvDoReset(); @@ -524,26 +526,7 @@ static INT32 DrvFrame() M6502Close(); if (pBurnSoundOut) { - INT32 nSample; - INT32 nSegmentLength = nBurnSoundLen; - INT16* pSoundBuf = pBurnSoundOut; - if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_solomon.cpp b/src/burn/drv/pre90s/d_solomon.cpp index 63cf485dd..29d8ad64e 100644 --- a/src/burn/drv/pre90s/d_solomon.cpp +++ b/src/burn/drv/pre90s/d_solomon.cpp @@ -469,6 +469,9 @@ INT32 SolomonInit() AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(2, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.12, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.12, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(2, 0.12, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -709,57 +712,19 @@ INT32 SolomonFrame() // Render Sound Segment if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - AY8910Update(2, &pAY8910Buffer[6], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - nSample += pAY8910Buffer[6][n] >> 2; - nSample += pAY8910Buffer[7][n] >> 2; - nSample += pAY8910Buffer[8][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } - nSoundBufferPos += nSegmentLength; + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); + nSoundBufferPos += nSegmentLength; } } // Make sure the buffer is entirely filled. if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - AY8910Update(2, &pAY8910Buffer[6], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - nSample += pAY8910Buffer[6][n] >> 2; - nSample += pAY8910Buffer[7][n] >> 2; - nSample += pAY8910Buffer[8][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } } diff --git a/src/burn/drv/pre90s/d_sonson.cpp b/src/burn/drv/pre90s/d_sonson.cpp index b83e7c6eb..5e9466b26 100644 --- a/src/burn/drv/pre90s/d_sonson.cpp +++ b/src/burn/drv/pre90s/d_sonson.cpp @@ -425,6 +425,8 @@ static INT32 DrvInit() AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.30, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.30, BURN_SND_ROUTE_BOTH); DrvDoReset(); @@ -593,52 +595,19 @@ static INT32 DrvFrame() M6809Close(); if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - nSample += pAY8910Buffer[3][n]; - nSample += pAY8910Buffer[4][n]; - nSample += pAY8910Buffer[5][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } } if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - nSample += pAY8910Buffer[3][n]; - nSample += pAY8910Buffer[4][n]; - nSample += pAY8910Buffer[5][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; + if (nSegmentLength) { + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } - nSoundBufferPos += nSegmentLength; } if (pBurnDraw) { diff --git a/src/burn/drv/pre90s/d_vulgus.cpp b/src/burn/drv/pre90s/d_vulgus.cpp index 851372bf1..6b38380ab 100644 --- a/src/burn/drv/pre90s/d_vulgus.cpp +++ b/src/burn/drv/pre90s/d_vulgus.cpp @@ -413,6 +413,8 @@ static INT32 DrvInit() AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.25, BURN_SND_ROUTE_BOTH); DrvDoReset(); @@ -592,48 +594,18 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) | 0] = nSample; - pSoundBuf[(n << 1) | 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } } if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) | 0] = nSample; - pSoundBuf[(n << 1) | 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } } diff --git a/src/burn/drv/pre90s/d_wallc.cpp b/src/burn/drv/pre90s/d_wallc.cpp index 86d9499b3..cd229343c 100644 --- a/src/burn/drv/pre90s/d_wallc.cpp +++ b/src/burn/drv/pre90s/d_wallc.cpp @@ -273,6 +273,7 @@ static INT32 DrvInit(INT32 incr) ZetClose(); AY8910Init(0, 1536000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.30, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -341,20 +342,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/pst90s/d_kaneko16.cpp b/src/burn/drv/pst90s/d_kaneko16.cpp index b2a33ef9c..c4fe92362 100644 --- a/src/burn/drv/pst90s/d_kaneko16.cpp +++ b/src/burn/drv/pst90s/d_kaneko16.cpp @@ -2919,6 +2919,8 @@ static INT32 BerlwallInit() AY8910Init(0, 2000000, nBurnSoundRate, &Kaneko16Dip0Read, &Kaneko16Dip1Read, NULL, NULL); AY8910Init(1, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 1.00, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 1.00, BURN_SND_ROUTE_BOTH); // Setup the OKIM6295 emulation MSM6295Init(0, (12000000 / 6) / 132, 100.0, 1); @@ -4624,24 +4626,9 @@ static INT32 ExplbrkrFrame() // Render Sound Segment if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } @@ -4649,25 +4636,10 @@ static INT32 ExplbrkrFrame() // Make sure the buffer is entirely filled. if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } MSM6295Render(0, pBurnSoundOut, nBurnSoundLen); diff --git a/src/burn/drv/pst90s/d_suna16.cpp b/src/burn/drv/pst90s/d_suna16.cpp index 54f240235..6045e2533 100644 --- a/src/burn/drv/pst90s/d_suna16.cpp +++ b/src/burn/drv/pst90s/d_suna16.cpp @@ -1462,6 +1462,9 @@ static INT32 BestbestInit() BurnYM3526SetRoute(BURN_SND_YM3526_ROUTE, 1.00, BURN_SND_ROUTE_BOTH); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, bestbest_ay8910_write_a, NULL); + AY8910SetRoute(0, BURN_SND_AY8910_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); + AY8910SetRoute(0, BURN_SND_AY8910_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); + AY8910SetRoute(0, BURN_SND_AY8910_ROUTE_3, 0.00, BURN_SND_ROUTE_BOTH); // suppressed? DACInit(0, 0, 1, bestbestSyncDAC); DACInit(1, 0, 1, bestbestSyncDAC); @@ -1938,21 +1941,8 @@ static INT32 BestbestFrame() if (pBurnSoundOut) { INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT16* pSoundBuf = pSoundBuffer + (nSoundBufferPos << 1); - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } @@ -1962,22 +1952,9 @@ static INT32 BestbestFrame() if (pBurnSoundOut) { INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pSoundBuffer + (nSoundBufferPos << 1); - INT32 nSample; if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } } diff --git a/src/burn/drv/taito/d_arkanoid.cpp b/src/burn/drv/taito/d_arkanoid.cpp index 250a86ec1..fb676bd32 100644 --- a/src/burn/drv/taito/d_arkanoid.cpp +++ b/src/burn/drv/taito/d_arkanoid.cpp @@ -1103,6 +1103,8 @@ static INT32 DrvInit() m67805_taito_init(DrvMcuROM, DrvMcuRAM, &arkanoid_m68705_interface); AY8910Init(0, 1500000, nBurnSoundRate, &ay8910_read_port_5, &ay8910_read_port_4, NULL, NULL); + AY8910SetAllRoutes(0, 0.33, BURN_SND_ROUTE_BOTH); + if (arkanoid_bootleg_id == HEXA) AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -1239,20 +1241,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/taito/d_chaknpop.cpp b/src/burn/drv/taito/d_chaknpop.cpp index bd0c681d8..2a2714cd9 100644 --- a/src/burn/drv/taito/d_chaknpop.cpp +++ b/src/burn/drv/taito/d_chaknpop.cpp @@ -521,6 +521,8 @@ static INT32 DrvInit() AY8910Init(0, 1536000, nBurnSoundRate, &ay8910_0_read_port_A, &ay8910_0_read_port_B, NULL, NULL); AY8910Init(1, 1536000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.15, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(0, 0.10, BURN_SND_ROUTE_BOTH); GenericTilesInit(); @@ -681,29 +683,7 @@ static INT32 DrvFrame() ZetClose(); if (pBurnSoundOut) { - INT32 nSample, xSample; - - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - AY8910Update(0, &pAY8910Buffer[3], nBurnSoundLen); - - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - nSample = (nSample * 15) / 100; - - xSample = pAY8910Buffer[0][n]; - xSample += pAY8910Buffer[1][n]; - xSample += pAY8910Buffer[2][n]; - xSample = (xSample * 10) / 100; - - nSample += xSample; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); } if (pBurnDraw) { diff --git a/src/burn/drv/taito/d_flstory.cpp b/src/burn/drv/taito/d_flstory.cpp index c247cdc55..dd6ae16be 100644 --- a/src/burn/drv/taito/d_flstory.cpp +++ b/src/burn/drv/taito/d_flstory.cpp @@ -876,6 +876,7 @@ static INT32 DrvInit() m67805_taito_init(DrvMcuROM, DrvMcuRAM, &standard_m68705_interface); AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); + AY8910SetAllRoutes(0, 0.10, BURN_SND_ROUTE_BOTH); DACInit(0, 0, 1, flstoryDACSync); DACSetVolShift(0, 2); @@ -1179,21 +1180,7 @@ static INT32 DrvFrame() ZetOpen(1); if (pBurnSoundOut) { - INT32 nSample; - AY8910Update(0, &pAY8910Buffer[0], nBurnSoundLen); - for (INT32 n = 0; n < nBurnSoundLen; n++) { - nSample = pAY8910Buffer[0][n]; - nSample += pAY8910Buffer[1][n]; - nSample += pAY8910Buffer[2][n]; - - nSample /= 4; - - nSample = BURN_SND_CLIP(nSample); - - pBurnSoundOut[(n << 1) + 0] = nSample; - pBurnSoundOut[(n << 1) + 1] = nSample; - } - + AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0); DACUpdate(pBurnSoundOut, nBurnSoundLen); } @@ -1407,7 +1394,11 @@ static INT32 victnineInit() { select_game = 2; - return DrvInit(); + INT32 nRet = DrvInit(); + + AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH); + + return nRet; } struct BurnDriverD BurnDrvVictnine = { diff --git a/src/burn/drv/toaplan/d_tigerheli.cpp b/src/burn/drv/toaplan/d_tigerheli.cpp index cacfcdfb3..cc3391e6f 100644 --- a/src/burn/drv/toaplan/d_tigerheli.cpp +++ b/src/burn/drv/toaplan/d_tigerheli.cpp @@ -2115,6 +2115,8 @@ static INT32 tigerhInit() AY8910Init(0, 1500000, nBurnSoundRate, &tigerhReadPort0, &tigerhReadPort1, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, &tigerhReadPort2, &tigerhReadPort3, NULL, NULL); + AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH); + AY8910SetAllRoutes(1, 0.25, BURN_SND_ROUTE_BOTH); TigerHeliTextInit(); TigerHeliPaletteInit(); @@ -2309,24 +2311,9 @@ static INT32 tigerhFrame() { // Render sound segment if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); nSoundBufferPos += nSegmentLength; } } @@ -2335,25 +2322,10 @@ static INT32 tigerhFrame() { // Make sure the buffer is entirely filled. if (pBurnSoundOut) { - INT32 nSample; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); if (nSegmentLength) { - AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); - AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); - for (INT32 n = 0; n < nSegmentLength; n++) { - nSample = pAY8910Buffer[0][n] >> 2; - nSample += pAY8910Buffer[1][n] >> 2; - nSample += pAY8910Buffer[2][n] >> 2; - nSample += pAY8910Buffer[3][n] >> 2; - nSample += pAY8910Buffer[4][n] >> 2; - nSample += pAY8910Buffer[5][n] >> 2; - - nSample = BURN_SND_CLIP(nSample); - - pSoundBuf[(n << 1) + 0] = nSample; - pSoundBuf[(n << 1) + 1] = nSample; - } + AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0); } } }