redesign main emu loop to use timestamps instead of being a trainwreck

* cleaner code
* faster in some cases
* more accurate (on-demand compensation for timers and GPU)
* less prone to desyncs
* overall betterer
This commit is contained in:
StapleButter
2019-01-05 05:28:58 +01:00
parent 90f2c0834e
commit 669247e8c8
14 changed files with 360 additions and 412 deletions

View File

@ -84,6 +84,8 @@ extern u32 RenderClearAttr1, RenderClearAttr2;
extern std::array<Polygon*,2048> RenderPolygonRAM;
extern u32 RenderNumPolygons;
extern u64 Timestamp;
bool Init();
void DeInit();
void Reset();
@ -95,7 +97,7 @@ void SetEnabled(bool geometry, bool rendering);
void ExecuteCommand();
s32 CyclesToRunFor();
void Run(s32 cycles);
void Run();
void CheckFIFOIRQ();
void CheckFIFODMA();