如何让我的游戏在 DOSbox 上也快 运行?

How to make my game to run fast on DOSbox, too?

我一直在 Linux 中使用 C++ 开发一个简单的 RTS 游戏。通过DJGPP,我还可以交叉编译游戏到DOS build。 在 Linux 中,一旦游戏开始,它只使用大约 25MB 的 RAM,尽管创建了许多游戏对象,例如游戏单元。 但是在DOSbox下运行s的时候,开始的时候很慢,随着创建的游戏单位的数量的增加越来越慢。 当然,DOS 是旧的,但我认为 25 MB 足以运行那里的游戏。

你能告诉我我有什么问题吗?

所以我的问题如下;

  1. 该游戏在 Linux 中使用了大约 25MB 的 RAM,所以它在 DOS 中也必须使用这样的内存量吗?
  2. 在DOS下是否有限制RAM使用的边界值?
  1. The game uses about 25MB of RAM in Linux, so does it have to use such an amount in DOS, too?

Linux 可执行文件是 32 位或 64 位的,而 DOS 是 16 位的 OS 因此许多对象在 DOS 中会更小。然而,由于显而易见的原因,DOS 中的许多 32/64 位操作在 DOS 中会更长,这意味着它们将需要更大的代码 space 来容纳。根据代码,DOS 中的内存使用量可能更小或更大

  1. Is there a boundary value that limits the usage of RAM in DOS?

DOS(因此还有 FreeDOS)不会那样管理内存。一次只有一个进程(不包括 TSR)运行,因此它们拥有整个内存 space 并自行管理。不需要进程保护,一个进程什么都可以访问

此外DOS不能支持超过1MB RAM的内存。您只有 640KB 的用户space RAM,这是您获得的限制

您可以使用 EMS、XMS 访问更多内存,但它们不属于 DOS,您必须显式加载这些库并调用适当的 API

有关详细信息,请阅读 DOS memory management

感谢您的回答,我真的希望这款游戏也能成为旧 OS 中的 运行。 最近发现在DOSBox里玩游戏这么慢是因为我用的游戏引擎。它是在开源的基础上自行开发的,但在性能有效性方面存在很多问题。

所以我优化了主游戏循环和游戏对象管理模块到现在,它运行比以前快多了。好像快了10多倍!

但是还是很慢。目前,它在 Windows 98 中速度 运行 秒,但在 Dosbox 和 FreeDos 中则不然。

加载游戏场景需要几秒钟,但在 Dosbox 和 freedos 中游戏 fps 仍然很低。

谁能教我如何优化游戏? 当然,我正在这样做,但希望听到您的意见。 :)