本文作者:访客

华硕MyPal运行DOOM两年半崩溃,疑达32位整数极限揭秘

访客 2025-09-18 16:18:14 37811
华硕MyPal上的《DOOM》游戏运行两年半后崩溃,疑似达到32位整数运算的极限,华硕MyPal平台上的经典游戏《DOOM》在长时间运行后出现问题,最终崩溃,据分析,可能是由于游戏可能已经达到了32位整数运算的极限,这一事件提醒开发者在设计和开发过程中考虑到系统的运算能力限制,以确保软件的稳定运行。

9月18日消息,1993年12月发布的《DOOM》是第一人称射击游戏的开山之作,其源代码于1997年公开。

Minki在LenOwO上发帖称,他将WinDOOM安装在一台2003年的华硕MyPal A620 PDA上,这台设备搭载了当时新兴的Windows Mobile系统和英特尔XScale ARMv5芯片。

为了保证设备长时间运行,Minki对其进行了改装,使用了一个基于“DIY 18650锂电池” 的不间断电源系统,并将其连接到路由器的USB接口,以提供稳定的5V电源。

随后,他启动了游戏,便将其搁置一旁,直到最近才发现设备上弹出了一个应用崩溃的提示。

《DOOM》存在一个有趣的漏洞:在回放游戏内部的“demo”文件时,“gametic”值在开始新的演示回放时不会重置,这个值用于跟踪游戏时间,每秒增加35次。

“gametic”值不重置最终会导致数值巨大最终溢出,但该值使用的是32位整数,最大值为2147483647,不出所料,游戏在Windows Mobile 2003系统上无法处理这种情况,也就是说它会崩溃。

每秒35次的增加速度,大约需要1.95年才能使“gametic”值溢出。有可能Minki使用的 Doom4CE版本,将游戏频率降低到30Hz,以获得更好的帧率和降低硬件需求。

在《DOOM》的主机版本中这种做法很常见,如果是这样,那么“gametic”值溢出大约需要2.26年,这更接近Minki所说的2.5年。

当然除此之外,还有很多其他原因会导致《DOOM》崩溃,而且由于Minki中间几乎忘了这件事,也没法确定游戏崩溃的确切时间。

阅读
分享