Update rest of drivers to use AY8910Render()

This commit is contained in:
Barry Harris 2012-05-18 11:12:41 +00:00
parent 9f1764fee9
commit 1559c9bafb
38 changed files with 138 additions and 899 deletions

View File

@ -3396,6 +3396,8 @@ static void M62MachineInit()
AY8910Init(0, 894886, nBurnSoundRate, &M62SoundLatchRead, NULL, NULL, &AY8910_0PortBWrite); AY8910Init(0, 894886, nBurnSoundRate, &M62SoundLatchRead, NULL, NULL, &AY8910_0PortBWrite);
AY8910Init(1, 894886, nBurnSoundRate, NULL, NULL, NULL, NULL); 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(); GenericTilesInit();
@ -4744,24 +4746,9 @@ static INT32 M62Frame()
nCyclesDone[nCurrentCPU] += nCyclesSegment; nCyclesDone[nCurrentCPU] += nCyclesSegment;
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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; nSoundBufferPos += nSegmentLength;
} }
@ -4776,25 +4763,10 @@ static INT32 M62Frame()
} }
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
ZetOpen(0); ZetOpen(0);

View File

@ -614,6 +614,8 @@ static INT32 DrvInit(void (*pMapMainCPU)(), INT32 (*pRomLoadCallback)(), INT32 s
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(1, 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; sy_offset = syoffset;
char_color_offset = charcoloroff; char_color_offset = charcoloroff;
@ -727,7 +729,11 @@ static INT32 atomboyInit()
static INT32 fghtbsktInit() 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() static void draw_bg_layer()
@ -885,24 +891,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
sample_render(pBurnSoundOut, nBurnSoundLen); sample_render(pBurnSoundOut, nBurnSoundLen);
} }

View File

@ -670,6 +670,11 @@ static INT32 DrvInit()
AY8910Init(2, 1789773, nBurnSoundRate, AY8910_3_portA, NULL, NULL, NULL); AY8910Init(2, 1789773, nBurnSoundRate, AY8910_3_portA, NULL, NULL, NULL);
AY8910Init(3, 1789773, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(3, 1789773, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(4, 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(); GenericTilesInit();
@ -858,34 +863,7 @@ static INT32 DrvFrame()
} }
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -452,6 +452,8 @@ static INT32 DrvInit()
AY8910Init(0, 1789773, nBurnSoundRate, &AY8910_0_port0, &AY8910_0_port1, NULL, NULL); AY8910Init(0, 1789773, nBurnSoundRate, &AY8910_0_port0, &AY8910_0_port1, NULL, NULL);
AY8910Init(1, 1789773, nBurnSoundRate, NULL, NULL, 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(); DrvDoReset();
@ -602,26 +604,7 @@ static INT32 DrvFrame()
} }
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -339,6 +339,7 @@ static INT32 DrvInit(INT32 game, INT32 sbit)
ZetClose(); ZetClose();
AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.30, BURN_SND_ROUTE_BOTH);
sound_bit = sbit; sound_bit = sbit;
@ -414,20 +415,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -316,6 +316,8 @@ static INT32 DrvInit()
AY8910Init(0, 1500000, nBurnSoundRate, &AY8910_0_port0, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, &AY8910_0_port0, NULL, NULL, NULL);
AY8910Init(1, 1500000, nBurnSoundRate, &AY8910_1_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(); GenericTilesInit();
@ -486,22 +488,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -505,6 +505,7 @@ static INT32 DrvInit()
ZetClose(); ZetClose();
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, ay8910_porta_w, ay8910_portb_w); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, ay8910_porta_w, ay8910_portb_w);
AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH);
GenericTilesInit(); GenericTilesInit();
@ -598,20 +599,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -406,6 +406,10 @@ static INT32 DrvInit()
AY8910Init(1, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(2, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(2, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(3, 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(); DrvPaletteInit();
@ -521,31 +525,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pFMBuffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -446,6 +446,8 @@ static INT32 DrvInit()
AY8910Init(0, 625000, nBurnSoundRate, NULL, &ay8910_0_read_port_1, &ay8910_0_write_port_0, NULL); 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); 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(); GenericTilesInit();
@ -596,26 +598,7 @@ static INT32 DrvFrame()
} }
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -400,6 +400,9 @@ INT32 BjZInit()
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(2, 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 // remember to do ZetReset() in main driver
@ -833,61 +836,19 @@ INT32 BjFrame()
// Render Sound Segment // Render Sound Segment
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
nSoundBufferPos += nSegmentLength; nSoundBufferPos += nSegmentLength;
} }
} }
// Make sure the buffer is entirely filled. // Make sure the buffer is entirely filled.
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
} }
/*ZetOpen(0); /*ZetOpen(0);

View File

@ -506,6 +506,7 @@ static INT32 DrvInit()
ZetClose(); ZetClose();
AY8910Init(0, 2750000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 2750000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 1.00, BURN_SND_ROUTE_BOTH);
GenericTilesInit(); GenericTilesInit();
@ -549,6 +550,7 @@ static INT32 DealerInit()
ZetClose(); ZetClose();
AY8910Init(0, 2750000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 2750000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH);
ppi8255_init(1); ppi8255_init(1);
PPI0PortReadA = DealerPPIReadA; PPI0PortReadA = DealerPPIReadA;
@ -635,20 +637,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -435,6 +435,7 @@ static INT32 DrvInit()
ZetClose(); ZetClose();
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.10, BURN_SND_ROUTE_BOTH);
SN76489Init(0, 3000000, 0); SN76489Init(0, 3000000, 0);
SN76489Init(1, 3000000, 1); SN76489Init(1, 3000000, 1);
@ -667,22 +668,7 @@ static INT32 DrvFrame()
SN76496Update(0, pBurnSoundOut, nBurnSoundLen); SN76496Update(0, pBurnSoundOut, nBurnSoundLen);
SN76496Update(1, pBurnSoundOut, nBurnSoundLen); SN76496Update(1, pBurnSoundOut, nBurnSoundLen);
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 1);
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;
}
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -435,6 +435,7 @@ static INT32 DrvInit(INT32 game)
ZetClose(); ZetClose();
AY8910Init(0, 1500000, nBurnSoundRate, &funkybee_ay8910_read_A, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, &funkybee_ay8910_read_A, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH);
GenericTilesInit(); GenericTilesInit();
@ -575,24 +576,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -401,6 +401,7 @@ static INT32 DrvInit()
M6809Close(); M6809Close();
AY8910Init(0, 3579545 / 2, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 3579545 / 2, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.10, BURN_SND_ROUTE_BOTH);
BurnY8950Init(3579545, DrvSndROM, 0x20000, NULL, &DrvSynchroniseStream, 1); BurnY8950Init(3579545, DrvSndROM, 0x20000, NULL, &DrvSynchroniseStream, 1);
BurnTimerAttachM6809Y8950(1000000); BurnTimerAttachM6809Y8950(1000000);
@ -624,20 +625,7 @@ static INT32 DrvFrame()
BurnTimerEndFrameY8950(nCyclesTotal[1]); BurnTimerEndFrameY8950(nCyclesTotal[1]);
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
BurnY8950Update(pBurnSoundOut, nBurnSoundLen); BurnY8950Update(pBurnSoundOut, nBurnSoundLen);
} }

View File

@ -324,6 +324,8 @@ static INT32 DrvInit()
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(1, 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(); DrvDoReset();
@ -446,26 +448,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -1034,6 +1034,7 @@ static INT32 DrvInit()
pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2; pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2;
AY8910Init(0, 1500000, nBurnSoundRate, &soundlatch_r, &timer_r, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, &soundlatch_r, &timer_r, NULL, NULL);
AY8910SetAllRoutes(0, 1.00, BURN_SND_ROUTE_BOTH);
GenericTilesInit(); GenericTilesInit();
@ -1208,45 +1209,19 @@ static INT32 DrvFrame()
// Render Sound Segment // Render Sound Segment
if (pBurnSoundOut && !suprtriv) { // disable sound for suprtriv if (pBurnSoundOut && !suprtriv) { // disable sound for suprtriv
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
nSoundBufferPos += nSegmentLength; nSoundBufferPos += nSegmentLength;
} }
} }
// Make sure the buffer is entirely filled. // Make sure the buffer is entirely filled.
if (pBurnSoundOut && !suprtriv) { if (pBurnSoundOut && !suprtriv) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
} }

View File

@ -431,6 +431,7 @@ static INT32 DrvInit()
ZetClose(); ZetClose();
AY8910Init(0, 1250000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1250000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH);
DrvDoReset(); DrvDoReset();
@ -572,45 +573,19 @@ INT32 DrvFrame()
// Render Sound Segment // Render Sound Segment
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
nSoundBufferPos += nSegmentLength; nSoundBufferPos += nSegmentLength;
} }
} }
// Make sure the buffer is entirely filled. // Make sure the buffer is entirely filled.
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
} }

View File

@ -1925,6 +1925,8 @@ static INT32 KyugoInit()
AY8910Init(0, 18432000 / 12, nBurnSoundRate, &KyugoDip0Read, &KyugoDip1Read, NULL, NULL); AY8910Init(0, 18432000 / 12, nBurnSoundRate, &KyugoDip0Read, &KyugoDip1Read, NULL, NULL);
AY8910Init(1, 18432000 / 12, nBurnSoundRate, NULL, NULL, 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(); GenericTilesInit();
@ -2052,6 +2054,8 @@ static INT32 Skywolf3Init()
AY8910Init(0, 18432000 / 12, nBurnSoundRate, &KyugoDip0Read, &KyugoDip1Read, NULL, NULL); AY8910Init(0, 18432000 / 12, nBurnSoundRate, &KyugoDip0Read, &KyugoDip1Read, NULL, NULL);
AY8910Init(1, 18432000 / 12, nBurnSoundRate, NULL, NULL, 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(); GenericTilesInit();
@ -2375,50 +2379,20 @@ static INT32 KyugoFrame()
// Render Sound Segment // Render Sound Segment
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); nSoundBufferPos += 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;
} }
} }
// Make sure the buffer is entirely filled. // Make sure the buffer is entirely filled.
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
} }

View File

@ -394,6 +394,7 @@ static INT32 DrvInit()
ZetClose(); ZetClose();
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH);
GenericTilesInit(); GenericTilesInit();
DrvDoReset(); DrvDoReset();
@ -719,20 +720,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -361,6 +361,7 @@ static INT32 DrvInit()
ZetClose(); ZetClose();
AY8910Init(0, 2000000, nBurnSoundRate, &ay8910_port_a_r, NULL, NULL, NULL); AY8910Init(0, 2000000, nBurnSoundRate, &ay8910_port_a_r, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.75, BURN_SND_ROUTE_BOTH);
GenericTilesInit(); GenericTilesInit();
@ -463,20 +464,7 @@ static INT32 DrvFrame()
SekClose(); SekClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -329,6 +329,7 @@ static INT32 DrvInit()
pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2; pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2;
AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 1.00, BURN_SND_ROUTE_BOTH);
DrvDoReset(); DrvDoReset();
@ -396,24 +397,7 @@ static INT32 DrvFrame()
M6502Close(); M6502Close();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -370,6 +370,9 @@ static INT32 DrvInit()
AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(1, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(2, 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(); DrvDoReset();
@ -491,61 +494,19 @@ static INT32 DrvFrame()
// Render Sound Segment // Render Sound Segment
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
nSoundBufferPos += nSegmentLength; nSoundBufferPos += nSegmentLength;
} }
} }
// Make sure the buffer is entirely filled. // Make sure the buffer is entirely filled.
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
} }

View File

@ -337,6 +337,8 @@ static INT32 DrvInit()
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(1, 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(); GenericTilesInit();
@ -539,26 +541,7 @@ static INT32 DrvFrame()
M6502Close(); M6502Close();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -2492,6 +2492,8 @@ static INT32 DrvInit(void (*mapCallback)(), void (*pInitCallback)(), INT32 selec
ZetClose(); ZetClose();
AY8910Init(0, 1789750, nBurnSoundRate, NULL, NULL, NULL, NULL); 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(0, 1789750, 0);
SN76496Init(1, 1789750, 1); SN76496Init(1, 1789750, 1);
@ -2674,21 +2676,7 @@ static INT32 DrvFrame()
if (nSegmentLength) { if (nSegmentLength) {
if (game_select == DREMSHPR || game_select == CRUSHS) { if (game_select == DREMSHPR || game_select == CRUSHS) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} else { } else {
if (game_select == VANVAN) { if (game_select == VANVAN) {
SN76496Update(0, pSoundBuf, nSegmentLength); SN76496Update(0, pSoundBuf, nSegmentLength);
@ -2708,21 +2696,7 @@ static INT32 DrvFrame()
if (nSegmentLength) { if (nSegmentLength) {
if (game_select == DREMSHPR || game_select == CRUSHS) { if (game_select == DREMSHPR || game_select == CRUSHS) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} else { } else {
if (game_select == VANVAN) { if (game_select == VANVAN) {
SN76496Update(0, pSoundBuf, nSegmentLength); SN76496Update(0, pSoundBuf, nSegmentLength);

View File

@ -310,6 +310,8 @@ static INT32 DrvInit()
AY8910Init(0, 1500000, nBurnSoundRate, &pkunwar_port_0, &pkunwar_port_1, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, &pkunwar_port_0, &pkunwar_port_1, NULL, NULL);
AY8910Init(1, 1500000, nBurnSoundRate, &pkunwar_port_2, &pkunwar_port_3, 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(); DrvDoReset();
@ -497,26 +499,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -256,6 +256,7 @@ static INT32 DrvInit()
pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2; pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2;
AY8910Init(0, 1342329, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1342329, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH);
DrvDoReset(); DrvDoReset();
@ -267,32 +268,13 @@ static INT32 DrvFrame()
{ {
if (DrvReset) DrvDoReset(); if (DrvReset) DrvDoReset();
INT32 nSoundBufferPos = 0;
ZetOpen(0); ZetOpen(0);
ZetRun(4000000 / 60); ZetRun(4000000 / 60);
ZetRaiseIrq(1); ZetRaiseIrq(1);
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
}
} }
if (pBurnDraw) DrvDraw(); if (pBurnDraw) DrvDraw();

View File

@ -463,6 +463,7 @@ static INT32 DrvInit()
pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2; pAY8910Buffer[2] = pFMBuffer + nBurnSoundLen * 2;
AY8910Init(0, 1250000, nBurnSoundRate, NULL, NULL, &stratvox_sn76477_write, NULL); AY8910Init(0, 1250000, nBurnSoundRate, NULL, NULL, &stratvox_sn76477_write, NULL);
AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH);
DACInit(0, 0, 1, DrvSyncDAC); DACInit(0, 0, 1, DrvSyncDAC);
DACSetVolShift(0, 2); DACSetVolShift(0, 2);
@ -619,22 +620,9 @@ static INT32 DrvFrame()
// Render Sound Segment // Render Sound Segment
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
nSoundBufferPos += nSegmentLength; nSoundBufferPos += nSegmentLength;
} }
@ -642,23 +630,10 @@ static INT32 DrvFrame()
// Make sure the buffer is entirely filled. // Make sure the buffer is entirely filled.
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
DACUpdate(pBurnSoundOut, nBurnSoundLen); DACUpdate(pBurnSoundOut, nBurnSoundLen);

View File

@ -380,6 +380,8 @@ static INT32 DrvInit()
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(1, 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(); DrvDoReset();
@ -524,26 +526,7 @@ static INT32 DrvFrame()
M6502Close(); M6502Close();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -469,6 +469,9 @@ INT32 SolomonInit()
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(1, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(2, 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(); GenericTilesInit();
@ -709,57 +712,19 @@ INT32 SolomonFrame()
// Render Sound Segment // Render Sound Segment
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); nSoundBufferPos += 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;
} }
} }
// Make sure the buffer is entirely filled. // Make sure the buffer is entirely filled.
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
} }

View File

@ -425,6 +425,8 @@ static INT32 DrvInit()
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(1, 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(); DrvDoReset();
@ -593,52 +595,19 @@ static INT32 DrvFrame()
M6809Close(); M6809Close();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
nSoundBufferPos += nSegmentLength; nSoundBufferPos += nSegmentLength;
} }
} }
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); if (nSegmentLength) {
AY8910Update(1, &pAY8910Buffer[3], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
} }
nSoundBufferPos += nSegmentLength;
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -413,6 +413,8 @@ static INT32 DrvInit()
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(1, 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(); DrvDoReset();
@ -592,48 +594,18 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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; nSoundBufferPos += nSegmentLength;
} }
} }
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
} }

View File

@ -273,6 +273,7 @@ static INT32 DrvInit(INT32 incr)
ZetClose(); ZetClose();
AY8910Init(0, 1536000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 1536000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.30, BURN_SND_ROUTE_BOTH);
GenericTilesInit(); GenericTilesInit();
@ -341,20 +342,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -2919,6 +2919,8 @@ static INT32 BerlwallInit()
AY8910Init(0, 2000000, nBurnSoundRate, &Kaneko16Dip0Read, &Kaneko16Dip1Read, NULL, NULL); AY8910Init(0, 2000000, nBurnSoundRate, &Kaneko16Dip0Read, &Kaneko16Dip1Read, NULL, NULL);
AY8910Init(1, 2000000, nBurnSoundRate, NULL, NULL, 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 // Setup the OKIM6295 emulation
MSM6295Init(0, (12000000 / 6) / 132, 100.0, 1); MSM6295Init(0, (12000000 / 6) / 132, 100.0, 1);
@ -4624,24 +4626,9 @@ static INT32 ExplbrkrFrame()
// Render Sound Segment // Render Sound Segment
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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; nSoundBufferPos += nSegmentLength;
} }
@ -4649,25 +4636,10 @@ static INT32 ExplbrkrFrame()
// Make sure the buffer is entirely filled. // Make sure the buffer is entirely filled.
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
MSM6295Render(0, pBurnSoundOut, nBurnSoundLen); MSM6295Render(0, pBurnSoundOut, nBurnSoundLen);

View File

@ -1462,6 +1462,9 @@ static INT32 BestbestInit()
BurnYM3526SetRoute(BURN_SND_YM3526_ROUTE, 1.00, BURN_SND_ROUTE_BOTH); BurnYM3526SetRoute(BURN_SND_YM3526_ROUTE, 1.00, BURN_SND_ROUTE_BOTH);
AY8910Init(0, 1500000, nBurnSoundRate, NULL, NULL, bestbest_ay8910_write_a, NULL); 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(0, 0, 1, bestbestSyncDAC);
DACInit(1, 0, 1, bestbestSyncDAC); DACInit(1, 0, 1, bestbestSyncDAC);
@ -1938,21 +1941,8 @@ static INT32 BestbestFrame()
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pSoundBuffer + (nSoundBufferPos << 1); INT16* pSoundBuf = pSoundBuffer + (nSoundBufferPos << 1);
INT32 nSample;
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
nSoundBufferPos += nSegmentLength; nSoundBufferPos += nSegmentLength;
} }
@ -1962,22 +1952,9 @@ static INT32 BestbestFrame()
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pSoundBuffer + (nSoundBufferPos << 1); INT16* pSoundBuf = pSoundBuffer + (nSoundBufferPos << 1);
INT32 nSample;
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
} }

View File

@ -1103,6 +1103,8 @@ static INT32 DrvInit()
m67805_taito_init(DrvMcuROM, DrvMcuRAM, &arkanoid_m68705_interface); m67805_taito_init(DrvMcuROM, DrvMcuRAM, &arkanoid_m68705_interface);
AY8910Init(0, 1500000, nBurnSoundRate, &ay8910_read_port_5, &ay8910_read_port_4, NULL, NULL); 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(); GenericTilesInit();
@ -1239,20 +1241,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -521,6 +521,8 @@ static INT32 DrvInit()
AY8910Init(0, 1536000, nBurnSoundRate, &ay8910_0_read_port_A, &ay8910_0_read_port_B, NULL, NULL); AY8910Init(0, 1536000, nBurnSoundRate, &ay8910_0_read_port_A, &ay8910_0_read_port_B, NULL, NULL);
AY8910Init(1, 1536000, nBurnSoundRate, NULL, NULL, 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(); GenericTilesInit();
@ -681,29 +683,7 @@ static INT32 DrvFrame()
ZetClose(); ZetClose();
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample, xSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
} }
if (pBurnDraw) { if (pBurnDraw) {

View File

@ -876,6 +876,7 @@ static INT32 DrvInit()
m67805_taito_init(DrvMcuROM, DrvMcuRAM, &standard_m68705_interface); m67805_taito_init(DrvMcuROM, DrvMcuRAM, &standard_m68705_interface);
AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL); AY8910Init(0, 2000000, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.10, BURN_SND_ROUTE_BOTH);
DACInit(0, 0, 1, flstoryDACSync); DACInit(0, 0, 1, flstoryDACSync);
DACSetVolShift(0, 2); DACSetVolShift(0, 2);
@ -1179,21 +1180,7 @@ static INT32 DrvFrame()
ZetOpen(1); ZetOpen(1);
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample; AY8910Render(&pAY8910Buffer[0], pBurnSoundOut, nBurnSoundLen, 0);
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;
}
DACUpdate(pBurnSoundOut, nBurnSoundLen); DACUpdate(pBurnSoundOut, nBurnSoundLen);
} }
@ -1407,7 +1394,11 @@ static INT32 victnineInit()
{ {
select_game = 2; select_game = 2;
return DrvInit(); INT32 nRet = DrvInit();
AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH);
return nRet;
} }
struct BurnDriverD BurnDrvVictnine = { struct BurnDriverD BurnDrvVictnine = {

View File

@ -2115,6 +2115,8 @@ static INT32 tigerhInit()
AY8910Init(0, 1500000, nBurnSoundRate, &tigerhReadPort0, &tigerhReadPort1, NULL, NULL); AY8910Init(0, 1500000, nBurnSoundRate, &tigerhReadPort0, &tigerhReadPort1, NULL, NULL);
AY8910Init(1, 1500000, nBurnSoundRate, &tigerhReadPort2, &tigerhReadPort3, 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(); TigerHeliTextInit();
TigerHeliPaletteInit(); TigerHeliPaletteInit();
@ -2309,24 +2311,9 @@ static INT32 tigerhFrame()
{ {
// Render sound segment // Render sound segment
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen / nInterleave; INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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; nSoundBufferPos += nSegmentLength;
} }
} }
@ -2335,25 +2322,10 @@ static INT32 tigerhFrame()
{ {
// Make sure the buffer is entirely filled. // Make sure the buffer is entirely filled.
if (pBurnSoundOut) { if (pBurnSoundOut) {
INT32 nSample;
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
if (nSegmentLength) { if (nSegmentLength) {
AY8910Update(0, &pAY8910Buffer[0], nSegmentLength); AY8910Render(&pAY8910Buffer[0], pSoundBuf, nSegmentLength, 0);
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;
}
} }
} }
} }