Used an immediate GenerateDSPInterrupt when transferring data from ARAM to MRAM and a scheduled DSP interrupt when transferring data from MRAM to ARAM.
Changed the maximum timeslice back to 20000 as it was causing slowdown.
This commit is contained in:
parent
4c6bbec600
commit
3874b46a93
|
@ -24,7 +24,7 @@
|
||||||
#include "StringUtil.h"
|
#include "StringUtil.h"
|
||||||
#include "VideoBackendBase.h"
|
#include "VideoBackendBase.h"
|
||||||
|
|
||||||
#define MAX_SLICE_LENGTH 1000
|
#define MAX_SLICE_LENGTH 20000
|
||||||
|
|
||||||
namespace CoreTiming
|
namespace CoreTiming
|
||||||
{
|
{
|
||||||
|
|
|
@ -698,7 +698,10 @@ void Do_ARAM_DMA()
|
||||||
if (!GetDSPEmulator()->IsLLE())
|
if (!GetDSPEmulator()->IsLLE())
|
||||||
g_dspState.DSPControl.DMAState = 1;
|
g_dspState.DSPControl.DMAState = 1;
|
||||||
|
|
||||||
|
if (g_arDMA.Cnt.dir)
|
||||||
CoreTiming::ScheduleEvent_Threadsafe(0, et_GenerateDSPInterrupt, INT_ARAM | (1<<16));
|
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)
|
||||||
|
|
Loading…
Reference in New Issue