parent
0001707a42
commit
1fd6e2e085
Binary file not shown.
|
@ -28,7 +28,6 @@ cothread_t _driverCoroutine;
|
||||||
|
|
||||||
// Timing-related stuff
|
// Timing-related stuff
|
||||||
double ticksTarget;
|
double ticksTarget;
|
||||||
double ticksPerFrame;
|
|
||||||
uint32_t _ticksElapsed;
|
uint32_t _ticksElapsed;
|
||||||
uint32_t _GetTicks() { return _ticksElapsed; }
|
uint32_t _GetTicks() { return _ticksElapsed; }
|
||||||
void _Delay(uint32_t ticks) { _ticksElapsed += ticks; co_switch(_driverCoroutine); }
|
void _Delay(uint32_t ticks) { _ticksElapsed += ticks; co_switch(_driverCoroutine); }
|
||||||
|
@ -285,18 +284,19 @@ ECL_EXPORT void FrameAdvance(MyFrameInfo* f)
|
||||||
|
|
||||||
// Calculating fps
|
// Calculating fps
|
||||||
double fps = (double)f->framerateNumerator / (double)f->framerateDenominator;
|
double fps = (double)f->framerateNumerator / (double)f->framerateDenominator;
|
||||||
ticksPerFrame = 1000.0 / fps;
|
double ticksPerFrame = 1000.0 / fps;
|
||||||
//printf("Running Framerate: %d / %d = %f\n", f->framerateNumerator, f->framerateDenominator, fps);
|
//printf("Running Framerate: %d / %d = %f\n", f->framerateNumerator, f->framerateDenominator, fps);
|
||||||
|
|
||||||
// Increasing ticks target
|
// Increasing ticks target
|
||||||
ticksTarget += ticksPerFrame;
|
ticksTarget += ticksPerFrame;
|
||||||
|
uint32_t previousTicksElapsed = _ticksElapsed;
|
||||||
|
|
||||||
// Advancing until the required tick target is met
|
// Advancing until the required tick target is met
|
||||||
while (_ticksElapsed < (int)ticksTarget) co_switch(_emuCoroutine);
|
while (_ticksElapsed < (uint32_t)ticksTarget) co_switch(_emuCoroutine);
|
||||||
|
|
||||||
// Updating ticks elapsed
|
// Updating ticks elapsed
|
||||||
f->base.Cycles = _ticksElapsed;
|
f->base.Cycles = _ticksElapsed - previousTicksElapsed;
|
||||||
|
|
||||||
// Updating video output
|
// Updating video output
|
||||||
// printf("w: %u, h: %u, bytes: %p\n", sdl.surface->w, sdl.surface->h, sdl.surface->pixels);
|
// printf("w: %u, h: %u, bytes: %p\n", sdl.surface->w, sdl.surface->h, sdl.surface->pixels);
|
||||||
f->base.Width = sdl.surface->w;
|
f->base.Width = sdl.surface->w;
|
||||||
|
|
Loading…
Reference in New Issue