DMA timing renovation (#1207)

* make timers usable for measurement shito without being assfuckingly unreliable

* bürp

* Arisotura can you ever clean up your goddamn code

also regroup the timer code instead of having it split weirdly

* make the set-timing functions a tad less hacky

* congrats Arisotura you made an ass-enum

* add timing region tables, and separate timings for ARM9 DMA (exempt of 3c penalty)

* temp work on DMA timings, not finished

also, did you know? 'increment/reload' is also a thing for the source address

* begin work

* add some of the GBA slot/wifi timings

* complete it, I guess

* make some progress

* getting somewhere

* sdsdfs

* see, Arisotura, was it that hard? blarg.
This commit is contained in:
Arisotura
2021-08-31 02:28:34 +02:00
committed by GitHub
parent e1f3fc75ea
commit d20543c119
8 changed files with 786 additions and 217 deletions

View File

@ -34,6 +34,11 @@ public:
void WriteCnt(u32 val);
void Start();
u32 UnitTimings9_16(bool burststart);
u32 UnitTimings9_32(bool burststart);
u32 UnitTimings7_16(bool burststart);
u32 UnitTimings7_32(bool burststart);
template <int ConsoleType>
void Run();
@ -78,8 +83,8 @@ private:
u32 CurDstAddr;
u32 RemCount;
u32 IterCount;
u32 SrcAddrInc;
u32 DstAddrInc;
s32 SrcAddrInc;
s32 DstAddrInc;
u32 CountMask;
u32 Running;
@ -89,6 +94,9 @@ private:
bool Stall;
bool IsGXFIFODMA;
u32 MRAMBurstCount;
u8* MRAMBurstTable;
};
#endif