《不明飞行物》中大量统计资料的奥秘:《未知的敌人》(1994年)

XCOM统计


我们大多数人早已扮演过出色的UFO:Enemy Unknown,遇到过(或至少知道)士兵的统计数据飞过160并冲向溢出255的值变为零的情况。

我想弄清情况,发生的原因以及发生的确切位置。为了结束这个故事。

在研究过程中,检查了DOS版本1.0、1.2、1.4,俄语(翻译)和黄金版。也就是说,实际上所有可用。在1.0版中

才观察到此故障。但是,值得注意的是,俄罗斯化版本完全基于1.0版,因此事实证明,与世界其他地区相比,我们许多同胞面临这种情况的频率更高。它只是短暂地滑落了(补丁1.2很快就发布了,仅一个月后),并且没有人对新版本进行过俄罗斯化。 反汇编代码geoscape.exe的一个片段,负责根据任务的结果(时间单位的增加)增加统计偏移量2Ah和35h分别与基础TU和TU改进有关。



版本1.0



在1.2版中,代码看起来已经略有不同:

版本1.2

请注意,这里的键是JZ / JLE。
JZ-如果结果为零(等效),则过渡。
JLE-如果结果小于或等于则跳转。

事实证明,最初,开发人员犯了一个初学者的错误:尽管价值可以跳跃超过1,但他们却无限制地检查了极限。

也就是说,在“ TU”的情况下,只有在绝对达到80的情况下,增长才受到限制。

每个使用更新版本或未使用Russified版本的人都没有遇到此故障。

PS:在深入研究之后,发现Russified版本是混合版本,其中GEOSCAPE.EXE是从1.0版本中获取的,而BATTLESCAPE.EXE是从1.2版本中获取的。只是Crissalids出现时1.0的弹头崩溃了,而使用此版本,该游戏将不可行。Gollops故意将游戏分成两个不同的EXE(两种不同的游戏模式),通过文件进行交互,以使游戏适合640 KB的常规内存,这是出于历史原因:最初被认为是一种简单的基于回合的战术,即Laser Squad 2。因此,这样的混合动力是可能的。

Source: https://habr.com/ru/post/zh-CN381703/


All Articles