diff --git a/src/burn/snd/burn_ym2151.cpp b/src/burn/snd/burn_ym2151.cpp index b0eb29b15..70a3a07db 100644 --- a/src/burn/snd/burn_ym2151.cpp +++ b/src/burn/snd/burn_ym2151.cpp @@ -147,6 +147,7 @@ void BurnYM2151Reset() if (!DebugSnd_YM2151Initted) bprintf(PRINT_ERROR, _T("BurnYM2151Reset called without init\n")); #endif + memset(&BurnYM2151Registers, 0, sizeof(BurnYM2151Registers)); YM2151ResetChip(0); } @@ -201,6 +202,7 @@ INT32 BurnYM2151Init(INT32 nClockFrequency) nFractionalPosition = 4 << 16; nSamplesRendered = 0; nBurnPosition = 0; + memset(&BurnYM2151Registers, 0, sizeof(BurnYM2151Registers)); // default routes YM2151Volumes[BURN_SND_YM2151_YM2151_ROUTE_1] = 1.00; diff --git a/src/burn/snd/burn_ym2203.cpp b/src/burn/snd/burn_ym2203.cpp index 4f1216613..8e5fec551 100644 --- a/src/burn/snd/burn_ym2203.cpp +++ b/src/burn/snd/burn_ym2203.cpp @@ -384,8 +384,10 @@ static void YM2203UpdateNormal(INT16* pSoundBuf, INT32 nSegmentEnd) nRightSample = BURN_SND_CLIP(nRightSample); if (bYM2203AddSignal) { - pSoundBuf[(n << 1) + 0] += nLeftSample; - pSoundBuf[(n << 1) + 1] += nRightSample; + //pSoundBuf[(n << 1) + 0] += nLeftSample; + //pSoundBuf[(n << 1) + 1] += nRightSample; + pSoundBuf[(n << 1) + 0] = BURN_SND_CLIP(pSoundBuf[(n << 1) + 0] + nLeftSample); + pSoundBuf[(n << 1) + 1] = BURN_SND_CLIP(pSoundBuf[(n << 1) + 1] + nRightSample); } else { pSoundBuf[(n << 1) + 0] = nLeftSample; pSoundBuf[(n << 1) + 1] = nRightSample; diff --git a/src/burn/snd/burn_ym2610.cpp b/src/burn/snd/burn_ym2610.cpp index d1ffdfec5..f9a40ddcc 100644 --- a/src/burn/snd/burn_ym2610.cpp +++ b/src/burn/snd/burn_ym2610.cpp @@ -307,8 +307,10 @@ static void YM2610UpdateNormal(INT16* pSoundBuf, INT32 nSegmentEnd) nRightSample = BURN_SND_CLIP(nRightSample); if (bYM2610AddSignal) { - pSoundBuf[(n << 1) + 0] += nLeftSample; - pSoundBuf[(n << 1) + 1] += nRightSample; + //pSoundBuf[(n << 1) + 0] += nLeftSample; + //pSoundBuf[(n << 1) + 1] += nRightSample; + pSoundBuf[(n << 1) + 0] = BURN_SND_CLIP(pSoundBuf[(n << 1) + 0] + nLeftSample); + pSoundBuf[(n << 1) + 1] = BURN_SND_CLIP(pSoundBuf[(n << 1) + 1] + nRightSample); } else { pSoundBuf[(n << 1) + 0] = nLeftSample; pSoundBuf[(n << 1) + 1] = nRightSample; diff --git a/src/burn/snd/burn_ym3812.cpp b/src/burn/snd/burn_ym3812.cpp index 7ba7def9d..fba08ce67 100644 --- a/src/burn/snd/burn_ym3812.cpp +++ b/src/burn/snd/burn_ym3812.cpp @@ -452,8 +452,10 @@ static void YM3812UpdateNormal(INT16* pSoundBuf, INT32 nSegmentEnd) nRightSample = BURN_SND_CLIP(nRightSample); if (bYM3812AddSignal) { - pSoundBuf[(n << 1) + 0] += nLeftSample; - pSoundBuf[(n << 1) + 1] += nRightSample; + //pSoundBuf[(n << 1) + 0] += nLeftSample; + //pSoundBuf[(n << 1) + 1] += nRightSample; + pSoundBuf[(n << 1) + 0] = BURN_SND_CLIP(pSoundBuf[(n << 1) + 0] + nLeftSample); + pSoundBuf[(n << 1) + 1] = BURN_SND_CLIP(pSoundBuf[(n << 1) + 1] + nRightSample); } else { pSoundBuf[(n << 1) + 0] = nLeftSample; pSoundBuf[(n << 1) + 1] = nRightSample;