Properly set the DMAState flag while ARAM DMA transfers are underway.

Fixes issue 6118.
This commit is contained in:
skidau 2013-03-19 23:03:38 +11:00
parent befe6e6962
commit a6249b5388
1 changed files with 2 additions and 8 deletions

View File

@ -693,14 +693,8 @@ void UpdateAudioDMA()
void Do_ARAM_DMA() void Do_ARAM_DMA()
{ {
// Emulating the DMA wait time fixes Knockout Kings 2003 in DSP HLE mode g_dspState.DSPControl.DMAState = 1;
if (!GetDSPEmulator()->IsLLE()) CoreTiming::ScheduleEvent_Threadsafe(0, et_GenerateDSPInterrupt, INT_ARAM | (1<<16));
g_dspState.DSPControl.DMAState = 1;
if (g_arDMA.Cnt.dir || g_arDMA.Cnt.count > 10240)
CoreTiming::ScheduleEvent_Threadsafe(0, et_GenerateDSPInterrupt, INT_ARAM | (1<<16));
else
GenerateDSPInterrupt(INT_ARAM);
// Real hardware DMAs in 32byte chunks, but we can get by with 8byte chunks // Real hardware DMAs in 32byte chunks, but we can get by with 8byte chunks
if (g_arDMA.Cnt.dir) if (g_arDMA.Cnt.dir)