Gameboy模拟器的播放速度比预期的要快

时间:2015-07-18 19:44:05

标签: c++ windows timing emulation

我正在尝试制作一个游戏模拟器,但它的播放速度应该超出预期。

这是我在主循环中使用的时序码。

CLOCKSPEED
  • cpu.T是gameboy cpu(4194304)每秒的周期数。
  • PerfCountFrequency是迄今为止的周期。
  • {{1}}是我在进入循环之前调用的QueryPerformanceFrequency的结果。

当我将它与另一个以正确速度播放的模拟器(VBA)进行比较时,我的模拟器变得更快。这有什么问题?

1 个答案:

答案 0 :(得分:1)

睡眠是错误的功能。从https://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx开始,它提到了#34;如果dwMilliseconds小于系统时钟的分辨率,则线程可能会睡眠时间少于指定的时间长度"

DirectX可能有一个方法(VBLANK ??),但你可以通过计算下一个帧时间应该是什么来解决小问题,如果睡眠太小,可以节省睡眠时间,直到它超过定时器分辨率