为什么旧游戏在现代计算机上运行得太快?

如果你曾经尝试过在现代系统上运行一个老式的电脑游戏,你可能会对游戏的运行速度感到震惊。 为什么旧游戏在现代硬件上失控?

今天早些时候,我们向您展示了如何在现代计算机上运行旧软件 ; 今天的问答环节是一个很好的赞美,深入了解为什么一些旧的软件(特别是游戏)似乎没有工作正确,当你试图在现代硬件上运行它们。

今天的问答环节由我们感谢SuperUser - Stack Exchange的一个分支,这是一个社区驱动的Q&A网站分组。

问题

超级读者TreyK想知道为什么旧电脑游戏运行疯狂快速在新硬件:

我有几个旧程序,我摘下一个早期的90年代Windows计算机,并试图在一个相对现代的计算机上运行它们。 有趣的是,他们跑得很快的速度 - 不,不是每秒60帧的速度,而是哦,我的神的字符是在步行的速度的声音类型快速。 我会按一个箭头键,字符的精灵会拉过屏幕比正常快得多。 时间进程在游戏中发生得比它应该快得多。 甚至有程序减慢你的CPU ,以便这些游戏实际上是可玩的。

我听说这是与游戏有关的,这取决于CPU周期,或类似的东西。 我的问题是:

  • 为什么老年游戏会做到这一点,他们是如何摆脱它?
  • 如何更新的游戏这样做,独立于CPU频率运行?

那么这个故事是什么? 为什么在老游戏中的精灵在屏幕上闪烁着这么快的游戏变得不可玩?

答案

超级用户贡献者JourneymanGeek排除:

我相信他们假设系统时钟将以特定速率运行,并将其内部定时器绑定到该时钟速率。 大多数这些游戏可能在DOS上运行,并且是真实模式 (具有完全,直接的硬件访问),并且假设您正在为PC运行iirc 4.77 MHz系统,以及为其他系统(如Amiga)运行的任何标准处理器。

他们还根据这些假设采取了聪明的快捷方式,包括通过不在程序内部写入内部时序循环来节省一小部分资源。 他们还占用了尽可能多的处理器能力 - 这是一个体面的想法,在慢的,经常被动冷却的芯片的日子!

最初,一种解决不同处理器速度的方法是良好的旧Turbo按钮 (这会减慢您的系统速度)。 现代应用程序处于保护模式,操作系统倾向于管理资源 - 它们不允许 DOS应用程序(在32位系统上运行在NTVDM中)在许多情况下使用所有的处理器。 简而言之,操作系统已经变得更聪明,有API。

大量基于Oldskool PC上的指南,其中逻辑和内存失败了我 - 这是一个伟大的阅读,可能更深入到“为什么”。

CPUkiller的东西尽可能多的资源,以“减慢”你的系统,这是低效的。 你最好使用DOSBox来管理你的应用程序看到的时钟速度。

如果你想知道实际的代码在早期的电脑游戏中是如何实现的(以及为什么他们如此糟糕地适应现代系统而没有在某种仿真程序中被沙盒化),我们还建议检查这个冗长但有趣的故障进程在另一个超级用户的答案。


有什么东西添加到解释? 声音在评论中。 想要阅读更多的技术精明的Stack Exchange用户的答案? 查看完整的讨论话题在这里

赞 (0)
分享到:更多 ()