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:
skidau 2013-03-02 12:37:55 +11:00
parent 4c6bbec600
commit 3874b46a93
2 changed files with 5 additions and 2 deletions

View File

@ -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
{ {

View File

@ -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)