* scheduler revamp, simpler design

* fix dumb bug of the year: ARM LDR opcodes would accidentally read twice, which fucked with things like the IPC FIFO.
This commit is contained in:
StapleButter
2017-01-31 03:54:51 +01:00
parent 348bbd8cb8
commit 594286ee5d
10 changed files with 274 additions and 108 deletions

View File

@ -25,7 +25,7 @@
namespace GPU
{
#define LINE_CYCLES (355*6 * 2)
#define LINE_CYCLES (355*6)
#define FRAME_CYCLES (LINE_CYCLES * 263)
u16 VCount;
@ -740,7 +740,8 @@ void StartScanline(u32 line)
GPU2D_A->DrawScanline(line);
GPU2D_B->DrawScanline(line);
NDS::ScheduleEvent(LINE_CYCLES, StartScanline, line+1);
//NDS::ScheduleEvent(LINE_CYCLES, StartScanline, line+1);
NDS::ScheduleEvent(NDS::Event_ScanlineStart, true, LINE_CYCLES, StartScanline, line+1);
}
else if (line == 262)
{
@ -761,7 +762,8 @@ void StartScanline(u32 line)
if (DispStat[1] & (1<<3)) NDS::TriggerIRQ(1, NDS::IRQ_VBlank);
}
NDS::ScheduleEvent(LINE_CYCLES, StartScanline, line+1);
//NDS::ScheduleEvent(LINE_CYCLES, StartScanline, line+1);
NDS::ScheduleEvent(NDS::Event_ScanlineStart, true, LINE_CYCLES, StartScanline, line+1);
}
}