mirror of https://github.com/PCSX2/pcsx2.git
SPU2-X:
Moved the async mixing toggle into the ini. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2836 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
ab2897a417
commit
a45c013ff3
|
@ -68,6 +68,7 @@ extern bool EffectsDisabled;
|
||||||
extern u32 OutputModule;
|
extern u32 OutputModule;
|
||||||
extern int SndOutLatencyMS;
|
extern int SndOutLatencyMS;
|
||||||
extern bool timeStretchDisabled;
|
extern bool timeStretchDisabled;
|
||||||
|
extern bool asyncMixingEnabled;
|
||||||
|
|
||||||
#ifndef __LINUX__
|
#ifndef __LINUX__
|
||||||
extern wchar_t dspPlugin[];
|
extern wchar_t dspPlugin[];
|
||||||
|
|
|
@ -48,6 +48,7 @@ int ReverbBoost = 0;
|
||||||
u32 OutputModule = FindOutputModuleById( PortaudioOut->GetIdent() );
|
u32 OutputModule = FindOutputModuleById( PortaudioOut->GetIdent() );
|
||||||
int SndOutLatencyMS = 160;
|
int SndOutLatencyMS = 160;
|
||||||
bool timeStretchDisabled = false;
|
bool timeStretchDisabled = false;
|
||||||
|
bool asyncMixingEnabled = false;
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
@ -63,6 +64,7 @@ void ReadSettings()
|
||||||
|
|
||||||
SndOutLatencyMS = CfgReadInt(L"OUTPUT",L"Latency", 150);
|
SndOutLatencyMS = CfgReadInt(L"OUTPUT",L"Latency", 150);
|
||||||
timeStretchDisabled = CfgReadBool( L"OUTPUT", L"Disable_Timestretch", false );
|
timeStretchDisabled = CfgReadBool( L"OUTPUT", L"Disable_Timestretch", false );
|
||||||
|
asyncMixingEnabled = CfgReadBool( L"OUTPUT", L"Enable_AsyncMixing", false );
|
||||||
|
|
||||||
PortaudioOut->ReadSettings();
|
PortaudioOut->ReadSettings();
|
||||||
SoundtouchCfg::ReadSettings();
|
SoundtouchCfg::ReadSettings();
|
||||||
|
@ -87,6 +89,7 @@ void WriteSettings()
|
||||||
CfgWriteStr(L"OUTPUT",L"Output_Module", mods[OutputModule]->GetIdent() );
|
CfgWriteStr(L"OUTPUT",L"Output_Module", mods[OutputModule]->GetIdent() );
|
||||||
CfgWriteInt(L"OUTPUT",L"Latency", SndOutLatencyMS);
|
CfgWriteInt(L"OUTPUT",L"Latency", SndOutLatencyMS);
|
||||||
CfgWriteBool(L"OUTPUT",L"Disable_Timestretch", timeStretchDisabled);
|
CfgWriteBool(L"OUTPUT",L"Disable_Timestretch", timeStretchDisabled);
|
||||||
|
CfgWriteBool(L"OUTPUT",L"Enable_AsyncMixing", asyncMixingEnabled);
|
||||||
|
|
||||||
PortaudioOut->WriteSettings();
|
PortaudioOut->WriteSettings();
|
||||||
SoundtouchCfg::WriteSettings();
|
SoundtouchCfg::WriteSettings();
|
||||||
|
|
|
@ -79,6 +79,7 @@ extern int dspPluginModule;
|
||||||
|
|
||||||
extern bool dspPluginEnabled;
|
extern bool dspPluginEnabled;
|
||||||
extern bool timeStretchDisabled;
|
extern bool timeStretchDisabled;
|
||||||
|
extern bool asyncMixingEnabled;
|
||||||
extern bool StereoExpansionEnabled;
|
extern bool StereoExpansionEnabled;
|
||||||
|
|
||||||
namespace SoundtouchCfg
|
namespace SoundtouchCfg
|
||||||
|
|
|
@ -41,6 +41,7 @@ bool EffectsDisabled = false;
|
||||||
// OUTPUT
|
// OUTPUT
|
||||||
int SndOutLatencyMS = 150;
|
int SndOutLatencyMS = 150;
|
||||||
bool timeStretchDisabled = false;
|
bool timeStretchDisabled = false;
|
||||||
|
bool asyncMixingEnabled = false;
|
||||||
|
|
||||||
u32 OutputModule = 0;
|
u32 OutputModule = 0;
|
||||||
|
|
||||||
|
@ -62,6 +63,7 @@ void ReadSettings()
|
||||||
ReverbBoost = CfgReadInt( L"MIXING",L"Reverb_Boost", 0 );
|
ReverbBoost = CfgReadInt( L"MIXING",L"Reverb_Boost", 0 );
|
||||||
|
|
||||||
timeStretchDisabled = CfgReadBool( L"OUTPUT", L"Disable_Timestretch", false );
|
timeStretchDisabled = CfgReadBool( L"OUTPUT", L"Disable_Timestretch", false );
|
||||||
|
asyncMixingEnabled = CfgReadBool( L"OUTPUT", L"Enable_AsyncMixing", false );
|
||||||
EffectsDisabled = CfgReadBool( L"MIXING", L"Disable_Effects", false );
|
EffectsDisabled = CfgReadBool( L"MIXING", L"Disable_Effects", false );
|
||||||
|
|
||||||
StereoExpansionEnabled = CfgReadBool( L"OUTPUT", L"Enable_StereoExpansion", false );
|
StereoExpansionEnabled = CfgReadBool( L"OUTPUT", L"Enable_StereoExpansion", false );
|
||||||
|
@ -112,6 +114,7 @@ void WriteSettings()
|
||||||
CfgWriteStr(L"OUTPUT",L"Output_Module", mods[OutputModule]->GetIdent() );
|
CfgWriteStr(L"OUTPUT",L"Output_Module", mods[OutputModule]->GetIdent() );
|
||||||
CfgWriteInt(L"OUTPUT",L"Latency", SndOutLatencyMS);
|
CfgWriteInt(L"OUTPUT",L"Latency", SndOutLatencyMS);
|
||||||
CfgWriteBool(L"OUTPUT",L"Disable_Timestretch", timeStretchDisabled);
|
CfgWriteBool(L"OUTPUT",L"Disable_Timestretch", timeStretchDisabled);
|
||||||
|
CfgWriteBool(L"OUTPUT",L"Enable_AsyncMixing", asyncMixingEnabled);
|
||||||
CfgWriteBool(L"OUTPUT",L"Enable_StereoExpansion", StereoExpansionEnabled);
|
CfgWriteBool(L"OUTPUT",L"Enable_StereoExpansion", StereoExpansionEnabled);
|
||||||
|
|
||||||
if( Config_WaveOut.Device.empty() ) Config_WaveOut.Device = L"default";
|
if( Config_WaveOut.Device.empty() ) Config_WaveOut.Device = L"default";
|
||||||
|
|
|
@ -296,9 +296,9 @@ __forceinline void TimeUpdate(u32 cClocks)
|
||||||
}
|
}
|
||||||
|
|
||||||
//UpdateDebugDialog();
|
//UpdateDebugDialog();
|
||||||
#ifdef USE_ASYNC_MIXING
|
if(asyncMixingEnabled)
|
||||||
SndBuffer::UpdateTempoChangeAsyncMixing();
|
SndBuffer::UpdateTempoChangeAsyncMixing();
|
||||||
#endif
|
|
||||||
//Update Mixing Progress
|
//Update Mixing Progress
|
||||||
while(dClocks>=TickInterval)
|
while(dClocks>=TickInterval)
|
||||||
{
|
{
|
||||||
|
@ -855,8 +855,10 @@ static void __fastcall RegWrite_Core( u16 value )
|
||||||
// When we have exact cycle update info from the Pcsx2 IOP unit, then use
|
// When we have exact cycle update info from the Pcsx2 IOP unit, then use
|
||||||
// the more accurate delayed initialization system.
|
// the more accurate delayed initialization system.
|
||||||
ConLog( " * SPU2: Runtime core%d reset\n", core );
|
ConLog( " * SPU2: Runtime core%d reset\n", core );
|
||||||
#ifndef USE_ASYNC_MIXING
|
|
||||||
if(cyclePtr != NULL)
|
// Async mixing can cause a scheduled reset to happen untimely, ff12 hates it and dies.
|
||||||
|
// So do the next best thing and reset the core directly.
|
||||||
|
if(cyclePtr != NULL && !asyncMixingEnabled)
|
||||||
{
|
{
|
||||||
thiscore.InitDelay = 1;
|
thiscore.InitDelay = 1;
|
||||||
thiscore.Regs.STATX = 0;
|
thiscore.Regs.STATX = 0;
|
||||||
|
@ -866,10 +868,6 @@ static void __fastcall RegWrite_Core( u16 value )
|
||||||
thiscore.Reset(thiscore.Index);
|
thiscore.Reset(thiscore.Index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
thiscore.Reset(thiscore.Index);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
thiscore.AttrBit0 =(value>> 0) & 0x01; //1 bit
|
thiscore.AttrBit0 =(value>> 0) & 0x01; //1 bit
|
||||||
thiscore.DMABits =(value>> 1) & 0x07; //3 bits
|
thiscore.DMABits =(value>> 1) & 0x07; //3 bits
|
||||||
|
|
Loading…
Reference in New Issue