Another plasma demo I got to run:
I've also made a high-performance timer class to help with things like VCount and opcode cycle timing.
class HighTimer{private: LARGE_INTEGER OldTime,NewTime;public: unsigned long long PausedCycles,Cycles,Frequancy,Intervals,OldIntervals; HighTimer(){LARGE_INTEGER Freq;QueryPerformanceFrequency(&Freq);Frequancy=Freq.QuadPart;Cycles=0;Intervals=0;return;} void Reset(){Cycles=0;return;} bool Process(unsigned long long Freq,unsigned long long Max){ if(Cycles==0){QueryPerformanceCounter(&OldTime);} QueryPerformanceCounter(&NewTime); Cycles=NewTime.QuadPart-OldTime.QuadPart; OldIntervals=Intervals; Intervals=Cycles/Freq; if(Intervals>=Max){Intervals=Cycles=0;return 1;} return 0;}};
(I formatted it just for you, mattd)
It's pretty niffty. For example to get my emulator to run at 60FPS regardless of the monitors refresh rate:
HighTimer VBlank;
//blah blah balh
VBlank.Process(VBlank.Frequancy/60,60);
if(VBlank.Intervals!=VBlank.OldIntervals){
//render
}
Edit: looks like this one worked, damn broke-ass GDNet.
Edit 2: Appears to have just been an FF bug, of course [rolleyes]