
与电脑游戏不同,电脑游戏会随着硬件的不断发展而平稳发展,而主机游戏直到最近才受到代际开发模式的制约。当然,也有一些游戏出现在多个平台上,而新主机最终也会具备向下兼容功能,允许玩家运行前几代硬件上的部分游戏。但很多情况下,一些史上最优秀的游戏最终只能在它们最初设计的游戏机上运行。
现在,对于那些关注此事的人来说,这没什么大不了的。对于游戏玩家来说,他们最喜欢的超级任天堂娱乐系统 (SNES) 游戏无法在任天堂 64 上运行,就像他们的 Genesis 游戏无法在索尼 PlayStation 上运行一样,这都是理所当然的。因此,在家庭电视机下摆放几台游戏机的情况并不罕见。如果你想回到过去玩那些老游戏,只需切换视频输入即可。
但游戏,乃至整个娱乐界,在过去的几十年里发生了翻天覆地的变化。如今,告诉别人体验《塞尔达传说:众神的三角力量》的唯一方式是从阁楼里拖出一台泛黄的三十多年前的游戏机,就好比告诉他们看电影的唯一方式就是去电影院一样。
如今,人们的期望是娱乐来到你身边,而不是你来找娱乐——而且这种假设不太可能随着科技的进步而改变。就像我们的电视节目和电影现在可以在任何我们方便使用的设备上播放一样,现代游戏玩家不想局限于他们的游戏主机,他们也希望在手机和VR头显上玩游戏。
但这给我们带来了一些问题。有些游戏无论从技术角度还是文化角度来看都意义非凡,不能就这样被遗忘在数字尘埃中。就像任何其他形式的艺术一样,有些作品值得被保存下来,供子孙后代欣赏和体验。
对于少数值得一试的游戏来说,反编译有望带来某种数字永生。正如最近几个项目所表明的那样,将游戏分解成原始源代码,可以使其适应新的系统和技术,只要社区希望保持更新。
适用于大多数,但不是全部
在讨论反编译主题之前,我们必须首先讨论许多读者可能已经熟悉的一个概念:模拟。
使用主机模拟器玩老游戏与通过虚拟机运行操作系统并无二致,只不过主机模拟器需要复制游戏原本设计的独特硬件环境,这会增加一些复杂性。对于现代电脑来说,这在早期主机上通常不成问题。但随着主机世代的更迭,模拟其独特硬件架构所需的计算能力会迅速提升。
有些游戏会为了各自的主机平台而精心优化,利用硬件鲜为人知的怪癖,这让情况变得更加复杂。模拟器通常会使用特定游戏的例程来尝试让这些游戏可玩,但并非总是 100% 成功。即使是那些并不特别费力的游戏,模拟器的一般规则也是将性能置于准确性之上。
这正是模拟器在保留游戏作为一种艺术媒介方面面临的关键问题。虽然对更强大硬件的需求令人担忧,但摩尔定律将在很大程度上抑制这一需求。更大的问题是准确性。简单地运行游戏是一回事,但要完全按照开发者发布时的预期运行游戏则完全是另一回事。
游戏在模拟环境下的画面、音效甚至游戏体验与在真实硬件上运行时略有不同,这很常见。很多情况下,这些问题对于普通玩家来说几乎难以察觉。偶尔出现的音效不同步或色调略有偏差,并不足以破坏游戏体验。其他问题,例如缺少纹理或游戏逻辑故障,则可能严重到导致游戏无法完成。甚至有些游戏,尽管数量可能很少,在模拟环境下根本无法运行。
毫无疑问,对于大多数游戏来说,模拟通常已经足够好了。事实上,任天堂和索尼都以各种方式利用了模拟技术,以帮助将其丰富的游戏库带入新一代。但事实是,有些游戏值得,有时甚至需要更细致的处理方式。
追求完美
相比之下,如果游戏反编译到社区拥有其构建的原始 C 代码,就可以避免许多模拟游戏带来的问题。游戏可以编译为现代平台的原生可执行文件,并充分利用随之而来的所有硬件和软件改进。甚至可以修复长期存在的 bug,并以最佳状态呈现游戏。
对于那些涉足逆向工程的人来说,你一定知道将程序反编译回可用的 C 代码并非易事。虽然有一些自动化工具可以帮助完成很多工作,但仍然需要大量的人工干预。即便如此,游戏的原始代码也是为了利用原始主机的独特硬件而编写的,因此你要么需要自行修改代码,要么开发某种兼容层,将各种调用映射到更现代、与平台无关的平台上。这个过程很容易需要数年才能完成。
正因如此,反编译工作往往仅限于最受好评的游戏。例如,2021年,我们见证了首次尝试完全逆转《塞尔达传说:时之笛》 。这款游戏于1998年在N64平台上发布,经常被誉为有史以来最伟大的电子游戏之一。尽管这项工作始于《时之笛》 ,但到2024年,该项目中汲取的经验教训促成了工具的开发,这些工具可以帮助反编译和重建其他N64游戏。
游戏作为活文档
在大多数情况下,模拟游戏的运行方式与首次发布时相同。当然,模拟器可以完全控制游戏运行的虚拟环境,因此可以使用一些技巧。因此,大多数模拟器都提供诸如作弊和保存状态之类的附加功能。甚至可以将原始图形资源替换为更高分辨率的版本,这可以极大地改善一些早期 3D 游戏的画面。
但是如果你想更进一步呢?这时,拥有源代码就显得至关重要了。一旦游戏完美运行,你就可以创建一个分支,开始添加新功能和游戏体验改进。例如,在 GameCube 上对《动物森友会》进行反编译,可以让开发者将游戏内的日历扩展到 2030 年以后——但这项更改将在代码的“豪华”分支中实现,以保留原版游戏的运作方式。
此时,你已经超越了保存的范围,你已经将游戏变成了一种不仅可以继续存在,而且可以随着新一代玩家而成长的游戏。
原文: https://hackaday.com/2025/06/23/video-game-preservation-through-decompilation/