* Use sleepthread in RPC loop
* Keep a pointer to current IOP thread
* Implement IOP thread scheduling based on priority
And implement DelayThread as an actual delay.
* Run IOP flat out
* Use information from scheduler in wait_run_iop
* Lock sif mutex in set_rpc_queue
* always use kernel dispatch with wait_run
* Loop in dispatch until no thread is ready
* Use timestamp for next wakeup
instead of duration
* Wrap IOP thread entrypoints for safety
Libco threads are not supposed to return from their entrypoint
* Use a queue for IOP thread wakeups from EE thread
* tfrag3 data for merc2
* dma hooks for merc2
* start designing merc2 opengl, seems like the simple approach will be the best here
* before bone packing experiment
* fix up bones.gc
* use uniform buffer
* speedup, fix faces and eyes
* final fixes
* first pass at loader updates, tie is still bad
* temp
* improved loader
* run iop less often
* temp
* temp
* wip
* more progress on the instance asm
* first half of tie extraction, up to dma lists
* more tie extraction
* first part figured out maybe
* bp1 loop seems to work, bp2 loop does not
* bp1 and bp2 appear working. sadly ip is needed
* ip1 outline, not working ip2
* just kidding, ip2 seems to work
* extraction seems to work
* basic rendering working
* tie fixes
* performance optimization of tie renderer
* hook up tie to engine
* fix more bugs
* cleanup and perf improvements
* fix tests
* ref tests
* mm256i for gcc
* CLANG
* windows
* more compile fixes
* fix fast time of day
* small fixes
* fix after merge
* clang