Change Sega System 16A to use new DAC

This commit is contained in:
Barry Harris 2012-03-15 12:19:22 +00:00
parent cc74658951
commit cb73845b2d
1 changed files with 11 additions and 5 deletions

View File

@ -1441,6 +1441,11 @@ static void System16UPD7759DrqCallback(INT32 state)
if (state) ZetNmi(); if (state) ZetNmi();
} }
static INT32 System16ASyncDAC()
{
return (INT32)(float)(nBurnSoundLen * (I8039TotalCycles() / ((6000000.0000 / 15) / (nBurnFPS / 100.0000))));
}
/*==================================================== /*====================================================
Multiply Protection Chip Emulation Multiply Protection Chip Emulation
====================================================*/ ====================================================*/
@ -1846,7 +1851,7 @@ INT32 System16Init()
N7751SetCPUOpReadArgHandler(N7751Read); N7751SetCPUOpReadArgHandler(N7751Read);
YM2151SetPortWriteHandler(0, &System16N7751ControlWrite); YM2151SetPortWriteHandler(0, &System16N7751ControlWrite);
DACInit(0, 0, 1); DACInit(0, 0, 1, System16ASyncDAC);
} }
System16TileBankSize = 0x1000; System16TileBankSize = 0x1000;
@ -2519,7 +2524,7 @@ Frame Functions
INT32 System16AFrame() INT32 System16AFrame()
{ {
INT32 nInterleave = nBurnSoundLen; // for the DAC INT32 nInterleave = 100; // alien syndrome needs high interleave for the DAC sounds to be processed
if (System16Reset) System16DoReset(); if (System16Reset) System16DoReset();
@ -2534,6 +2539,7 @@ INT32 System16AFrame()
SekNewFrame(); SekNewFrame();
ZetNewFrame(); ZetNewFrame();
I8039NewFrame();
SekOpen(0); SekOpen(0);
for (INT32 i = 0; i < nInterleave; i++) { for (INT32 i = 0; i < nInterleave; i++) {
@ -2568,9 +2574,8 @@ INT32 System16AFrame()
ZetOpen(0); ZetOpen(0);
BurnYM2151Render(pSoundBuf, nSegmentLength); BurnYM2151Render(pSoundBuf, nSegmentLength);
ZetClose();
if (System167751ProgSize) DACUpdate(pSoundBuf, nSegmentLength);
nSoundBufferPos += nSegmentLength; nSoundBufferPos += nSegmentLength;
ZetClose();
} }
} }
@ -2588,8 +2593,9 @@ INT32 System16AFrame()
ZetOpen(0); ZetOpen(0);
BurnYM2151Render(pSoundBuf, nSegmentLength); BurnYM2151Render(pSoundBuf, nSegmentLength);
ZetClose(); ZetClose();
if (System167751ProgSize) DACUpdate(pSoundBuf, nSegmentLength);
} }
if (System167751ProgSize) DACUpdate(pBurnSoundOut, nBurnSoundLen);
} }
if (pBurnDraw) System16ARender(); if (pBurnDraw) System16ARender();