电脑知识网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中间几乎忘了这件事,也没法确定游戏崩溃的确切时间。