hopefully reduce desync potential a little?

This commit is contained in:
Jaklyy 2024-12-14 10:45:08 -05:00
parent 610ac2491a
commit 5e945669f5
1 changed files with 9 additions and 5 deletions

View File

@ -1524,12 +1524,15 @@ u32 NDS::RunFrame()
ARM9Target = target << ARM9ClockShift; ARM9Target = target << ARM9ClockShift;
ARM7Target = target; ARM7Target = target;
CurCPU = 0;
while ((std::max(ARM9Timestamp, DMA9Timestamp) < ARM9Target) && (ARM7Timestamp < ARM7Target)) while ((std::max(ARM9Timestamp, DMA9Timestamp) < ARM9Target) && (ARM7Timestamp < ARM7Target))
{ {
CurCPU = 0;
while (std::max(ARM9Timestamp, DMA9Timestamp) < ARM9Target) while (std::max(ARM9Timestamp, DMA9Timestamp) < ARM9Target)
{ {
RunTimers(0);
GPU.GPU3D.Run();
if (ARM9.MRTrack.Type == MainRAMType::Null) if (ARM9.MRTrack.Type == MainRAMType::Null)
{ {
if (CPUStop & CPUStop_GXStall) if (CPUStop & CPUStop_GXStall)
@ -1563,7 +1566,6 @@ u32 NDS::RunFrame()
GPU.GPU3D.Run(); GPU.GPU3D.Run();
if (MainRAMHandle()) break; if (MainRAMHandle()) break;
} }
CurCPU = 1; CurCPU = 1;
@ -1572,6 +1574,8 @@ u32 NDS::RunFrame()
{ {
//printf("A7 LOOP: %lli %lli\n", ARM9Timestamp>>ARM9ClockShift, ARM7Timestamp); //printf("A7 LOOP: %lli %lli\n", ARM9Timestamp>>ARM9ClockShift, ARM7Timestamp);
RunTimers(1);
if (ARM7.MRTrack.Type == MainRAMType::Null) if (ARM7.MRTrack.Type == MainRAMType::Null)
{ {
if (CPUStop & CPUStop_DMA7) if (CPUStop & CPUStop_DMA7)
@ -1614,7 +1618,7 @@ u32 NDS::RunFrame()
#ifdef DEBUG_CHECK_DESYNC #ifdef DEBUG_CHECK_DESYNC
Log(LogLevel::Debug, "[%08X%08X] ARM9=%ld, ARM7=%ld, GPU=%ld\n", Log(LogLevel::Debug, "[%08X%08X] ARM9=%ld, ARM7=%ld, GPU=%ld\n",
(u32)(SysTimestamp>>32), (u32)SysTimestamp, (u32)(SysTimestamp>>32), (u32)SysTimestamp,
(std::max(ARM9Timestamp,DMA9Timestamp)>>ARM9ClockShift)-SysTimestamp, std::max(std::max(ARM9Timestamp,DMA9Timestamp)>>ARM9ClockShift, A9ContentionTS)-SysTimestamp,
ARM7Timestamp-SysTimestamp, ARM7Timestamp-SysTimestamp,
GPU.GPU3D.Timestamp-SysTimestamp); GPU.GPU3D.Timestamp-SysTimestamp);
#endif #endif