Make ARAM DMAs take time. Allows WWE Day of Reckoning 1 & 2 to go ingame...then they crash. Not entirely sure if the crash is related.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6670 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Shawn Hoffman 2010-12-27 22:14:33 +00:00
parent a271bb8182
commit b21c361a1a
2 changed files with 7 additions and 2 deletions

View File

@ -81,6 +81,8 @@ bool CBoot::EmulatedBS2_GC()
Memory::Write_U32(0x4c000064, 0x80000C00); // write default Syscall Handler: rfi
Memory::Write_U64((u64)CEXIIPL::GetGCTime() * (u64)40500000, 0x800030D8); // preset time base ticks
// HIO checks this
//Memory::Write_U16(0x8200, 0x000030e6); // Console type
Memory::Write_U32(((1 & 0x3f) << 26) | 1, 0x81300000); // HLE OSReport for Apploader

View File

@ -644,6 +644,11 @@ void UpdateAudioDMA()
void Do_ARAM_DMA()
{
// Fake the DMA taking time to complete. The delay is not accurate, but
// seems like a good estimate
CoreTiming::ScheduleEvent_Threadsafe(
g_arDMA.Cnt.count, et_GenerateDSPInterrupt, INT_ARAM | (1<<16));
// Real hardware DMAs in 32byte chunks, but we can get by with 8byte chunks
if (g_arDMA.Cnt.dir)
{
@ -679,8 +684,6 @@ void Do_ARAM_DMA()
g_arDMA.Cnt.count -= 8;
}
}
GenerateDSPInterrupt(INT_ARAM);
}