more FDS audio clean up

This commit is contained in:
alyosha-tas 2016-09-10 17:07:54 -04:00 committed by GitHub
parent 26e300f8da
commit 2c431e75b2
1 changed files with 18 additions and 34 deletions

View File

@ -146,8 +146,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
int latchedoutput;
int temp_convert;//for conversion to one's complement only
Action<int> SendDiff;
public FDSAudio(Action<int> SendDiff)
@ -245,27 +243,15 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
case 1: sweepbias += 1; break;
case 2: sweepbias += 2; break;
case 3: sweepbias += 4; break;
case 4: sweepbias = 0; break;
case 4: sweepbias += 0; break;
case 5: sweepbias -= 4; break;
case 6: sweepbias -= 2; break;
case 7: sweepbias -= 1; break;
}
// we need to make this a signed integer in ONES' COMPLEMENT format
// C# is 2's complement, so let's do it manually
if (sweepbias>63)
{
temp_convert = sweepbias - 63;
sweepbias = (-63) + temp_convert - 1;
} else if (sweepbias<-63)
{
temp_convert = (-sweepbias) - 63;
sweepbias = 63 - temp_convert + 1;
}
//sweepbias &= 0x7f;
// sign extend
//sweepbias <<= 25;
//sweepbias >>= 25;
sweepbias <<= 25;
sweepbias >>= 25;
modtablepos &= 63;
CalcMod();
}
@ -289,7 +275,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
if (addr < 0x4080)
{
if (waveram_writeenable)
// can waverampos ever be reset?
waveram[addr - 0x4040] = (byte)(value & 63);
return;
}
@ -330,16 +315,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
break;
case 0x4085:
sweepbias = value & 0x7f;
// we need to make this a signed integer in ONES' COMPLEMENT format
// C# is 2's complement, so let's do it manually
if ((value&0x40)==0x40)
{
sweepbias = sweepbias & 0x3f;
sweepbias = (-1) * (63 - sweepbias);
}
Console.WriteLine(value & 0x7F);
Console.WriteLine(sweepbias);
// sign extend
sweepbias <<= 25;
sweepbias >>= 25;
break;
case 0x4086:
modfreq &= 0xf00;
@ -353,15 +332,20 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
r4087_7 = (value & 0x80) != 0;
if (r4087_7 || modfreq == 0) // when mod unit is disabled, mod output is fixed to 0, not hanging
modoutput = 0;
if (r4087_7)
modclock = 0;
break;
case 0x4088:
// write twice into virtual 64 unit buffer
modtable[modtablepos] = (byte)(value & 7);
modtablepos++;
modtablepos &= 63;
modtable[modtablepos] = (byte)(value & 7);
modtablepos++;
modtablepos &= 63;
if (r4087_7)
{
modtable[modtablepos] = (byte)(value & 7);
modtablepos++;
modtablepos &= 63;
modtable[modtablepos] = (byte)(value & 7);
modtablepos++;
modtablepos &= 63;
}
break;
case 0x4089:
switch (value & 3)